请观看如何免费下载自动交易
请在Twitter上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
896
等级:
(12)
已发布:
已更新:
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

智能交易系统参数(输入)

智能交易系统提供多个外部参数,用户可以修改这些参数来控制其行为:

一般参数

参数 类型 说明
魔数 int EA 交易的唯一标识符。
初始手数 双 系列中第一笔交易的起始手数。
允许买入 bool 允许 EA 开启买入交易(初始交易和马丁格尔交易)的标志。
允许卖出 bool 允许 EA 打开卖出交易(初始和马丁格尔)的标志。
获利 int 以点/点为单位的固定止盈,用于下挂单(但不用于市场执行)。
查找高点低点回档 int 用于确定初始挂单的最高价和最低价的回溯数。
重置后条数 整数 删除初始挂单并重新评估(如果未建立头寸)的条数。

马丁格尔策略

参数 类型 说明
反向马丁格尔 bool 如果为 true,随后的马丁格尔交易将与系列中最后一笔交易的方向相反(这通常是一种反马丁格尔或对冲方法,但如果为 false,代码将以相同方向开仓)。当前的逻辑建议,如果 ReverseMartingale 为假,则以相同 方向开仓。
手数乘数 双 亏损系列下一笔交易的手数乘以的系数(例如, 2.0 表示手数翻倍)。
SecureProfitMartingaleTarget(安全盈利目标 双倍 总浮动利润(账户货币),整个系列未平仓交易的平仓点。
距离定价点数 整数 在开始新的马丁格尔交易前,价格与上一笔交易的开仓价之间的移动距离(以点为单位)。
系列中最大交易次数 无 单个马丁格尔系列允许的最大交易次数。

时间策略

参数 类型 说明
允许星期一...允许星期五 bool 用于启用或禁用一周中特定日期交易的标志。
禁止日期 字符串 以逗号分隔的禁止交易日期列表(格式为 YYYY.MM.DD)。

核心函数概述

OnInit()(初始化)

设置 EA 的 MagicNumber、保证金模式和偏差。它将马丁格尔状态变量(s_currentLot、s_totalTradesInSeries 等)重置 为初始值,为重新开始做准备。

OnDeinit()(退出初始化)

一个简单的清理函数,在 EA 停止或删除时打印一条信息。

IsTradingDateAllowed() 和 IsTradingDayAllowed() (交易过滤器)

这些函数根据用户定义的输入(AllowMonday to AllowFriday 和 ForbiddenDates)检查当前日期,以确定是否允许交易。

OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (市场执行)

该函数处理开立新市场头寸(买入或卖出)。

  1. 它根据经纪商规定的最小、最大和步长验证并规范手数。

  2. 使用 CheckMargin() 检查是否有足够的自由保证金。

  3. 执行无固定止盈或止损的 交易(tp_calculated 为 0)。

  4. 它会更新全局马丁格尔状态变量:s_currentLot , s_lastOpenPrice , s_seriesType 和 s_totalTradesInSeries。

关闭所有头寸

遍历所有当前未结头寸,并关闭此 EA 开立的任何头寸(与 MagicNumber 匹配)。

PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (挂单下达)

该函数用于下达限价买入 或限价卖出 订单:

  1. 它验证手数并检查是否有足够的保证金。

  2. 根据经纪商的最小距离 ( SYMBOL_TRADE_STOPS_LEVEL ) 验证进入价格。

  3. 根据止盈输入计算固定止盈 ( tp )。

  4. 发送交易请求。注意: UpdateHighLowAndOrders(更新高低限价和订单)函数会调用 此功能来放置初始买入限价订单和卖出限价订单。

UpdateHighLowAndOrders() (初始入市逻辑)

这是未开仓时的初始入市机制:

  1. 它回溯 FindHighLowBackBars 找到最高价 和最低价。

  2. 计算 priceSellLimit(最高价 + 1 tick)和 priceBuyLimit(最低价 - 1 tick)。

  3. 它会检查是否已经存在具有 EA MagicNumber 的限价买单和限价卖单。

  4. 它会使用 InitialLot(初始手数)在最近的最高点上方放置一个初始限价卖出 订单,在最近的最低点下方放置一个限价买入 订单。

OnTick()(主要逻辑)

EA 执行逻辑的核心:

  1. 时间检查: 防止在同一刻度上进行冗余计算。

  2. 过滤检查: 如果当天/日期不允许交易,则删除所有挂单。

  3. 盈利目标检查(系列退出): 如果 eaHasOpenPositions 为 true 且 totalFloatingProfit 为≥ SecureProfitMartingaleTarget,则调用 CloseAllPositions() 并重置所有 Martingale 状态变量,以启动新系列。

  4. 初始下单: 如果!eaHasOpenPositions 且允许交易,则重置马丁格尔状态 并检查是否已形成新的条形图。

    • 如果形成了新的条形图,则检查 barsCount 是否≥ ResetAfterBars 。如果是,则删除挂单并调用 UpdateHighLowAndOrders() 下达新的初始订单。如果不是,则只调用 UpdateHighLowAndOrders() 。

  5. 马丁格尔步骤逻辑: 如果 eaHasOpenPositions 为 true 且 s_totalTradesInSeries 为 $< MaxTradesInSeries`:

    • 它会检查 totalFloatingProfit 是否为负值,以及价格是否与上一笔未平仓交易的价格相差至少 DistanceMartingalePips 。

    • 如果这两个条件都满足,则通过将 s_currentLot 乘以 LotMultiplier 来计算下一手。

    • 确定订单开仓方向(根据 ReverseMartingale 确定与系列相同的方向或相反的方向)。

    • 它调用 OpenTradeLogic() 打开新的倍增仓位,继续马丁格尔系列。


策略摘要

Babi Ngepet "EA实施了一种风险大但潜在回报高的马丁格尔策略,并结合了突破/区间反转初始入场:

  1. 初始进入: EA 设下初始买入限价(低于近期低点)和卖出限价(高于近期高点)。这表明初始假设为区间行为-- 当价格跌至低点时买入,当价格涨至高点时卖出。

  2. 交易管理: 如果其中一笔初始交易被触发,头寸出现累计亏损(负浮动利润),且价格继续与未平仓头寸保持一定距离,则 EA 会以更大的手数(马丁格尔)在同一方向开立新头寸。

  3. 退出策略: 系列交易继续增加手数,直到系列中所有交易的总浮动利润达到 SecureProfitMartingaleTarget(安全盈利马丁格尔目标),此时关闭所有仓位,并重置 EA 以建立新的系列。

警告: 马丁格尔策略以高回撤和高资本损失风险著称,因为每一步亏损后,手数都会增加。


由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/64444

Trap News MT5 Trap News MT5

高影响力陷阱新闻脚本

KopierMaschineMT5 KopierMaschineMT5

KopierMaschine 是一款本地复制器,可在一台电脑上以任何方向复制不同 MetaTrader 4 和 MetaTrader 5 账户之间的交易,界面直观。

外汇概率论智能交易系统 外汇概率论智能交易系统

概率论顾问

Breakout Strategy with Prop Firm Helper Functions Breakout Strategy with Prop Firm Helper Functions

这是 "简单而有效的突破策略 "的更新。在这段代码中,我为道具公司的挑战添加了一些辅助函数。