系统交易

掌握网格和马丁策略的反弹次数与仓位设置
MetaTrader4
掌握网格和马丁策略的反弹次数与仓位设置

在网格和马丁策略中,仓位设置和交易数量是至关重要的。 我们总是会关注某个品种在震荡区间的历史表现,尤其是价格在震荡区间反弹了多少次! 这就被我称为反弹次数,它可以通过对市场历史数据的统计分析得出。 为了更清晰一点,咱们看看下面的图1。 图1:反弹次数的定义、目标及应用 这个图展示了价格走势如何生成反弹次数工具的统计数据。为了让工具更流畅,我把它做成了一个专家顾问(EA),使用了Sleep函数,这样可以防止因输入的蜡烛数量过高而导致图表崩溃。 另一个图(图2)展示了工具的简要图形结构及其对象的含义。 图2:反弹次数统计。 工具使用方法: 根据图2,如果我们将反弹通道半高度设置为600点: 这个品种共有6个不同的反弹次数,从1到6。 反弹次数为2意味着,价格从反弹通道的中间开始(高度2 * 600 = 1200点),上下波动,并且在触及止盈点TP=1200点之前,分别碰到一次红线和一次蓝线。 同样,反弹次数为5则意味着价格从通道中点开始,并触及2次红线和3次蓝线,或者3次红线和2次蓝线,然后触及TP=1200点。其他反弹次数也是如此。 - 我们没有反弹次数为7的情况,这意味着在选定的历史数据中,价格在红线和蓝线之间没有出现过7次反弹(1200点的距离)。需要注意的是,如果你选择更多的历史数据(最大回溯蜡烛数),找到7次反弹的机会会增加。但正如我们看到的,即使6次反弹的机会在9020个价格触及TP的项目中也只有22次。 工具的输入选项包括: - 最大回溯蜡烛数:与其他扫描工具相同,请谨慎设置此单元格的数量。不要剧烈增加,以免造成内存崩溃。 - 时间周期:用于寻找通道限度反弹和止盈线接触的蜡烛时间周期。对于较窄的通道,建议使用较低的时间周期。如果不确定,最好使用M1时间周期。 - 反弹通道半高度:这是绿色线与红线和蓝线之间的距离,以点为单位。 - 图表背景颜色 - 柱状图颜色1/柱状图颜色2:用于让统计柱看起来更好看 - 计数单元格颜色 - 反弹次数单元格颜色 - 加载条颜色:在计算过程中,这个加载条将帮助用户了解工具是否在工作及计算速度。 - 添加按钮以启动并输入历史蜡烛数。

2024.01.12
基于当前利润的止盈策略 - MetaTrader 4 专家顾问
MetaTrader4
基于当前利润的止盈策略 - MetaTrader 4 专家顾问

