//+------------------------------------------------------------------+ //| OrderScreenShot_v1.mq4 | //| * | //| * | //+------------------------------------------------------------------+ #import "user32.dll" int GetAncestor(int hWnd, int gaFlags); int GetDlgItem(int hDlg, int nIDDlgItem); int SendMessageA(int hWnd, int Msg, int wParam, int lParam); int GetWindowTextA(int hWnd, string lpString, int nMaxCount); int GetWindowTextLengthA(int hWnd); int GetWindowRect(int hWnd,int & lpRect[]); #import #property copyright "*" #property link "*" #property indicator_chart_window //---- input parameters string Path="OrderScreenShot"; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start(){ if(!IsDllsAllowed()){ Alert("Ðàçðåøèòå DLL â íàñòðîéêàõ òåðìèíàëà"); } static bool ft=false; static int LastTickets[]; int NowTickets[]; int Size=0; ArrayResize(NowTickets,OrdersTotal()); for(int i=0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderMagicNumber()==0){ if(OrderSymbol()==Symbol()){ if(OrderType()==OP_BUY || OrderType()==OP_SELL){ NowTickets[Size]=OrderTicket(); Size++; } } } } } ArrayResize(NowTickets,Size); //=================================================================== if(ft){ for(i=0;i<Size;i++){ bool exist=false; for(int j=0;j<ArraySize(LastTickets);j++){ if(NowTickets[i]==LastTickets[j]){ exist=true; } } if(!exist){ if(OrderSelect(NowTickets[i],SELECT_BY_TICKET)){ if(Symbol()+","+fTimeFrameName(Period())==GetNameActiveChart()){ int Rect[4]; GetWindowRect(WindowHandle(Symbol(),Period()),Rect); Comment(OrderTicket()+" "+fNameOrderType(OrderType())+" "+Symbol()+" "+DS2(OrderLots())+", price: "+DS(OrderOpenPrice())); int h=FileOpen(Path+"\\1.txt",FILE_CSV|FILE_WRITE); FileClose(h); FileDelete(Path+"\\1.txt"); string Path2=Path+"\\"; Path2=Path2+FM2(TimeDay(OrderOpenTime()))+"."+FM2(TimeMonth(OrderOpenTime()))+"."+TimeYear(OrderOpenTime())+"\\"; Path2=Path2+FM2(TimeHour(OrderOpenTime()))+"h"+FM2(TimeMinute(OrderOpenTime()))+"m"+FM2(TimeSeconds(OrderOpenTime()))+"s "+OrderTicket()+".gif"; WindowScreenShot(Path2,Rect[2]-Rect[0],Rect[3]-Rect[1]); Comment(""); } } else{ return; } } } } //=================================================================== ArrayResize(LastTickets,Size); if(Size>0){ ArrayCopy(LastTickets,NowTickets); } ft=true; return(0); } //+------------------------------------------------------------------+ string FM2(int aArg){ if(aArg<10){ return("0"+aArg); } return(aArg); } string DS2(double v){return(DoubleToStr(v,2));} string DS(double v){return(DoubleToStr(v, Digits));} string fNameOrderType(int aOrderType){ switch (aOrderType){ case OP_BUY: return("BUY"); case OP_SELL: return("SELL"); case OP_BUYLIMIT: return("BUYLIMIT"); case OP_SELLLIMIT: return("SELLLIMIT"); case OP_BUYSTOP: return("BUYSTOP"); case OP_SELLSTOP: return("SELLSTOP"); default: return("?"); } } string GetNameActiveChart(){ int ThWnd,hMDICWnd,hMDIAWnd,nMxCnt; string sActiveChartName=" "; ThWnd=GetAncestor(WindowHandle(Symbol(),Period()),2); hMDICWnd=GetDlgItem(ThWnd,0xE900); hMDIAWnd=SendMessageA(hMDICWnd,0x0229,0,0); nMxCnt=GetWindowTextLengthA(hMDIAWnd); GetWindowTextA(hMDIAWnd,sActiveChartName,nMxCnt+1); return(sActiveChartName); } string fTimeFrameName(int arg){ // fTimeFrameName(); int v; if(arg==0){ v=Period(); } else{ v=arg; } switch(v){ case 0: return("0"); case 1: return("M1"); case 5: return("M5"); case 15: return("M15"); case 30: return("M30"); case 60: return("H1"); case 240: return("H4"); case 1440: return("D1"); case 10080: return("W1"); case 43200: return("MN1"); default: return("M"+arg); } }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
user32
Order Management characteristics:
Checks for the total of open orders
Other Features:
It issuies visual alerts to the screen
Uses files from the file system