EaCode小胖李 发表于 2022-12-23 15:46:19

TrailStopLoss()为持仓的每一个订单设置单独的移动/跟踪止损

函数名称
void TrailStopLoss(string SymbolX,int MagicX,int TrailSLStartX,int TrailSLX)
函数介绍

自动检测当前持仓的所有订单,为每一个订单,设置跟踪止损。如果该订单盈利达到设定条件,就为该订单设置一个跟踪止损。是一个非常好用的函数。注意:调用函数的时候,需要把函数的定义放到代码的最下面。
//举例:订单盈利500点后,设置100点的跟踪止损
TrailStopLoss(Symbol(),MAGIC,500,100);

参数介绍

SymbolX:需要设置跟踪止损的品种,一般设置当前品种即可。也就是Symbol();
MagicX:订单的魔术码,你的EA的魔术码是多少,这里填上即可。
TrailSLStartX:开启跟踪止损的盈利点数(pips),当此订单盈利多少点时进行跟踪止损。
TrailSLX:跟踪止损的点数,需要设置一个大于0的整数数值。

函数定义

注意:本人发布的函数均为实战开发所用,低价或免费发布并不赚钱,仅限懂编程的朋友使用,不提供指导,因为人工成本巨贵,感谢朋友们海涵。void TrailStopLoss(string SymbolX,int MagicX,int TrailSLStartX,int TrailSLX)
{

      for(int i=OrdersTotal()-1; i>=0; i--)
      {
         if(OrderSelect(i,SELECT_BY_POS))
            if(OrderSymbol()==SymbolX&&OrderMagicNumber()==MagicX)
            {
               if(OrderType()==OP_SELL && OrderOpenPrice()-MarketInfo(Symbol(),MODE_ASK)>TrailSLStartX*MarketInfo(Symbol(),MODE_POINT))
               {
                  if(MarketInfo(Symbol(),MODE_ASK)+TrailSLX*MarketInfo(Symbol(),MODE_POINT)<OrderStopLoss() || OrderStopLoss()==0)
                     if(!OrderModify(OrderTicket(),0,MarketInfo(Symbol(),MODE_ASK)+TrailSLX*MarketInfo(Symbol(),MODE_POINT),OrderTakeProfit(),0,Yellow))
                        Print(GetLastError());
               }
               else
                  if(OrderType()==OP_BUY && MarketInfo(Symbol(),MODE_BID)-OrderOpenPrice()>TrailSLStartX*MarketInfo(Symbol(),MODE_POINT))
                  {
                     if(MarketInfo(Symbol(),MODE_BID)-TrailSLX*MarketInfo(Symbol(),MODE_POINT)>OrderStopLoss() || OrderStopLoss()==0)
                        if(!OrderModify(OrderTicket(),0,MarketInfo(Symbol(),MODE_BID)-TrailSLX*MarketInfo(Symbol(),MODE_POINT),OrderTakeProfit(),0,Yellow))
                           Print(GetLastError());
                  }
            }
      }
}




ea12213 发表于 2022-12-23 20:04:05

自动检测

ken138888 发表于 2022-12-25 14:14:32

厉害了。
页: [1]
查看完整版本: TrailStopLoss()为持仓的每一个订单设置单独的移动/跟踪止损