English Русский Español Deutsch 日本語 Português
利用 Donchian 通道进行交易

利用 Donchian 通道进行交易

MetaTrader 5测试者 |
10 757 21
Alexander Fedosov
Alexander Fedosov

内容

概述

Donchian 通道是 20 世纪 70 年代初期开发的技术指标。首先将之称为移动通道, 后来以其创始人 Richard Donchian 之名命名。指标基于给定的价格范围, 根据最近的最低价和最高价来衡量市场波动程度。Donchian 通道绘制为两行, 价格在其间波动。当价格分别突破底线或上边界时, 形成买入或买入信号。笔者建议使用价格范围等于 20 (一个月的平均工作天数) 和 D1 时间帧来绘制通道。


Donchian 通道的操作原理与应用

我不会重新发明车轮, 也不会再创建此指标的另一个程序。我决定使用其 Donchian 通道系统 改编版, 它完美地体现了基于此系统的交易风格。在图例.1 中, 粉红色和蓝色的蜡烛条显示了通道边界被突破的区域, 在此位置预计入场。


图例1. 基于 Donchian 通道的操作原理和入场点。

注意图表上标记的红色区域。它们揭示了 Donchian 通道的主要缺点 — 所谓的假突破, 之后价格回落到其范围之内。所以, 仅使用 Donchian 通道而无额外确认的情况下入场将是鲁莽的。为了更清晰地了解指标思想, 我们来分析这个改编版的参数和实现:

//+----------------------------------------------+
//|  指标输入参数                                  |
//+----------------------------------------------+
input uint           DonchianPeriod=20;            // 均化周期
input Applied_Extrem Extremes=HIGH_LOW;            // 极值类型
input uint           Shift=2;                      // 水平位移柱线数
//+----------------------------------------------+

  • 均化周期 用于价格范围。
  • 极值类型 意即用于计算的价格类型。省缺使用经典设置, 这意味着使用蜡烛条最高价和最低价数值。
  • 水平位移柱线数 意即通道位移。

我们来讨论极值类型, 因为在这个改编版中, 不只可以使用最高价和最低价。以下是可能的选项和软件实现:

//+----------------------------------------------+
//|  枚举声明                                      |
//+----------------------------------------------+
enum Applied_Extrem //极值类型
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };

  • HIGH_LOW 是蜡烛条最高价和最低价的经典应用。
  • HIGH_LOW_OPEN — 在本解释中, 通道上边界是基于所选价格范围内的 开盘价蜡烛条最高价 之间的平均值来绘制的。蜡烛条最低价用于下边界。
  • HIGH_LOW_CLOSE — 通道上边界是基于所选价格范围内的 收盘价蜡烛条最高价 之间的平均值来绘制的。蜡烛条最低价用于下边界。
  • OPEN_HIGH_LOW — 通道上边界是基于所选价格范围内的最高 开盘价, 最低的那个用于下边界。
  • CLOSE_HIGH_LOW — 通道上边界是基于所选价格范围内的最高 收盘价, 最低的那个用于下边界。

下面提供了不同极值类型的实现列表:

for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      switch(Extremes)
        {
         case HIGH_LOW:
            SsMax=high[ArrayMaximum(high,bar,DonchianPeriod)];
            SsMin=low[ArrayMinimum(low,bar,DonchianPeriod)];
            break;

         case HIGH_LOW_OPEN:
            SsMax=(open[ArrayMaximum(open,bar,DonchianPeriod)]+high[ArrayMaximum(high,bar,DonchianPeriod)])/2;
            SsMin=(open[ArrayMinimum(open,bar,DonchianPeriod)]+low[ArrayMinimum(low,bar,DonchianPeriod)])/2;
            break;

         case HIGH_LOW_CLOSE:
            SsMax=(close[ArrayMaximum(close,bar,DonchianPeriod)]+high[ArrayMaximum(high,bar,DonchianPeriod)])/2;
            SsMin=(close[ArrayMinimum(close,bar,DonchianPeriod)]+low[ArrayMinimum(low,bar,DonchianPeriod)])/2;
            break;

         case OPEN_HIGH_LOW:
            SsMax=open[ArrayMaximum(open,bar,DonchianPeriod)];
            SsMin=open[ArrayMinimum(open,bar,DonchianPeriod)];
            break;

         case CLOSE_HIGH_LOW:
            SsMax=close[ArrayMaximum(close,bar,DonchianPeriod)];
            SsMin=close[ArrayMinimum(close,bar,DonchianPeriod)];
            break;
        }


开发交易系统

当开发策略时, 我们不仅要考虑到假突破, 还要考虑到 Donchian 通道经常用于趋势策略。入场信号由通道突破形成, 因此, 为了消除通道边界外的假离场, 我们至少需要使用一个趋势指标进行信号确认。我们还需要判断入场、开仓管理、离场和资金管理的精确条件。我们来制定上述条件。

1. 确认信号

本文的目的不仅是展示基于 Donchian 通道的交易示例, 而且还要分析它们在现代市场的 "生存能力"。因此, 我们来选择一些确认指标。这些指标中的每一个将与 Donchian 通道组合。因此, 我们基于所分析的基础策略获得了几种交易策略。为了建立串联, 我从以下指标中选出了三个确认信号:

  • 平均方向走势指数 (ADX)。与这个信号的结合将使我们能够评估当前趋势的状态和强度, 然后在通道边界突破时入场。
  • 移动平均收敛/发散 (MACD)。MACD 将监控当前的趋势。当价格突破通道边界时, 我们会检查这个突破是顺应市场方向还是意外的价格尖峰 (一个假突破)。
  • 第三个确认将由两个指标产生: 平均速度 (以每分钟点数为单位的平均价格变化速度) 和 X4Period_RSI_Arrows (由具有不同周期的四个 RSI 组成的信号量指标)。

