// Trade_Plotter.mq4 // // by arts #property indicator_chart_window bool _OrderSelect; int OT=-1; int OT2 =-1; //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ int deinit() { int OBTotal=ObjectsTotal(); for (int i=OBTotal; i>=0; i--) { if(StringSubstr(ObjectName(i),0, 2)=="# ")ObjectDelete(ObjectName(i)); } return(0); } //+------------------------------------------------------------------+ int start() { //Trade Analysis int cnt, total, total2; total=OrdersTotal(); total2=OrdersHistoryTotal(); color col, ccol, linecol; string PL=""; if(OT==total && OT2==total2)return(0);//no change in orders to plot //Plot Orders History for(cnt=0;cnt<=total2;cnt++) { _OrderSelect=OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); if(OrderSymbol()==Symbol() ) // check for symbol { if(OrderType()==OP_BUY) { col=Green; ccol=PaleGreen; linecol=White; PL=DoubleToStr((OrderClosePrice()-OrderOpenPrice())/Point/10,1)+" pips";} if(OrderType()==OP_SELL) { col=Red; ccol=Violet; linecol=White; PL=DoubleToStr((OrderOpenPrice()-OrderClosePrice())/Point/10,1)+" pips";} if(OrderType()==OP_BUY || OrderType()==OP_SELL) { ObjectCreate("# "+OrderTicket()+" : Open at "+TimeToStr(OrderOpenTime(),TIME_MINUTES),OBJ_ARROW,0,OrderOpenTime(),OrderOpenPrice()); ObjectSet("# "+OrderTicket()+" : Open at "+TimeToStr(OrderOpenTime(),TIME_MINUTES),6, col); ObjectSet("# "+OrderTicket()+" : Open at "+TimeToStr(OrderOpenTime(),TIME_MINUTES),14,1); ObjectCreate("# "+OrderTicket()+" : Close at "+TimeToStr(OrderCloseTime(),TIME_MINUTES),OBJ_ARROW,0,OrderCloseTime(),OrderClosePrice()); ObjectSet("# "+OrderTicket()+" : Close at "+TimeToStr(OrderCloseTime(),TIME_MINUTES),6, ccol); ObjectSet("# "+OrderTicket()+" : Close at "+TimeToStr(OrderCloseTime(),TIME_MINUTES),14,3); ObjectCreate("# "+OrderTicket()+" : "+PL, OBJ_TREND, 0, OrderOpenTime(),OrderOpenPrice(),OrderCloseTime(),OrderClosePrice()); ObjectSet("# "+OrderTicket()+" : "+PL,6,linecol); ObjectSet("# "+OrderTicket()+" : "+PL,7,2); ObjectSet("# "+OrderTicket()+" : "+PL,10,false); } } } //Plot current orders for(cnt=0;cnt<=total;cnt++) { _OrderSelect=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() ) // check for symbol { if(OrderType()==OP_BUY) col=Green; if(OrderType()==OP_SELL) col=Red; if(OrderType()==OP_BUY ||OrderType()==OP_SELL) { ObjectCreate("# "+OrderTicket()+" : Open at "+TimeToStr(OrderOpenTime(),TIME_MINUTES),OBJ_ARROW,0,OrderOpenTime(),OrderOpenPrice()); ObjectSet("# "+OrderTicket()+" : Open at "+TimeToStr(OrderOpenTime(),TIME_MINUTES),6, col); ObjectSet("# "+OrderTicket()+" : Open at "+TimeToStr(OrderOpenTime(),TIME_MINUTES),14,1); } } } OT=total; OT2=total2; return(0); }