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

GBPUSD 1HRC4 周期 - 成立 未优化的回测


该专家顾问是一个多策略系统,分为四个独立的交易子系统(周期1至周期4)。每个周期均采用各自的魔术号、指标、入场触发条件以及独特的资金管理参数。

1. 周期1逻辑:多指标汇聚

周期1依赖于一个复合过滤器,该过滤器结合了最多三条移动平均线(MA)、相对强弱指数(RSI)以及威廉姆斯百分比范围(WPR)。

入场触发条件

核心变量 c1_signal 作为二进制寄存器,确保指标之间不会发生冲突。如果指标 A 发出买入信号,c1_signal 将变为 1;如果随后指标 B 发出卖出信号,c1_signal 将重置为 0 以取消该交易。

  • 移动平均线 1、2 和 3:

    • 买入条件: 前一根K线收盘价高于移动平均线,且当前K线开盘价高于移动平均线($Close[1] > MA$$Open[0] > MA$)。

    • 卖出条件: 前一根K线收盘价低于移动平均线,且当前K线开盘价低于移动平均线($Close[1] < MA$$Open[0] < MA$)。

  • RSI 过滤器:

    • 买入条件: RSI 跌破超卖阈值(RSI_Buy_Level,例如 30)。

    • 卖出条件: RSI 升至超买阈值(RSI_Sell_Level,例如 70)之上。

  • WPR 过滤器:

    • 买入条件: WPR跌破 WPR_Buy_Level(例如 -80)。

    • 卖出条件: WPR 升至 WPR_Sell_Level 以上(例如 -20)。

信号处理

  • 反向信号规则: 若 Reverse_Signals = true,则最终的买入信号(1)将转换为卖出信号(2),反之亦然。

  • 每根K线仅执行一次交易限制: EA会检查当前开盘价是否与 c1_open_price 匹配。若匹配,则表示该K线已处理过仓位,后续执行将被阻止,直至新K线开启。

2. 循环 2 逻辑:包络线趋势跟踪

周期 2 采用经典的双带包络线指标来描绘市场的结构性突破。

  • 买入触发条件: 前一根K线收盘价位于上包络带上方,且当前K线开盘价也位于其上方($Close[1] > UpperBand$$Open[0] > UpperBand$)。这表明存在强劲的看涨动能突破。

  • 卖出触发条件: 前一根K线收盘价位于下包络线下方,且当前K线开盘价位于该线下方($Close[1] < LowerBand$$Open[0] < LowerBand$),表明出现看跌破位。

  • 信号反转: 若 Reverse_Signals2 = true,则将突破信号反转为假突破陷阱(对跌破/突破信号进行反向操作)。

3. 周期 3 逻辑:包络线均值回归

周期 3 采用与周期 2 相同的参数,但反转了默认的基准执行逻辑,以捕捉均值回归(逆势交易极端行情)。

  • 买入触发条件: 前一根K线收盘价位于上包络带上方,且当前K线开盘价位于该带上方。逻辑: 代码在此处生成卖出 信号,因为其假设资产价格已过度延伸,并将回调至包络带内。

  • 卖出触发条件: 前一根K线收盘价位于下轨下方,且当前K线开盘价位于下轨下方。逻辑: 代码在此处发出买入 信号,押注资产将从超卖区域立即反弹。

4. 周期 4 逻辑:包络线点距突破

第4周期为包络线指标引入了严格的波动率/点差距离限制,作为一种激进的突破交易系统。

  • 买入触发条件: 下轨与前一收盘价之间的距离大于“Distance”点数, 下轨与当前买入价之间的距离也大于“Distance”($LowerBand - Close[1] > Distance$$LowerBand - Bid > Distance$)。

  • 卖出触发条件: 前一收盘价与上轨之间的距离,以及当前买入价与上轨之间的距离,均超过“Distance”值($Close[1] - UpperBand > Distance$$Bid - UpperBand > Distance$)。

5. 平仓、投资组合平仓与风险逻辑