2. 正式化交易系统

我们需要找到这三个策略的共同参数: 我们选择它们, 以便提供可能的最大测试周期。因此, 我们定义测试期间将要控制的参数:

  • 时间帧。时间帧选项将使我们能够对不同时期的策略进行测试, 这些策略可以体现具体的行情阶段, 包括弱走势和调整, 以及长期趋势, 这在较高的时间帧上也许是明显的。
  • 资金管理。依据交易结果的若干种仓量选择方案将使我们能够揭示复利投资是否有效, 或固定手数交易更方便。
  • 开仓管理。若干开仓管理选项将有助于我们判断当前有利走势的盈利百分比。
  • 指标参数。在不同模式下测试所选择的策略将有助于我们找到最佳参数, 它会令我们的系统更有效, 并且也能检测出令我们的系统无法盈利的参数。

接下来, 我们需要为我们的交易策略制定入场条件:

#1. Donchian 通道 + ADX。

系统条件:

  • 价格突破 Donchian 通道的上下边界。
  • ADX 趋势强度的主线必须高于预设的 ADX 级别。
  • 如果价格突破通道边界向上, DI+ 线必须高于 DI-。如果向下, DI- 必须高于 DI+。

图例.2. 策略 Donchian 通道+ADX 的入场条件

#2. Donchian 通道 + MACD。 

系统条件:

  • 价格突破 Donchian 通道的上下边界。
  • 以及, 直方图的数值高于零轴, 且高于信号线则买入。
  • 直方图的数值低于零轴, 且低于信号线则卖出。

图例.3. 策略 Donchian 通道+MACD 的入场条件

#3. Donchian 通道 + (平均速度和 X4Period_RSI_Arrows)。

此处是系统条件:

  • 价格突破 Donchian 通道的上下边界。
  • 平均速度值必须大于 1, 信号量 RSI 必须在蜡烛条上方至少有 2 个标记点才可卖出, 若在蜡烛条下方则买入。

图例.4. 策略 Donchian 通道+(平均速度和 X4Period_RSI_Arrows) 的入场条件

实现交易策略

为了便于测试和优化, 所有这些类型的策略将在一个 EA 中实现。EA 参数将提供四种策略的选择:

//+------------------------------------------------------------------+
//|  策略类型的枚举声明                                                 |
//+------------------------------------------------------------------+
enum Strategy
  {
   Donchian=0,
   Donchian_ADX,
   Donchian_MACD,
   Donchian_AvrSpeed_RSI
  };

  • Donchian — 突破策略仅使用 Donchian 通道。
  • Donchian_ADX — 策略配合 ADX 趋势强度指标作为滤波器。
  • Donchian_MACD —策略配合 MACD 振荡器作为滤波器。
  • Donchian_AvrSpeed_RSI — 策略配合价格变动率以及不同周期的信号量 RSI 作为滤波器。

之后我们声明 Donchian 通道的极值类型, 我们要测试:

//+------------------------------------------------------------------+
//|  极值类型的枚举声明                                                 |
//+------------------------------------------------------------------+
enum Applied_Extrem
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };

此外, 专家交易系统将提供三种可能使用的资金管理系统:

//+------------------------------------------------------------------+
//|  手数计算类型枚举                                                   |
//+------------------------------------------------------------------+
enum MarginMode
  {
   FREEMARGIN=0,     //资金管理的可用保证金
   BALANCE,          //资金管理的余额
   LOT               //手数常量
  };

  • FREEMARGIN — 基于可用保证金计算基本手数。
  • BALANCE — 基于当前余额计算手数。
  • LOT — 固定手数。这是手工指定的基本手数。

开仓管理系统将基于 通用尾随止损 专家交易系统。在其基础上, 开发了 CTrailing 类, 位于 Trailing.mqh 文件。

仓位管理方法和输入参数如下:

enum   TrallMethod
  {
   b=1,     //基于蜡烛条极值
   c=2,     //使用分形
   d=3,     //基于 ATR 指标
   e=4,     //基于抛物线指标
   f=5,     //基于均线指标
   g=6,     //盈利的 %
   i=7,     //使用点数
  };


//--- 尾随停止参数

input bool                 UseTrailing=true;                            //使用尾随停止
input bool                 VirtualTrailingStop=false;                   //虚拟尾随停止
input TrallMethod          parameters_trailing=7;                       //尾随停止方法

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //指标时间帧

input int                  StepTrall=50;                                //尾随停止 (单位: 点数)
input int                  StartTrall=100;                              //最小尾随盈利 (单位: 点数)

input int                  period_ATR=14;                               //ATR 周期 (方法 #3)

input double               step_PSAR=0.02;                              //PSAR 步长 (方法 #4)
input double               maximum_PSAR=0.2;                            //最大 PSAR (方法 #4)

input int                  ma_period=34;                                //MA 周期 (方法 #5)
input ENUM_MA_METHOD       ma_method=MODE_SMA;                          //均化方法 (方法 #5)
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;                   //价格类型 (方法 #5)

input double               PercentProfit=50;                            //盈利百分比 (方法 #6)

