//+------------------------------------------------------------------+ //| luktom visual order editor.mq4 | //| luktom :: Łukasz Tomaszkiewicz | //| http://luktom.biz/ | //+------------------------------------------------------------------+ //| | //| Kod rozpowszechniany na licencji Creative Commons BY-SA | //| Szczegóły: http://luktom.biz/blog/u/licencja-cc-by-sa | //| | //| This code is published under Creative Commons BY-SA license | //| | //+------------------------------------------------------------------+ #property copyright "luktom :: Łukasz Tomaszkiewicz" #property link "http://luktom.biz/" #include #include extern bool use_timer=false; extern int default_sl_level=180; extern int default_tp_level=150; extern color sl_color=Orange; extern int sl_style=STYLE_DASH; extern color tp_color=Lime; extern int tp_style=STYLE_DASH; extern color be_color=Brown; extern int be_style=STYLE_DASH; extern color cl_color=Purple; extern int cl_style=STYLE_DASH; extern bool use_cp=true; extern color cp_color=Aqua; extern int cp_style=STYLE_DASH; extern int cp_level=90; extern int cp_closedlevel=200; extern double cp_lots=0; extern color ol_sell_color=Red; extern int ol_sell_style=STYLE_DASH; extern color ol_buy_color=Blue; extern int ol_buy_style=STYLE_DASH; extern bool use_be=true; extern int default_be_level=150; extern int be_offset=50; extern bool use_cl=false; extern int default_cl_level=200; extern bool delete_on_deinit=true; extern int default_trailing_stop=100; void init() { if(use_timer) { timer(); } } void timer() { while(true) { Sleep(1000); if(IsStopped()) { return; } start(); } } void deinit() { if(delete_on_deinit) { for(int x=0;x<10;x++) for(int i=0;i0 || default_sl_level>0) { if(ObjectFind("lvoe_sl_" + OrderTicket())==-1) { if(OrderStopLoss()==0) { ObjectCreate("lvoe_sl_" + OrderTicket(),OBJ_HLINE,0,Time[0],OrderOpenPrice()-orderDir(OrderType())*default_sl_level*Point); } else { ObjectCreate("lvoe_sl_" + OrderTicket(),OBJ_HLINE,0,Time[0],OrderStopLoss()); } ObjectSet("lvoe_sl_" + OrderTicket(),OBJPROP_COLOR,sl_color); ObjectSet("lvoe_sl_" + OrderTicket(),OBJPROP_STYLE,sl_style); if(default_trailing_stop>0) { ObjectSetText("lvoe_sl_" + OrderTicket(),"#"+OrderTicket()+" stop loss, ts="+default_trailing_stop,11); } else { ObjectSetText("lvoe_sl_" + OrderTicket(),"#"+OrderTicket()+" stop loss",11); } } else { int tspos=StringFind(ObjectDescription("lvoe_sl_"+OrderTicket()),"ts="); if(tspos!=-1) { int ts=StrToInteger(StringSubstr(ObjectDescription("lvoe_sl_"+OrderTicket()),tspos+3)); if(OrderType()==OP_BUY) { if(Bid-OrderStopLoss()>ts*Point) { ObjectSet("lvoe_sl_"+OrderTicket(),OBJPROP_PRICE1,Bid-ts*Point); } } if(OrderType()==OP_SELL) { if(OrderStopLoss()-Ask>ts*Point) { ObjectSet("lvoe_sl_"+OrderTicket(),OBJPROP_PRICE1,Ask+ts*Point); } } } align("lvoe_sl_" + OrderTicket()); if(NormalizeDouble(OrderStopLoss(),dgts)!=NormalizeDouble(ObjectGet("lvoe_sl_" + OrderTicket(),OBJPROP_PRICE1),dgts)) { if(!OrderModify(OrderTicket(),OrderOpenPrice(),ObjectGet("lvoe_sl_" + OrderTicket(),OBJPROP_PRICE1),OrderTakeProfit(),OrderExpiration(),CLR_NONE)) { //Alert(ErrorDescription(GetLastError())); } continue; } } } else { if(ObjectFind("lvoe_sl_" + OrderTicket())!=-1) { ObjectDelete("lvoe_sl_" + OrderTicket()); } } if(OrderTakeProfit()>0 || default_tp_level) { if(ObjectFind("lvoe_tp_" + OrderTicket())==-1) { if(OrderTakeProfit()==0) { ObjectCreate("lvoe_tp_" + OrderTicket(),OBJ_HLINE,0,Time[0],OrderOpenPrice()+orderDir(OrderType())*default_tp_level*Point); } else { ObjectCreate("lvoe_tp_" + OrderTicket(),OBJ_HLINE,0,Time[0],OrderTakeProfit()); } ObjectSet("lvoe_tp_" + OrderTicket(),OBJPROP_COLOR,tp_color); ObjectSet("lvoe_tp_" + OrderTicket(),OBJPROP_STYLE,tp_style); } else { align("lvoe_tp_" + OrderTicket()); if(NormalizeDouble(OrderTakeProfit(),4)!=NormalizeDouble(ObjectGet("lvoe_tp_" + OrderTicket(),OBJPROP_PRICE1),4)) { if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ObjectGet("lvoe_tp_" + OrderTicket(),OBJPROP_PRICE1),OrderExpiration(),CLR_NONE)) { //Alert(ErrorDescription(GetLastError())); } continue; } } } else { if(ObjectFind("lvoe_tp_" + OrderTicket())!=-1) { ObjectDelete("lvoe_tp_" + OrderTicket()); } } if(use_cp && cp_level>0) { if(ObjectFind("lvoe_cp_" + OrderTicket())==-1) { if(OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP) { if(OrderStopLoss()OrderOpenPrice()) { if(OrderType()==OP_SELL) { ObjectCreate("lvoe_cp_" + OrderTicket(),OBJ_HLINE,0,Time[0],Ask-cp_closedlevel*MarketInfo(OrderSymbol(),MODE_POINT)); } else { ObjectCreate("lvoe_cp_" + OrderTicket(),OBJ_HLINE,0,Time[0],OrderOpenPrice()-cp_level*MarketInfo(OrderSymbol(),MODE_POINT)); } ObjectSet("lvoe_cp_" + OrderTicket(),OBJPROP_COLOR,cp_color); ObjectSet("lvoe_cp_" + OrderTicket(),OBJPROP_STYLE,cp_style); } } } else { if(OrderType()==OP_BUY) { if(MarketInfo(OrderSymbol(),MODE_BID)>ObjectGet("lvoe_cp_" + OrderTicket(),OBJPROP_PRICE1)) { if(OrderClose(OrderTicket(),cp_lots,MarketInfo(OrderSymbol(),MODE_BID),0)) { ObjectDelete("lvoe_cp_"+OrderTicket()); //ObjectSet("lvoe_cp_" + OrderTicket(),OBJPROP_PRICE1,MarketInfo(OrderSymbol(),MODE_BID)+cp_closedlevel*MarketInfo(OrderSymbol(),MODE_POINT)); } continue; } } if(OrderType()==OP_SELL) { if(MarketInfo(OrderSymbol(),MODE_ASK)OrderOpenPrice()) { ObjectCreate("lvoe_be_" + OrderTicket(),OBJ_HLINE,0,Time[0],OrderOpenPrice()-default_be_level*MarketInfo(OrderSymbol(),MODE_POINT)); ObjectSet("lvoe_be_" + OrderTicket(),OBJPROP_COLOR,be_color); ObjectSet("lvoe_be_" + OrderTicket(),OBJPROP_STYLE,be_style); } } } else { if(OrderType()==OP_BUY) { if(MarketInfo(OrderSymbol(),MODE_BID)>ObjectGet("lvoe_be_" + OrderTicket(),OBJPROP_PRICE1)) { ObjectSet("lvoe_sl_" + OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice()+be_offset*MarketInfo(OrderSymbol(),MODE_POINT)); /* if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),OrderExpiration(),CLR_NONE)) { //Alert(ErrorDescription(GetLastError())); } */ ObjectDelete("lvoe_be_" + OrderTicket()); continue; } } if(OrderType()==OP_SELL) { if(MarketInfo(OrderSymbol(),MODE_ASK)ObjectGet("lvoe_cl_" + OrderTicket(),OBJPROP_PRICE1)) { OrderDelete(OrderTicket()); } } if(OrderType()==OP_BUY || OrderType()==OP_SELL) { ObjectDelete("lvoe_cl_" + OrderTicket()); } } } } } } for(i=0;i