找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 33|回复: 0

跟踪止损函数

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 21:46:00 | 显示全部楼层 |阅读模式
//跟踪止损--修改止盈止损

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币 才能浏览
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 21:57 , Processed in 0.108086 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表