为了便于在可视化测试和演示操作期间显示所选参数, 我使用 图形界面 系列中提供的信息添加了面板。它提供所选设置的主要类型:

  • 策略类型
  • 尾随停止类型
  • 资金管理类型
  • 止盈
  • 止损

为了显示, 开发了 CDonchianUI 类, 它已在 DonchianUI.mqh 文件里提供。如果愿意的话, 您可以添加自己的值。面板如图例.5 所示

图例.5. Donchian 专家系统主要模式的信息面板。

测试

在展开测试之前, 我们需要确定其条件。基本条件在下表中汇总:

参数 数值
测试间隔 01.03.2016 — 01.03.2017
行情 EURUSD/GOLD-6.17
执行 基于真实报价的每笔报价
初始入金 1000 USD
杠杆  1:500
服务器 MetaQuotes

专家交易系统以 4 合 1 的形式呈现, 因此设置的所有可能组合选择很广泛, 但无需赘述。我们列出主要的设置模块, 这些设置将在测试过程中进行组合, 一些单独的参数将被优化。为能更好地理解, 下表提供了在测试期间将会更改的专家系统模式:

专家系统模块 测试模式
资金管理 固定手数/余额
工作时间帧 M30 - D1
仓位管理 尾随停止/无
策略类型 Donchian/Donchian+ADX/Donchian+MACD/Donchian+Avr.Speed+RSI

我会解释为什么资金管理只使用两种模式: 在测试期间, 入金只能由我们的专家系统加载, 一次只能存在一笔持仓, 所以 余额可用保证金 模式其实是一样的。 

1. Donchian 通道交易策略。

我们的策略首先从纯粹的 Donchian 通道开始。


图例. 6. 应用于 EURUSD 上的 Donchian 交易策略。

当针对 EURUSD 进行策略测试和优化过程中, 我们得出以下结论:

  • 在给定范围内, 在 M30-H1 上获得最佳结果。
  • 指标的运行时间帧设为 10-12。
  • 在所用的价格方面, 最好的结果是在 CLOSE_HIGH_LOW 模式下获得的。
  • 与未使用尾随功能相比, 使用后的效率非常低。
  • 一般结论: 仅基于 Donchian 通道的策略就是一个经典的趋势策略, 在强劲的行情走势当中有连串的盈利交易。
//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //工作时间帧
input bool                 InfoPanel=false;                             //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=10;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian;                        //所选策略

//--- 尾随停止参数

input bool                 UseTrailing=false;                           //使用尾随停止



与货币对相比, 针对 GOLD-6.17 期货在相同周期和时间帧上进行测试 - M30-H1, 产生了更佳的结果。 


图例.7. Donchian 交易策略, 针对 GOLD-6.17

//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //工作时间帧
input bool                 InfoPanel=false;                             //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=12;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian;                        //所选策略
....

//--- 尾随停止参数

input bool                 UseTrailing=true;                            //使用尾随停止
input bool                 VirtualTrailingStop=false;                   //虚拟尾随停止
input TrallMethod          parameters_trailing=7;                       //尾随停止方法

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //指标时间帧

input int                  StepTrall=50;                                //尾随停止步长 (单位: 点数)
input int                  StartTrall=100;                              //最小尾随盈利 (单位: 点数)

2. Donchian 通道与 ADX 的交易策略。

利用 ADX 作为 Donchian 通道信号的滤波器, 此策略经测试后, 我们得出以下结论:

  • EA 执行的交易较少, 这符合预期。 
  • 最佳的工作时间帧是 M30。
  • 盈利交易的百分比较高。
  • 最有效的通道周期为 18, ADX 周期为 10。
  • 再次, 通道最有效的价格是 CLOSE_HIGH_LOW。


图例.8. 应用于 EURUSD 上的 Donchian + ADX 交易策略。

//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //工作时间帧
input bool                 InfoPanel=false;                             //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=18;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian_ADX;                    //所选策略
//--- ADX 指标参数

input int                  ADX_period=10;
input double               ADX_level=20;

期货测试显示, 在 H1 时间帧, Donchian 通道周期等于 10, ADX 周期等于 8, 结果与以前的策略相似。再次, 根据收盘价绘制通道时, 获得最佳结果。


图例.9. Donchian + ADX 交易策略, 针对 GOLD-6.17

//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //工作时间帧
input bool                 InfoPanel=false;                             //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=18;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian_ADX;                    //所选策略
//--- ADX 指标参数

input int                  ADX_period=8;
input double               ADX_level=20;

//--- 尾随停止参数

input bool                 UseTrailing=true;                            //使用尾随停止
input bool                 VirtualTrailingStop=false;                   //虚拟尾随停止
input TrallMethod          parameters_trailing=7;                       //尾随停止方法

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //指标时间帧

input int                  StepTrall=50;                                //尾随停止 (单位: 点数)
input int                  StartTrall=100;                              //最小尾随盈利 (单位: 点数)

3. Donchian 通道与 MACD 的交易策略。

利用 MACD 作为 Donchian 通道信号的滤波器, 此策略经测试后, 我们得出以下结论:

  • 再一次, 在 H1 时间帧上获得了最佳结果。
  • 改变 MACD 参数未产生任何严重影响。


图例 10. 应用于 EURUSD 上的 Donchian + MACD 交易策略。

//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //工作时间帧
input bool                 InfoPanel=true;                              //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=16;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian_MACD;                   //所选策略

//--- MACD 指标参数