引言 很多交易专家顾问(EA)在设置止盈时,通常是根据买入价与当前价格之间的点差来关闭订单。然而,EA Perceptron所使用的代码主要是基于当前的利润。这种方式使得我们能够更灵活地管理多个开仓的止盈,实时监控基于魔法数字的总利润,特别是在同时使用多个交易机器人或不同的EA时,管理起来更加方便。加我为好友,关注我的动态,获取最新消息! 使用这种代码还可以有效解决使用基于点差的止盈时可能出现的一些问题。例如,基于点差的止盈可能会因经纪商的滑点而变化,从而限制我们的利润。而通过使用基于当前利润的代码,我们可以避开这个问题,获得更好的交易控制。 如果你想了解更多关于如何设置基于当前利润的止盈,可以参考EA SwingBot的代码。 … 计算总订单数 首先,我们来看一下计算具有相同魔法数字的开放订单总数的代码。 魔法数字是由交易者或EA(专家顾问)为订单指定的唯一标识符。 代码将变量total_orders初始化为零。然后通过一个for循环遍历所有开放订单,并使用OrderSelect()函数选择每个订单。如果成功选择了一个订单,就将total_orders变量加一。 //-----------------    int total_orders = 0;    for(int i = 0; i < OrdersTotal(); i++)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if(OrderMagicNumber() == MagicNumber)          {          total_orders++;         }         }      } … 计算当前利润 代码初始化了两个变量:ProfittoMinimo和Profit。变量ProfittoMinimo用于在该水平激活止盈,其值以账户货币表示。变量Profit则用于累积所有具有相同魔法数字的开放仓位的当前利润。变量StopLoss用于止损。 代码使用一个for循环遍历所有开放仓位,利用OrdersTotal()函数。对于每个开放仓位,使用OrderSelect()函数选择相应的订单。如果成功选择了订单且其魔法数字相同,就将该订单的利润加到Profit变量中。       double ProfittoMinimo = 3; // 目标利润       double Profit = 0; // 当前利润              for(int i=0; i<OrdersTotal(); i++)         {          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))            {             if(OrderMagicNumber() == MagicNumber) // 如果有多个EA,可以去掉魔法数字筛选,保持对所有订单的功能               {                Profit += OrderProfit();               }         } 最低利润可以设置为外部变量,并在EA选项中进行配置: … 达到利润时关闭仓位 代码使用一个for循环遍历所有开放订单,利用OrdersTotal()函数。循环从最后一张订单开始,向前遍历到第一张订单。对于每个订单,使用OrderSelect()函数选择相应的交易。 如果所选交易与当前图表的交易品种相同,且类型为OP_BUY,并且其魔法数字与代码中指定的一致,则会检查该交易的Profit是否大于或等于ProfittoMinimo。如果是的话,就通过OrderClose()函数以买入价平仓,并打印出关闭买单的消息。 同样,如果所选交易与当前图表的交易品种相同,且类型为OP_SELL,并且其魔法数字与代码中指定的一致,则会检查该交易的Profit是否大于或等于ProfittoMinimo。如果是的话,就通过OrderClose()函数以卖出价平仓,并打印出关闭卖单的消息。       for(int e = OrdersTotal() - 1; e >= 0; e--)         {          if(OrderSelect(e, SELECT_BY_POS, MODE_TRADES))            {             if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) // 只有当魔法数字与当前订单匹配时,订单才会被修改。               {                if(Profit >= ProfittoMinimo)                  {                   OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()), 3); // 买入价                   Print("买单已关闭", Profit, " - 最低止损: ",MarketInfo(Symbol(), MODE_STOPLEVEL));                  }               }             if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber)               {                if(Profit >= ProfittoMinimo)                  {                   OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()), 3); // 卖出价                   Print("卖单已关闭", Profit, " - 最低止损: ",MarketInfo(Symbol(), MODE_STOPLEVEL));                  }               }            }         } … 总结 这段代码对于所有基于止盈的平仓策略都非常有用,但它也可以与基于当前利润增加的追踪止损结合使用。该系统在使用多个专家顾问的情况下也非常实用。如果你去掉魔法数字的if条件,就可以设置一般的止盈水平,以同时控制所有活跃EA的开放仓位。

2023.10.27
突破马丁盖尔策略:为MetaTrader 4量身定制的交易助手
MetaTrader4
突破马丁盖尔策略:为MetaTrader 4量身定制的交易助手

大家好!今天我想和大家分享一个非常实用的交易工具——突破马丁盖尔策略(Breakout Martin Gale)专家顾问(EA),专为外汇交易设计。这款EA结合了突破交易策略与马丁盖尔资金管理系统的特点,旨在优化我们的交易表现。 输入参数: TakeProfPoints: 这个参数允许你为每笔交易设置以点数计算的止盈水平。 BalancePercentageAvailable: 指定将用于交易的账户余额百分比。 TP_Percentage_of_Balance: 确定每笔交易的止盈所用的账户余额百分比。 SL_Percentage_of_Balance: 设置每笔交易的止损所用的账户余额百分比。 Start_The_Recovery: 这个参数在恢复过程中起着至关重要的作用,控制何时以及如何激活恢复措施。 TP_Points_Multiplier: 一个止盈点的倍数,允许灵活的获利策略。 MagicNumber: 一个独特的标识符,确保这款EA能够独立管理自己的交易。 策略亮点: 突破交易: 这款EA专注于识别市场中的突破机会,也就是价格突破关键水平的时刻。 动态手数调整: 根据你的账户余额和风险偏好,动态调整手数,遵循马丁盖尔资金管理原则。 亏损恢复: EA包含强大的恢复机制,能够在必要时通过动态调整交易参数来弥补损失。 在这款EA中,主要使用的函数是CalcLotWithTP(),它有三个输入参数:止盈、起始价格和结束价格。这个函数计算进入交易时所需的交易量,以便在以起始价格进入并以结束价格退出时实现盈利目标。 代码中的一切都有详细注释,便于大家理解。 我还制作了一段关于这款EA的YouTube视频,欢迎大家观看!

2023.09.26
首页 上一页 1 2 3 4 5 6 7 8 下一页 末页