欢迎访问

当价格越过该线时设置止损单-源码

author emer | 148 人阅读 | 0 人评论 |

当价格越过该线时设置止损单-源码 EA 在启动时会在图表上建立两条线:绿线(开始)和红线(停止)。 您可以使用鼠标将线移动到任意位置。同时,如果绿线位于红线上方,则我们计划在未来下达买入止损订单,如果绿线位于红线下方,则相应地下达卖出止损订单。 cpp //+------------------------------------------------------------------+ //| 交易面板系统.mq4 | //| 版权 © 2023-2025, AI编程zblog | //| http://www.eawalk.com | //+------------------------------------------------------------------+ #property copyright"Copyright © 2024, AI编程zblog" #property link "http://www.eawalk.com" #property version "1.00" #property strict #property description "专家顾问启动时会在图表上绘制两条线:绿色(起始线)和红色(止损线)。" #property description "这些线可以用鼠标任意拖动。如果绿色线高于红色线,后续将计划设置买入止损单;如果绿色线低于红色线,则计划设置卖出止损单。" //+------------------------------------------------------------------+ extern double 订单手数 = 0.01; // 订单手数 extern int 起始距离 = 25; // 起始线到挂单的距离(单位:点) extern int 止损距离 = 25; // 止损线到止损的距离(单位:点) extern int 魔法数字 = 123321; // 魔法数字 //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,"cm"); } //+------------------------------------------------------------------+ void OnTick() { if(ObjectFind("cm start")==-1) { drawline("cm start",clrGreen,iHigh(NULL,PERIOD_D1,0)); drawtext("cm start ","起始线",iHigh(NULL,PERIOD_D1,0)); } if(ObjectFind("cm stop")==-1) { drawline("cm stop",clrRed,iLow(NULL,PERIOD_D1,0)); drawtext("cm stop ","止损线",iLow(NULL,PERIOD_D1,0)); } doublePriceStart = ObjectGet("cm start",OBJPROP_PRICE1); ObjectSetDouble(0,"cm start ",OBJPROP_PRICE,PriceStart); doublePriceStop = ObjectGet("cm stop",OBJPROP_PRICE1); ObjectSetDouble(0,"cm stop ",OBJPROP_PRICE,PriceStop); //--- int tip,Ticket=0; for (int i=0;i1) break; Print("-----> 开仓成功并结束运行"); SendNotification(WindowExpertName()+" 开仓成功并结束运行"); ExpertRemove(); break; } } } if(PriceStart>PriceStop) { if(Ticket==0) { if (Bid>=PriceStart) if (OrderSend(Symbol(),OP_BUYSTOP,订单手数,NormalizeDouble(PriceStart+起始距离*Point,Digits),0,NormalizeDouble(PriceStop-止损距离*Point,Digits),0,NULL,魔法数字,0,CLR_NONE)==-1) Print("错误",GetLastError()); } else { if (Bid<=PriceStop) { if (OrderDelete(Ticket)) { Print("-----> 删除挂单并结束运行"); SendNotification(WindowExpertName()+" 删除挂单并结束运行"); ExpertRemove(); } } } } else { if(Ticket==0) { if (Bid<=PriceStart) if (OrderSend(Symbol(),OP_SELLSTOP,订单手数,NormalizeDouble(PriceStart-起始距离*Point,Digits),0,NormalizeDouble(PriceStop+止损距离*Point,Digits),0,NULL,魔法数字,0,CLR_NONE)==-1) Print("错误",GetLastError()); } else { if (Bid>=PriceStop) { if (OrderDelete(Ticket)) { Print("-----> 删除挂单并结束运行"); SendNotification(WindowExpertName()+" 删除挂单并结束运行"); ExpertRemove(); } } } } } //+------------------------------------------------------------------+ void drawline(string NameL, colorcol, double Y1) { ObjectCreate(NameL,OBJ_HLINE, 0,0,Y1,0,0); ObjectSet (NameL, OBJPROP_COLOR, col); ObjectSet (NameL, OBJPROP_STYLE, STYLE_SOLID); ObjectSet (NameL, OBJPROP_WIDTH, 1); ObjectSet (NameL, OBJPROP_BACK, false); ObjectSet (NameL, OBJPROP_SELECTED,true); ObjectSet (NameL, OBJPROP_SELECTED,true); } //+------------------------------------------------------------------+ void drawtext(string Name, stringtxt, double Y1) { ObjectDelete (Name); ObjectCreate (Name,OBJ_TEXT,0,Time[WindowFirstVisibleBar()-WindowFirstVisibleBar()/4],Y1,0,0,0,0); ObjectSetText(Name,txt ,8,"Arial"); ObjectSet (Name, OBJPROP_COLOR, ObjectGet(Name,OBJPROP_COLOR)); } //+------------------------------------------------------------------+ 11.png

还没有人打赏,支持一下