input int                  InpFastEMA=12;                               //快速 EMA 周期
input int                  InpSlowEMA=26;                               //慢速 EMA 周期
input int                  InpSignalSMA=9;                              //信号 SMA 周期
input ENUM_APPLIED_PRICE   InpAppliedPrice=PRICE_CLOSE;                 //应用价格

当针对期货进行测试时, 最佳结果是在 Donchian 通道周期等于 10, 与以前的策略一样。与未使用尾随功能相比, 使用后的效率更高。


图例.11. Donchian + MACD 交易策略, 针对 GOLD-6.17

//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //工作时间帧
input bool                 InfoPanel=true;                              //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=10;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian_MACD;                   //所选策略

//--- MACD 指标参数

input int                  InpFastEMA=12;                               //快速 EMA 周期
input int                  InpSlowEMA=26;                               //慢速 EMA 周期
input int                  InpSignalSMA=9;                              //信号 SMA 周期
input ENUM_APPLIED_PRICE   InpAppliedPrice=PRICE_CLOSE;                 //应用价格

在使用复杂滤波器处理下一个策略之前, 我们应基于上述策略得出的中间结论, 使用经典指标。测试的策略在 EURUSD 上没有太大差异。然而, ADX 和 MACD 滤波器减少了入场数量, 并提升了最终结果。由于期货市场的特征及其波动性与货币对有很大不同, Donchian 信号的过滤没有提供变化。然而, 与货币对相比, 期货的总体结果更好。

4. Donchian 通道与平均速度+X4Period_RSI_Arrows。

Donchian 通道与复杂滤波器组合的策略, 经过优化之后, 我们确定了有关不同交易条件下策略使用的结论。由于期货价格波动较小, 此策略的选择性过高。


图例.12. 应用于 EURUSD 上的 Donchian + 平均速度+X4Period_RSI_Arrows。

//+------------------------------------------------------------------+
//| 专家交易系统输入参数                                                 |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA 注释
input double               Inp_Lot=0.01;                                //基本手数
input MarginMode           Inp_MMode=LOT;                               //资金管理
input int                  Inp_MagicNum=555;                            //魔幻数字
input int                  Inp_StopLoss=400;                            //止损 (单位: 点数)
input int                  Inp_TakeProfit=600;                          //止盈 (单位: 点数)
input int                  Inp_Deviation = 20;                          //偏离
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //工作时间帧
input bool                 InfoPanel=true;                              //显示信息面板
//--- Donchian 通道系统指标参数

input uint                 DonchianPeriod=12;                           //通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //极值类型
//--- 选择策略

input Strategy             CurStrategy=Donchian_AvrSpeed_RSI;           //所选策略

//--- 平均速度指标参数

input int                  Inp_Bars=1;                                  //柱线数量
input ENUM_APPLIED_PRICE   Price=PRICE_CLOSE;                           //应用价格
input double               Trend_lev=2;                                 //趋势级别
//--- x4period_rsi_arrows 指标参数

input uint                 RSIperiod1=7;                                //RSI_1 的周期
input uint                 RSIperiod2=12;                               //RSI_2 的周期
input uint                 RSIperiod3=18;                               //RSI_3  的周期
input uint                 RSIperiod4=32;                               //RSI_4  的周期
input ENUM_APPLIED_PRICE   Applied_price=PRICE_WEIGHTED;                //应用价格
input uint                 rsiUpperTrigger=62;                          //超买级别
input uint                 rsiLowerTrigger=38;                          //超卖级别
//--- 尾随停止参数

input bool                 UseTrailing=false;                           //使用尾随停止


小结

基于 Donchian 通道的交易系统经测试之后, 我们对策略特点做出以下结论和说明:

  • 基于通道的交易行为是一种经典的顺势交易策略, 可以通过使用其它滤波器进行改善。
  • 期货市场得到的测试结果更佳。
  • 与经典的基于最高价和最低价计算通道边界不同, CLOSE_HIGH_LOW (收盘价) 显示更好的结果。这与测试品种有关联 — EURUSD 价格尖峰行情的特征是具有长影线的形式。这种尖峰扭曲了通道边界, 而收盘价格的倾向更为客观。
  • 而且, 最佳结果出现在 М30 — H1 时间帧, 而非日线。
  • 有效的周期范围为 10 至 20 根蜡烛条。

结论

以下附带的存档包含所有描述过的文件, 并正确分类到文件夹中。若要正确的操作, 您应将 MQL5 文件夹保存到终端的根目录中。我们还使用了相关的 文章 中提供的图形界面库 EasyAndFastGUI

文章中使用的程序:

#
 名称
类型
描述
1
DonchianExpert.mq5 专家交易系统
 一款复杂的专家交易系统, 组合了基于 Donchian 通道的 4 种策略。
2
DonchianUI.mqh 代码库  GUI 类
3
TradeFunctions.mqh 代码库  交易函数类
4
Trailing.mqh 代码库  开仓管理类
5
average_speed.mq5 指标  均价变化速度指标
6
donchian_channels_system.mq5 指标  Donchian 通道, 显示突破通道边界的蜡烛条
7 x4period_rsi_arrows.mq5 指标  一款信号量指标, 包含四个不同周期的 RSI。



本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/3146

附加的文件 |
MQL5.zip (625.3 KB)
最近评论 | 前往讨论 (21)
Vladimir Karputov
Vladimir Karputov | 7 3月 2020 在 18:39
ruspbtrader:

这篇文章是很久以前写的 - 从那时起,MQL5 语言 引入了系统函数 iHigh、iLow ...