该平仓管理架构不采用标准的按仓位设置止损(SL)或止盈(TP)订单,而是依赖于按周期映射的“全球账户权益篮子追踪系统”

里程碑捕捉

当一个周期的持仓数量从 0 变为 1 时(通过 c1_Buycount == 0 或 c1_Sellcount == 0 进行追踪),EA 会将该时刻交易账户的精确基准权益作为基准:

$$\text{基准权益} = \text{AccountInfoDouble}(\text{ACCOUNT\_EQUITY})$$

基于该基准,它为该特定交易方向映射静态全局目标:

  • 止盈目标: 若指定了 target_amount,则将其设为$\text{Baseline} + \text{target\_amount}$。 否则,使用百分比公式:

    $$\text{目标价格} = \text{基准} + \left(\frac{\text{基准} \times \text{目标百分比}}{100}\right)$$
  • 止损目标: 使用相对于已捕获快照权益的百分比回撤限制:

    $$\text{风险价格} = \text{基准} - \left(\frac{\text{基准} \times \text{账户风险百分比}}{100}\right)$$

动态投资组合验证

在每个价格跳动点,EA 会计算所有符合该特定周期魔术号码和交易类型(MyAccountProfit_Buy 或 MyAccountProfit_Sell)的活跃头寸的实时浮动盈亏、掉期和佣金的累计总额。

$$\text{当前投资组合价值} = \text{基准权益} + \text{浮动盈亏}$$

平仓执行

如果$\text{当前投资组合价值} \ge \text{目标价格}$(达到盈利目标) $\text{当前投资组合价值} \le \text{风险价格}$(突破最大风险上限):

  1. EA 将调用 ClosePositions() 函数。

  2. 它将按Magic Number仓位类型 进行筛选,并反向遍历所有市场持仓。

  3. 每一笔相关交易都将通过市价单立即平仓。

  4. 趋势方向的周期追踪器将重置为 0,使 EA 能够在收到下一个结构性指标信号时建立一个全新的基准快照。

6. 仓位控制逻辑(资金管理)

交易量计算由 getLots(int cycle) 例程动态执行:

  • 固定手数: 若 AutoLots 为 false,则返回基线硬编码的手数设置(例如,LotSize = 0.01)。

  • 动态风险调整: 若 AutoLots = true,系统将根据可用保证金自动调整交易量:

    1. 它通过 OrderCalcMargin 查询当前资产进行标准 1.0 手交易所需的精确保证金。

    2. 它使用以下公式推算可承受的投资能力:

      $$\text{预计交易量} = \frac{\text{账户可用保证金} \times \left(\frac{\text{风险手数}}{100}\right)}{\text{每 1.0 手保证金}}$$
    3. 最终结果将通过 MathMin 和 MathMax 与经纪商设定的限制进行比对,以确保其精确落在 SYMBOL_VOLUME_MIN 和 SYMBOL_VOLUME_MAX 之间的有效范围内,并精确四舍五入至最接近的交易所资产步长( SYMBOL_VOLUME_STEP )。

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

KCI Volatility Distance KCI Volatility Distance

KCI波动距离是一种经过精心设计的先进自适应算法,旨在以极高的精度描绘市场动能和趋势方向。 该工具采用专有的矩阵计算方法,能够动态过滤市场噪音,并从严格的定量角度分析趋势强度。其核心基于高度优化的面向对象编程(OOP)架构,既能提供清晰的交易可视化效果,又能无缝集成到专家顾问(EA)或机器学习模块中,确保在多种资产上实现超轻量级的CPU性能。

Double Enevlopes (Historical Gauged) Double Enevlopes (Historical Gauged)

一款保姆服务管理工具和系统 :D简体中文(大陆)

MA + Envelope Breakouts MA + Envelope Breakouts

基于包络通道或包络带的突破策略,将多种EA逻辑整合于一个EA之中

CKS Position Risk Dashboard CKS Position Risk Dashboard

一个只读的MT5仪表盘,用于基于风险的手数设定、账户健康状况、经纪商交易量限制以及当前交易品种的风险敞口。