欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

按目标平仓或减少损失 - MetaTrader 4 专家

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

需要 3 个输入,如下:

外部的    双倍的         inTargetProfitMoney     =10;      //目标利润($)
外部的    双倍的         inCutLossMoney          =0.0;      //止损($)
外部的    整数            inMagicNumber           =0;        //幻数


当执行此 EA 时,它将首先调用 OnInit () 函数。我们将在其中验证输入和变量初始化

整数 初始化时()
  {//---  如果(inTargetProfitMoney <=0)
     {
      警报“输入无效”);
      返回INIT_PARAMETERS_INCORRECT);
     }

   减少损失资金 =数学抗体(以削减损失金额计)* -1;//---  返回初始化成功);
  }


并且每次价格变动(tick)都会调用OnTick()函数

空白 勾选()
  {//---  双倍的   t浮动 =0.0;
  整数t订单=订单总数();
  为了整数i=t订单-1;我>=0;我 - )
     {
      如果订单选择(i,按POS选择,MODE_TRADES))
        {
        如果(OrderMagicNumber() == inMagicNumber)
           {
            tFloating += OrderProfit()+OrderCommission() + OrderSwap();
           }
        }
     }

  如果(tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney <0))
     {
      fCloseAllOrders();
     }

  }

在OnTick函数中,会继续计算总盈利或总亏损。然后将关闭所有可以完成目标或最大损失限额的订单

空白f关闭所有订单()
  {
  双倍的   收盘价 =0.0;
  整数t订单 =订单总数();
  为了整数i=t订单-1;我>=0;我 - )
     {
      如果订单选择(i,按POS选择,MODE_TRADES))
        {
        如果(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL))
           {
            价格Close = (OrderType()==OP_BUY)?MarketInfo(OrderSymbol(), MODE_BID):MarketInfo(OrderSymbol(), MODE_ASK);
            如果(!OrderClose(OrderTicket()、OrderLots()、priceClose、滑点、黄金))
              {
              打印“警告:关闭失败”);
              }
           }
        }
     }
  }


想了解更多MQL4代码教育的详细信息和分享,请加入我们的电报群t.me/codeMQL


附件下载

📎 closeorders.mq4 (3.47 KB)

Source: MQL5 #34194

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录