在代码中注释这些函数:

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
//double iLow(string symbol,ENUM_TIMEFRAMES tf,int index)
// {
// if(index < 0) return(-1);
// double Arr[];
// if(CopyLow(symbol,tf, index, 1, Arr)>0) return(Arr[0]);
// else return(-1);
// }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
//double iHigh(string symbol,ENUM_TIMEFRAMES tf,int index)
// {
// if(index < 0) return(-1);
// double Arr[];
// if(CopyHigh(symbol,tf, index, 1, Arr)>0) return(Arr[0]);
// else return(-1);
// }
stasTraider01
stasTraider01 | 7 4月 2020 在 11:44

我注释掉了上面建议的行,结果出现了以下错误:

TrailingStop' - 意外标记,可能类型丢失? Trailing.mqh 114 12

TrailingStop' -函数 已定义且类型不同 Trailing.mqh 114 12

Sathish Collection
Sathish Collection | 8 7月 2023 在 05:20

您好、

我遇到了下面这种错误。请分享修复后的代码。


将使用'ENUM_SORT_MODE::SORT_ASCENDING'而不是'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1658 53

从'枚举 ENUM_SORT_MODE'隐式转换为'枚举 ENUM_SORT_MODE' CanvasTable.mqh 1658 53


谢谢、

Sathish

Sathish Collection
Sathish Collection | 8 7月 2023 在 05:32

你好,Fexception、

请修复 MT5 编译时出现的以下错误。


'DonchianExpert.mq5' DonchianExpert.mq5 1 1

'TradeFunctions.mqh' TradeFunctions.mqh 1 1

'PositionInfo.mqh' PositionInfo.mqh 1 1

'Object.mqh' Object.mqh 1 1

'StdLibErr.mqh' StdLibErr.mqh 1 1

'Trailing.mqh' Trailing.mqh 1 1

'DonchianUI.mqh' DonchianUI.mqh 1 1

'WndEvents.mqh' WndEvents.mqh 1 1

'Defines.mqh' Defines.mqh 1 1

'WndContainer.mqh' WndContainer.mqh 1 1

'Window.mqh' Window.mqh 1 1

'ElementBase.mqh' ElementBase.mqh 1 1

'Mouse.mqh' Mouse.mqh 1 1

'Objects.mqh' Objects.mqh 1 1

'Enums.mqh' Enums.mqh 1 1

'Fonts.mqh' Fonts.mqh 1 1

'LineChart.mqh' LineChart.mqh 1 1

'ChartCanvas.mqh' ChartCanvas.mqh 1 1

'CustomCanvas.mqh' CustomCanvas.mqh 1 1

'Colors.mqh' Colors.mqh 1 1

'FileBin.mqh' FileBin.mqh 1 1

'File.mqh' File.mqh 1 1

'Rect.mqh' Rect.mqh 1 1

'ChartObjectsBmpControls.mqh' ChartObjectsBmpControls.mqh 1 1

'ChartObject.mqh' ChartObject.mqh 1 1

'ArrayInt.mqh' ArrayInt.mqh 1 1

'Array.mqh' Array.mqh 1 1

'ArrayDouble.mqh' ArrayDouble.mqh 1 1

'ArrayString.mqh' ArrayString.mqh 1 1

'ArrayObj.mqh' ArrayObj.mqh 1 1

'ChartObjectSubChart.mqh' ChartObjectSubChart.mqh 1 1

'ChartObjectsTxtControls.mqh' ChartObjectsTxtControls.mqh 1 1

'Chart.mqh' Chart.mqh 1 1

'MenuBar.mqh' MenuBar.mqh 1 1

'Element.mqh' Element.mqh 1 1

'MenuItem.mqh' MenuItem.mqh 1 1

'' - 需要双引号 MenuItem.mqh 228 119

'ContextMenu.mqh' ContextMenu.mqh 1 1

'SeparateLine.mqh' SeparateLine.mqh 1 1

'SimpleButton.mqh' SimpleButton.mqh 1 1

'IconButton.mqh' IconButton.mqh 1 1

'SplitButton.mqh' SplitButton.mqh 1 1

'ButtonsGroup.mqh' ButtonsGroup.mqh 1 1

'IconButtonsGroup.mqh' IconButtonsGroup.mqh 1 1

'RadioButtons.mqh' RadioButtons.mqh 1 1

'StatusBar.mqh' StatusBar.mqh 1 1

'Tooltip.mqh' Tooltip.mqh 1 1

'ListView.mqh' ListView.mqh 1 1

'Scrolls.mqh' Scrolls.mqh 1 1

'ComboBox.mqh' ComboBox.mqh 1 1

'CheckBox.mqh' CheckBox.mqh 1 1

'SpinEdit.mqh' SpinEdit.mqh 1 1

'CheckBoxEdit.mqh' CheckBoxEdit.mqh 1 1

'CheckComboBox.mqh' CheckComboBox.mqh 1 1

'Slider.mqh' Slider.mqh 1 1

'DualSlider.mqh' DualSlider.mqh 1 1

'LabelsTable.mqh' LabelsTable.mqh 1 1

'Table.mqh' Table.mqh 1 1

'CanvasTable.mqh' CanvasTable.mqh 1 1

'Pointer.mqh' Pointer.mqh 1 1

'Tabs.mqh' Tabs.mqh 1 1

'IconTabs.mqh' IconTabs.mqh 1 1

'Calendar.mqh' Calendar.mqh 1 1

'DateTime.mqh' DateTime.mqh 1 1

'DropCalendar.mqh' DropCalendar.mqh 1 1

