请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
339
等级:
(9)
已发布:
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

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