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

根据当前利润获利 - MetaTrader 4 库

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

Take Profit based on current profit - library for MetaTrader 4

考虑到与购买价格的点差,许多专家顾问 (EA) 倾向于在止盈水平关闭订单。然而,使用的代码 EA 网格女孩 主要是基于当前的利润。这种方法允许您轻松管理多个未平仓头寸的止盈,并根据幻数监控当前总利润,以防您同时使用多个机器人实例或不同的 EA。 添加我为你的朋友 并关注我的动态以获取最新消息!

使用此代码还可以对使用基于点的止盈时可能出现的一些问题产生积极影响。例如,基于点的止盈可能会根据经纪商的滑点而变化,从而限制利润。通过使用基于当前利润的代码,您可以避免此问题并更好地控制您的交易。

如果您想了解更多如何根据当前利润设置止盈,可以使用 EA SwingBot 的代码作为参考。

让我们从计算具有相同幻数的未结订单总数的代码开始。

幻数是交易者或 EA(EA 交易)分配给订单的唯一标识符

代码初始化一个变量 订单总数 为零。然后,它使用 for 循环遍历所有未结订单,并使用 订单选择() 功能。 如果成功选择订单,则会增加 订单总数 变量减一

//-----------------  整数总订单数 =0;
  为了整数我=0;我 <订单总数();我++)
     {
      如果订单选择(i,按POS选择,MODE_TRADES))
        {
        如果(OrderMagicNumber() == MagicNumber)
         {
         total_orders++;
        }
        }
     }

……

该代码初始化两个变量: 利润最小化 和 利润。变量 利润最小化 用于激活此级别的止盈,该值以帐户的货币表示。变量 利润 用于累积具有相同幻数的所有未平仓头寸的当前利润。 变量 止损 用于止损

该代码使用 for 循环来迭代所有未平仓头寸,使用 订单总数() 功能。对于每个未平仓头寸,使用以下命令选择相应的订单 订单选择() 功能。 如果订单被成功选择并且具有相同的幻数,则该订单的利润将添加到 利润 多变的

      双倍的最小利润=3; // 目标利润
      双倍的利润=0; // 当前利润
      

      为了整数我=0;我<订单总数();我++)
        {
        如果订单选择(i,按POS选择,MODE_TRADES))
           {
            如果(OrderMagicNumber() == MagicNumber)// 如果有多个 EA,您可以删除 MagicNumber 过滤器以维护总订单的功能              {
               利润+=订单利润();
              }
           }
        }


最小利润可以设置为外部变量并在 EA 选项中配置:

Take Profit based on current profit - library for MetaTrader 4

该代码使用 for 循环来迭代所有未结订单,使用 订单总数() 功能。循环从最后一个订单开始,一直到第一个订单。 对于每个订单,使用以下命令选择相应的交易 订单选择() 功能

如果所选交易与当前图表具有相同的交易品种,则属于类型 OP_买入,并且具有与代码中指定的相同的幻数,它检查是否 利润 交易量大于或等于 利润最小化。 如果是,则使用以下命令以买入价结束交易 订单关闭() 函数并打印一条消息,表明买入订单已关闭

同样,如果所选交易与当前图表具有相同的交易品种,则属于类型 OP_卖出,并且具有与代码中指定的相同的幻数,它检查是否 利润 交易量大于或等于 利润最小化。 如果是,则使用以下命令以要价关闭交易 订单关闭() 函数并打印一条消息,指示卖单已关闭。

      为了整数e =订单总数()-1; e >=0;电子--)
        {
        如果订单选择(e、SELECT_BY_POS、MODE_TRADES))
           {
            如果(订单符号()==象征() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber)// l'ordine viene modificato alone se il MagicNumber 对应于 corso 中的 quello dell'ordine。              {
              如果(利润 >= ProfittoMinimo)
                 {
                  OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()),3);// 买入价                  打印“购买订单已关闭”, 利润,“ - 最小止损:”,市场信息(象征(), MODE_STOPLEVEL));
                 }
              }

            如果(订单符号()==象征() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber)
              {
              如果(利润 >= ProfittoMinimo)
                 {
                  OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()),3);// 卖价                  打印“卖单已关闭”, 利润,“ - 最小止损:”,市场信息(象征(), MODE_STOPLEVEL));
                 }
              }
           }
        }

该代码对于所有基于止盈的平仓策略可能很有用,但它也可以与基于当前利润增加的追踪止损相结合。该系统在存在多个 EA 交易的情况下也很有用。 如果您排除 如果 MagicNumber 上的条件,您可以设置一般止盈水平以同时控制所有活跃 EA 的所有未平仓头寸


附件下载

📎 current_profit_take_profit.mqh (4.28 KB)

📎 current_profit_take_profit.mq4 (2.39 KB)

Source: MQL5 #48469

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