'TreeItem.mqh' TreeItem.mqh 1 1

'TreeView.mqh' TreeView.mqh 1 1

'FileNavigator.mqh' FileNavigator.mqh 1 1

'ColorButton.mqh' ColorButton.mqh 1 1

'ColorPicker.mqh' ColorPicker.mqh 1 1

'ProgressBar.mqh' ProgressBar.mqh 1 1

'IndicatorBar.mqh' IndicatorBar.mqh 1 1

'LineGraph.mqh' LineGraph.mqh 1 1

'StandardChart.mqh' StandardChart.mqh 1 1

'TextBox.mqh' TextBox.mqh 1 1

'Keys.mqh' Keys.mqh 1 1

'KeyCodes.mqh' KeyCodes.mqh 1 1

'TimeCounter.mqh' TimeCounter.mqh 1 1

'TextEdit.mqh' TextEdit.mqh 1 1

'TextLabel.mqh' TextLabel.mqh 1 1

'Picture.mqh' Picture.mqh 1 1

'PicturesSlider.mqh' PicturesSlider.mqh 1 1

'TimeEdit.mqh' TimeEdit.mqh 1 1

'CheckBoxList.mqh' CheckBoxList.mqh 1 1

'TrailingStop' - 意外标记,可能缺少类型? Trailing.mqh 114 12

函数'CTrailing::TrailingStop'已定义,且有不同的返回类型 Trailing.mqh 114 12

参见函数 'CTrailing::TrailingStop' 的声明 Trailing.mqh 83 22

iLow' - 覆盖系统函数 Trailing.mqh 241 8

iHigh' - 覆盖系统函数 Trailing.mqh 251 8

标识符'ENUM_SORT_MODE'已被使用 Enums.mqh 104 6

'advisor.bmp' 作为资源 "::Images\EasyAndFastGUI\Icons\bmp16\advisor.bmp" advisor.bmp 1 1

'indicator.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\indicator.bmp" indicator.bmp 1 1

'script.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\script.bmp" script.bmp 1 1

'Close_red.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\Close_red.bmp" Close_red.bmp 1 1

Close_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\Close_black.bmp" Close_black.bmp 1 1

'DropOn_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\DropOn_black.bmp" DropOn_black.bmp 1 1

'DropOn_white.bmp' as resource "::Images\EasyAndFastGUI\Controls\DropOn_white.bmp" DropOn_white.bmp 1 1

'DropOff_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\DropOff_black.bmp" DropOff_black.bmp 1 1

'DropOff_white.bmp' as resource "::Images\EasyAndFastGUI\Controls\DropOff_white.bmp" DropOff_white.bmp 1 1

'Help_dark.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\Help_dark.bmp" Help_dark.bmp 1 1

'Help_light.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\Help_light.bmp" Help_light.bmp 1 1

'CheckBoxOn_min_gray.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOn_min_gray.bmp" CheckBoxOn_min_gray.bmp 1 1

'CheckBoxOn_min_white.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOn_min_white.bmp" CheckBoxOn_min_white.bmp 1 1

RArrow.bmp' as resource "::Images\EasyAndFastGUI\Controls\RArrow.bmp" RArrow.bmp 1 1

'RArrow_white.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\RArrow_white.bmp" RArrow_white.bmp 1 1

DropOff.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\DropOff.bmp" DropOff.bmp 1 1

radio_button_on.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\radio_button_on.bmp" radio_button_on.bmp 1 1

radio_button_off.bmp' as resource "::Images\EasyAndFastGUI\Controls\radio_button_off.bmp" radio_button_off.bmp 1 1

radio_button_on_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\radio_button_on_locked.bmp" radio_button_on_locked.bmp 1 1

radio_button_off_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\radio_button_off_locked.bmp" radio_button_off_locked.bmp 1 1

'UArrow_min.bmp' as resource "::Images\EasyAndFastGUI\Controls\UArrow_min.bmp" UArrow_min.bmp 1 1

'UArrow_min_dark.bmp' as resource "::Images\EasyAndFastGUI\Controls\UArrow_min_dark.bmp" UArrow_min_dark.bmp 1 1

'LArrow_min.bmp' as resource "::Images\EasyAndFastGUI\Controls\LArrow_min.bmp" LArrow_min.bmp 1 1

'LArrow_min_dark.bmp' as resource "::Images\EasyAndFastGUI\Controls\LArrow_min_dark.bmp" LArrow_min_dark.bmp 1 1

'DArrow_min.bmp' as resource "::Images\EasyAndFastGUI\Controls\DArrow_min.bmp" DArrow_min.bmp 1 1

'DArrow_min_dark.bmp' as resource "::Images\EasyAndFastGUI\Controls\DArrow_min_dark.bmp" DArrow_min_dark.bmp 1 1

RArrow_min.bmp' as resource "::Images\EasyAndFastGUI\Controls\RArrow_min.bmp" RArrow_min.bmp 1 1

RArrow_min_dark.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\RArrow_min_dark.bmp" RArrow_min_dark.bmp 1 1

'CheckBoxOn.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOn.bmp" CheckBoxOn.bmp 1 1

'CheckBoxOff.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOff.bmp" CheckBoxOff.bmp 1 1

'CheckBoxOn_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOn_locked.bmp" CheckBoxOn_locked.bmp 1 1

'CheckBoxOff_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOff_locked.bmp" CheckBoxOff_locked.bmp 1 1

SpinInc.bmp' as resource "::Images\EasyAndFastGUI\Controls\SpinInc.bmp" SpinInc.bmp 1 1

