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

跟踪止损函数

| 发表于 2024-4-12 18:34:03 | 显示全部楼层 |复制链接

//跟踪止损--修改止盈止损
void 跟踪止损(double sl)
{  
   for(int i=PositionsTotal()-1; i>=0; i--)
   {
      if(PositionGetTicket(i)>0 || PositionGetSymbol(i)!="")//如果有订单
      {  
         //如果多单。
         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
         {
            MqlTradeRequest request={};
            MqlTradeResult  result={};
            double 初始化止损 = PositionGetDouble(POSITION_SL);
            request.action=TRADE_ACTION_SLTP;//用于修改订单
            request.position=PositionGetInteger(POSITION_TICKET);
            request.symbol=PositionGetString(POSITION_SYMBOL);
            request.price=SymbolInfoDouble(m_symbol.Name(),SYMBOL_BID);
            if(request.price>=初始化止损+sl)
            {   
               request.sl= request.price - sl;
            }
            else
            {
               request.sl= 初始化止损;
            }
            //request.type=ORDER_TYPE_BUY;
            bool X=OrderSend(request,result);
            if(X==false)
            {
               Print("修改多单止损返回代码:" + IntegerToString(result.retcode));
            }
         }
         //如果空单。
         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
         {
            MqlTradeRequest request={};
            MqlTradeResult  result={};
            double 初始化止损 = PositionGetDouble(POSITION_SL);
            request.action=TRADE_ACTION_SLTP;//用于修改订单
            request.position=PositionGetInteger(POSITION_TICKET);
            request.symbol=PositionGetString(POSITION_SYMBOL);
            request.price=SymbolInfoDouble(m_symbol.Name(),SYMBOL_BID);
            if(初始化止损==0){
               request.sl=PositionGetDouble(POSITION_PRICE_OPEN)+MathAbs(sl-PositionGetDouble(POSITION_PRICE_OPEN));
            }
            else if(request.price<=初始化止损-sl)
            {   
               request.sl=request.price + sl;
            }
            else
            {
               request.sl=初始化止损;
            }
            //request.type=ORDER_TYPE_SELL;
            bool X=OrderSend(request,result);
            if(X==false)
            {
               Print("修改空单止损返回代码:" + IntegerToString(result.retcode));
            }
         }         
      }
   }
}
购买 已有0人购买, 当前内容需向作者支付 2 H币 才能浏览
举报

评论 使用道具

热门主题

精彩评论2

t5530407
DD
| 发表于 2024-4-15 22:24:33 | 显示全部楼层
感谢赐教
举报

点赞 评论 使用道具

xinhua123
DDD
| 发表于 2024-4-17 13:45:38 | 显示全部楼层
很好谢谢
举报

点赞 1 评论 使用道具

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

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