//+------------------------------------------------------------------+ //| HistoryInfo | //| Copyright © 2010, Vladimir Hlystov | //| http://cmillion.narod.ru | //+------------------------------------------------------------------+ #property copyright "Хлыстов Владимир" #property link "cmillion@narod.ru" #property indicator_separate_window extern int MagikInfo = 0; //если 0 то все магики extern int Shift = 80; //ширина между столбцами extern string SybmolInfo = ""; //если "" то все инструменты extern datetime DateInfoStart = D'01.01.2010'; //начинать с даты extern datetime DateInfoEnd = D'01.01.2012'; //заканчивая датой extern color WhiteColor = DarkGray;//цвет вывода информации extern bool SendMailInfo = true; //отправка информации на почту //-------------------------------------------------------------------- string Symbl[100]; double HistoryOrders[5][10000],Orders[5][10000],SymbolProfit[100],SymbolHistoryProfit[100],MagikProfit[100],HistoryLot[2][100],TekLot[2][100]; int HistoryType[2][100],TekType[2][100]; int Nsymb,Nmag,Win,Ords=0,hn,Magik[100]; //-------------------------------------------------------------------- int deinit() { ObjectsDeleteAll(Win); } //-------------------------------------------------------------------- int init() { return; } //-------------------------------------------------------------------- int start() { string txtInfo; if (Win==0) { Win = WindowFind("HistoryInfo_v5"); Text("DateInfo",StringConcatenate("Сканирование счета с ",TimeToStr(DateInfoStart,TIME_DATE)," по ",TimeToStr(DateInfoEnd,TIME_DATE)),500,2,WhiteColor,8);//шапка string txt; if (MagikInfo==0) txt = "Magik номера - ВСЕ"; else txt = StringConcatenate("Magik номер - ",MagikInfo); Text("Magik",txt,850,2,WhiteColor,8);//шапка ObjectCreate("c", OBJ_LABEL, Win, 0, 0); ObjectSet("c", OBJPROP_CORNER, 2); ObjectSet("c", OBJPROP_YDISTANCE, 5); ObjectSet("c", OBJPROP_XDISTANCE, 5); ObjectSetText("c", "Copyright © 2010 cmillion@narod.ru", 8, "Tahoma", WhiteColor); Text("0","Информация по счету "+AccountNumber()+" / "+AccountCompany()+" / 1:"+AccountLeverage(),100,2,WhiteColor,8);//шапка Text("1"," ",5,20,WhiteColor,8);//шапка Text("2"," ",5,30,WhiteColor,8);//шапка Text("3"," ",5,40,WhiteColor,8);//шапка Text("4"," ",5,50,WhiteColor,8);//шапка Text("History","История",100,20,SteelBlue,10);//шапка Text("Текушие","Текушие",100,93,SteelBlue,10);//шапка Text("MagikP","Магик",100,165,SteelBlue,10);//шапка } //--- int StartShift=180; if (OrdersTotal()10000) {Alert("Переполнение буфера",OrdersHistoryTotal());return;} ArrayInitialize(HistoryType,0); ArrayInitialize(HistoryLot,0); for (int i=0; i<=Nsymb; i++) { SymbolHistoryProfit[i]=0; for (int j=0; j10000) {Alert("Переполнение буфера",OrdersTotal());return;} ArrayInitialize(TekType,0); ArrayInitialize(TekLot,0); for (i=0; iOrdersTotal()) { SendMail(StringConcatenate("HistoryInfo ",AccountCompany()," ",AccountNumber()), StringConcatenate(txtInfo,"\nOrders ",OrdersTotal(), "\nEquity ",DoubleToStr(AccountEquity(),2), "\nFreeMargin ",DoubleToStr(AccountFreeMargin(),2), "\nBalance ",DoubleToStr(AccountBalance(),2))); } /* if (txtInfo!="") { Comment(txtInfo,"\nOrders ",OrdersTotal(), "\nEquity ",DoubleToStr(AccountEquity(),2), "\nFreeMargin ",DoubleToStr(AccountFreeMargin(),2), "\nBalance ",DoubleToStr(AccountBalance(),2)); }*/ Ords=OrdersTotal(); } //-------------------------------------------------------------------- int SymbolNum(string Symb) { for (int i=0; i<100; i++) { if (Symb==Symbl[i]) return(i); if (StringLen(Symbl[i])<2) break; } Symbl[i]=Symb; Nsymb=i; return(i); } //-------------------------------------------------------------------- int MagikNum(int Magic) { for (int i=0; i<100; i++) { if (Magic==Magik[i]) return(i); if (Magik[i]==0) break; } Magik[i]=Magic; Nmag=i; return(i); } //-------------------------------------------------------------------- int HistoryOrders() { int n,OMN; string Symb; datetime OOT,StartInfo=Time[0],EndInfo=0; ArrayInitialize(HistoryOrders,0); for (int i=OrdersHistoryTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { Symb = OrderSymbol(); if (OrderSymbol()!=SybmolInfo && SybmolInfo!="") continue; OMN = OrderMagicNumber(); if (MagikInfo!=OrderMagicNumber() && MagikInfo!=0) continue; OOT = OrderOpenTime(); if (DateInfoStart>=OOT || DateInfoEndOOT) StartInfo=OOT; if (EndInfoOOT) StartInfo=OOT; if (EndInfo10000) {Comment("Переполнение буфера",OrdersHistoryTotal());return(n);} } //--- string TimeSkan; double TS = MathCeil((EndInfo-StartInfo)/86400); //время сканирования в часах if (TS>=0) { if (TS>0) TimeSkan = StringConcatenate(TS," дн."); if (TS==0) TimeSkan = "1 день"; } if (EndInfo!=0) ObjectSetText("DateInfo", StringConcatenate("Сканирование счета с ",TimeToStr(StartInfo,TIME_DATE)," по ",TimeToStr(EndInfo,TIME_DATE)," всего ",TimeSkan), 8, "Tahoma", WhiteColor); else ObjectSetText("DateInfo",StringConcatenate("За данный период с ",TimeToStr(DateInfoStart,TIME_DATE)," по ",TimeToStr(DateInfoEnd,TIME_DATE)," не было сделок"), 8, "Tahoma", Red); return(n); } //-------------------------------------------------------------------- int TekOrders() { int n,OMN; string Symb; datetime OOT; ArrayInitialize(Orders,0); for (int i=OrdersHistoryTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { Symb = OrderSymbol(); if (OrderSymbol()!=SybmolInfo && SybmolInfo!="") continue; OMN = OrderMagicNumber(); if (MagikInfo!=OMN && MagikInfo!=0) continue; OOT = OrderOpenTime(); if (DateInfoStart>=OOT || DateInfoEnd10000) {Comment("Переполнение буфера",OrdersHistoryTotal());return(n);} } return(n); } //-------------------------------------------------------------------- color Color(double x) { if (x<0) return(Red); else return(Green); } //-------------------------------------------------------------------- color Text(string name, string txt, int x, int y,color C, int w) { ObjectCreate(name, OBJ_LABEL, Win, 0, 0); ObjectSet(name, OBJPROP_CORNER, 0); ObjectSet(name, OBJPROP_YDISTANCE, y); ObjectSet(name, OBJPROP_XDISTANCE, x); ObjectSetText(name,txt,w,"Tahoma", C); } //--------------------------------------------------------------------