'SpinInc_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\SpinInc_blue.bmp" SpinInc_blue.bmp 1 1

SpinDec.bmp' as resource "::Images\EasyAndFastGUI\Controls\SpinDec.bmp" SpinDec.bmp 1 1

SpinDec_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\SpinDec_blue.bmp" SpinDec_blue.bmp 1 1

'SORT_ASCEND' - 不能使用不适当的枚举器 Table.mqh 220 88

SORT_ASCEND' - 不能使用不适当的枚举器 Table.mqh 1686 80

'pointer_x_rs.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_x_rs.bmp" pointer_x_rs.bmp 1 1

pointer_x_rs_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_x_rs_blue.bmp" pointer_x_rs_blue.bmp 1 1

pointer_y_rs.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_y_rs.bmp" pointer_y_rs.bmp 1 1

pointer_y_rs_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_y_rs_blue.bmp" pointer_y_rs_blue.bmp 1 1

pointer_xy1_rs.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_xy1_rs.bmp" pointer_xy1_rs.bmp 1 1

pointer_xy1_rs_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_xy1_rs_blue.bmp" pointer_xy1_rs_blue.bmp 1 1

pointer_xy2_rs.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_xy2_rs.bmp" pointer_xy2_rs.bmp 1 1

pointer_xy2_rs_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_xy2_rs_blue.bmp" pointer_xy2_rs_blue.bmp 1 1

pointer_x_rs_rel.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_x_rs_rel.bmp" pointer_x_rs_rel.bmp 1 1

pointer_y_rs_rel.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_y_rs_rel.bmp" pointer_y_rs_rel.bmp 1 1

pointer_x_scroll.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_x_scroll.bmp" pointer_x_scroll.bmp 1 1

pointer_x_scroll_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_x_scroll_blue.bmp" pointer_x_scroll_blue.bmp 1 1

pointer_y_scroll.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_y_scroll.bmp" pointer_y_scroll.bmp 1 1

pointer_y_scroll_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_y_scroll_blue.bmp" pointer_y_scroll_blue.bmp 1 1

pointer_text_select.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_text_select.bmp" pointer_text_select.bmp 1 1

SORT_ASCEND' - 不能使用不适当的枚举器 CanvasTable.mqh 309 88

SORT_ASCEND' - 无法使用不适当的枚举器 CanvasTable.mqh 1633 86

'LeftTransp_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\LeftTransp_black.bmp" LeftTransp_black.bmp 1 1

'LeftTransp_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\LeftTransp_blue.bmp" LeftTransp_blue.bmp 1 1

'RArrow_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\RArrow_black.bmp" RArrow_black.bmp 1 1

'RArrow_blue.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\RArrow_blue.bmp" RArrow_blue.bmp 1 1

calendar_today.bmp' 作为资源 "::Images\EasyAndFastGUI\Controls\calendar_today.bmp" calendar_today.bmp 1 1

calendar_drop_on.bmp' as resource "::Images\EasyAndFastGUI\Controls\calendar_drop_on.bmp" calendar_drop_on.bmp 1 1

'calendar_drop_off.bmp' as resource "::Images\EasyAndFastGUI\Controls\calendar_drop_off.bmp" calendar_drop_off.bmp 1 1

'calendar_drop_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\calendar_drop_locked.bmp" calendar_drop_locked.bmp 1 1

'RArrow_rotate_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\RArrow_rotate_black.bmp" RArrow_rotate_black.bmp 1 1

'RArrow_rotate_white.bmp' as resource "::Images\EasyAndFastGUI\Controls\RArrow_rotate_white.bmp" RArrow_rotate_white.bmp 1 1

'folder_w10.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\folder_w10.bmp" folder_w10.bmp 1 1

text_file_w10.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\text_file_w10.bmp" text_file_w10.bmp 1 1

'arrow_down.bmp' 作为资源 "::Images\EasyAndFastGUI\Icons\bmp16\arrow_down.bmp" arrow_down.bmp 1 1

'arrow_up.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\arrow_up.bmp" arrow_up.bmp 1 1

'stop_gray.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\stop_gray.bmp" stop_gray.bmp 1 1

'no_image.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp64\noo_image.bmp" no_image.bmp 1 1

ArrowLeft.bmp' as resource "::Images\EasyAndFastGUI\Controls\ArrowLeft.bmp" ArrowLeft.bmp 1 1

ArrowLeft_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\ArrowLeft_blue.bmp" ArrowLeft_blue.bmp 1 1

ArrowRight.bmp' as resource "::Images\EasyAndFastGUI\Controls\ArrowRight.bmp" ArrowRight.bmp 1 1

'ArrowRight_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\ArrowRight_blue.bmp" ArrowRight_blue.bmp 1 1

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 278 36

可能是 2 个函数之一 Trailing.mqh 278 36

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 278 36

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iHigh' - 含混调用具有相同参数的重载函数 Trailing.mqh 287 36

可能是 2 个函数之一 Trailing.mqh 287 36

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 287 36

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iLow' - 含混调用具有相同参数的重载函数 Trailing.mqh 299 19

可能是 2 个函数之一 Trailing.mqh 299 19

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 299 19

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 299 50

可能是 2 个函数之一 Trailing.mqh 299 50

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 299 50

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 300 19

可能是 2 个函数之一 Trailing.mqh 300 19

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 300 19

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 300 50

可能是 2 个函数之一 Trailing.mqh 300 50

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 300 50

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 301 19

