设为首页 收藏本站 切换语言

哪位大佬知道我想实现批量修改订单的止盈止损为该订单开仓价的指定点数

| 发表于 2024-4-22 12:34:16 | 显示全部楼层 |复制链接
最后由 zhoujun 于 2024-4-22 12:37 编辑

  • void ModifyByPrice(string SymbolX,int OrderTypeX,double StopLossX,double TakeProfitX,int MagicX)
  •   {
  •    if(StopLossX>=0)
  •       for(int i=OrdersTotal()-1; i>=0; i--)
  •         {
  •          if(OrderSelect(i,SELECT_BY_POS))
  •             if((OrderSymbol()==SymbolX|| SymbolX=="-1")&&(OrderMagicNumber()==MagicX||MagicX==-1)&&(OrderType()==OrderTypeX||OrderTypeX==-1))
  •                if(NormalizeDouble(StopLossX,(int)MarketInfo(OrderSymbol(),MODE_DIGITS))!=OrderStopLoss())
  •                   if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(StopLossX,(int)MarketInfo(OrderSymbol(),MODE_DIGITS)),OrderTakeProfit(),0,Yellow))
  •                      Print(GetLastError());
  •         }
  •    if(TakeProfitX>=0)
  •       for(int i=OrdersTotal()-1; i>=0; i--)
  •          if(OrderSelect(i,SELECT_BY_POS))
  •             if((OrderSymbol()==SymbolX|| SymbolX=="-1")&&(OrderMagicNumber()==MagicX||MagicX==-1)&&(OrderType()==OrderTypeX||OrderTypeX==-1))
  •                if(OrderTakeProfit()!=NormalizeDouble(TakeProfitX,(int)MarketInfo(OrderSymbol(),MODE_DIGITS)))
  •                   if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TakeProfitX,(int)MarketInfo(OrderSymbol(),MODE_DIGITS)),0,Yellow))
  •                      Print(GetLastError());
  •   }
这个是高手的指定价格版,如何修改为该订单开仓价的指定点数,请老师不吝赐教,非常感谢
举报

评论 使用道具

精彩评论3

westwuwei
DDD
| 发表于 2024-4-22 21:35:39 | 显示全部楼层
对于多单来说,你可以把“开盘价”改为“开盘价+指定点数*(0.1^digit)”。对于空单则为 -。
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2024-4-23 11:13:17 | 显示全部楼层
当然你修改 OrderOpenPrice 的时候往往地也同步修改你的 OrderTakeProfit,用移动止损作为止盈方式,而原来的止盈方式并不用来进行常规的止盈操作。
举报

点赞 评论 使用道具

jsz
D
| 发表于 2024-4-29 19:54:02 | 显示全部楼层
调整下格式吧,看的眼疼
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)