可能是 2 个函数之一 Trailing.mqh 301 19

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 301 19

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 301 50

可能是 2 个函数之一 Trailing.mqh 301 50

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 301 50

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iLow"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 303 23

可能是 2 个函数之一 Trailing.mqh 303 23

内置:double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 303 23

double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8

iHigh' - 含混调用具有相同参数的重载函数 Trailing.mqh 317 19

可能是 2 个函数之一 Trailing.mqh 317 19

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 317 19

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iHigh"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 317 51

可能是 2 个函数之一 Trailing.mqh 317 51

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 317 51

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iHigh"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 318 19

可能是 2 个函数之一 Trailing.mqh 318 19

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 318 19

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iHigh"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 318 51

可能是 2 个函数之一 Trailing.mqh 318 51

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 318 51

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iHigh"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 319 19

可能是 2 个函数之一 Trailing.mqh 319 19

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 319 19

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iHigh"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 319 51

可能是 2 个函数之一 Trailing.mqh 319 51

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 319 51

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

iHigh"--对具有相同参数的重载函数的模糊调用 Trailing.mqh 321 23

可能是 2 个函数之一 Trailing.mqh 321 23

内置:double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 321 23

double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8

expression not boolean ChartCanvas.mqh 129 53

method' - 未声明的标识符 MenuItem.mqh 228 110

'method'--某些运算符 MenuItem.mqh 228 110

从'枚举 ENUM_SORT_MODE'隐式转换为'枚举 ENUM_SORT_MODE' Table.mqh 275 46

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 275 46

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 275 46

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 275 46

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 975 30

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 975 30

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 975 30

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 975 30

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1070 113

将使用'ENUM_SORT_MODE::SORT_DESCENDING'代替'ENUM_SORT_MODE::SORT_DESCEND' Table.mqh 1070 113

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1071 29

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1071 29

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1071 29

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1071 29

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1073 29

将使用'ENUM_SORT_MODE::SORT_DESCENDING'代替'ENUM_SORT_MODE::SORT_DESCEND' Table.mqh 1073 29

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1073 29

将使用'ENUM_SORT_MODE::SORT_DESCENDING'代替'ENUM_SORT_MODE::SORT_DESCEND' Table.mqh 1073 29

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1081 47

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1081 47

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1703 53

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1703 53

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 Table.mqh 1711 53

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1711 53

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 444 58

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 444 58

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 444 58

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 444 58

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 1050 30

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1050 30

从'枚举 ENUM_SORT_MODE'隐式转换为'枚举 ENUM_SORT_MODE' CanvasTable.mqh 1050 30

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1050 30

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 1360 113

将使用'ENUM_SORT_MODE::SORT_DESCENDING'代替'ENUM_SORT_MODE::SORT_DESCEND' CanvasTable.mqh 1360 113

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 1361 29

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1361 29

从'枚举 ENUM_SORT_MODE'隐式转换为'枚举 ENUM_SORT_MODE' CanvasTable.mqh 1361 29

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1361 29

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 1363 29

将使用'ENUM_SORT_MODE::SORT_DESCENDING'代替'ENUM_SORT_MODE::SORT_DESCEND' CanvasTable.mqh 1363 29

从'枚举 ENUM_SORT_MODE'隐式转换为'枚举 ENUM_SORT_MODE' CanvasTable.mqh 1363 29

将使用'ENUM_SORT_MODE::SORT_DESCENDING'代替'ENUM_SORT_MODE::SORT_DESCEND' CanvasTable.mqh 1363 29

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 1650 53

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1650 53

从'枚举 ENUM_SORT_MODE'到'枚举 ENUM_SORT_MODE' 的隐式转换 CanvasTable.mqh 1658 53

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1658 53

从'枚举 ENUM_SORT_MODE'隐式转换为'枚举 ENUM_SORT_MODE' CanvasTable.mqh 2204 44

将使用'ENUM_SORT_MODE::SORT_ASCENDING'代替'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 2204 44

28 个错误,25 个警告 29 26


谢谢、

Sathish

Guru Maximux
Guru Maximux | 18 6月 2024 在 18:29

更名为枚举 ENUM_SORT_MODE_

MQL5 酷宝典 - 创建的环形缓存用于快速计算滑动窗口中的指标 MQL5 酷宝典 - 创建的环形缓存用于快速计算滑动窗口中的指标
在滑动窗口中执行计算时, 环形缓存是排布数据最简单和最有效的方式。本文描述其算法, 并展示它如何简化滑动窗口中的计算, 以令其更有效率。
跨平台专家交易系统: 订单管理器 跨平台专家交易系统: 订单管理器
本文将要讨论为跨平台专家交易系统创建的订单管理器。订单管理器负责由专家系统建立的订单或仓位的入场和离场, 以及为所有两个版本保留这些交易的可用独立记录。
根据品种和 EA 的 ORDER_MAGIC 分析余额/净值图形 根据品种和 EA 的 ORDER_MAGIC 分析余额/净值图形
随着对冲的引入, MetaTrader 5 提供了一个极佳的机会, 可以在一个交易账户内同时利用若干个专家交易系统进行交易。当一个策略是可盈利, 而第二个泽亏损的时候, 盈利图也许会徘徊在零值附近。在此情况下, 分别为每个交易策略构建余额和净值图形是十分有益的。
趋势有多长? 趋势有多长?
本文重点介绍了几种用于趋势识别的方法,目标是确定趋势相对平盘市场的持续时间。理论上,趋势与平盘的比例被认为是30%对70%,而这正是我们将要验证的。