ドンチャンチャネルを使った取引

Alexander Fedosov | 6 6月, 2017


内容

はじめに

ドンチャンチャネルは1970年代初頭に開発されたテクニカル指標です。最初はMoving Channelと呼ばれていましたが、後にその作者リチャード・ドンチャンの名前に変更されました。この指標は、ある価格帯に基づいた最近の安値と高値を用いて市場のボラティリティを測定します。ドンチャンチャネルは2本の線で描かれ、価格はその間で変動します。売りシグナルと買いシグナルは、価格がそれぞれ下と上のチャネル境界線を破るときに生成されます。ドンチャンは、価格範囲の20(1か月にある平日の数の平均)とD1時間枠を使用したチャネルの描画を推奨しました。


ドンチャンチャネルの操作原理と適用

ここでは車輪を再発明したりこの指標のプログラムを再実装するつもりはありません。ドンチャンチャネルシステムの修正版は使用します。これはこのシステムに基づいた指標のスタイルを完全に特徴付けるものです。図1のピンクと青のローソク足はチャネル境界が破られている領域を示しており、この場所での市場参入が想定されています。


図1 ドンチャンチャネルに基づいた操作原理と参入場所

チャートに記されている赤い部分にご注目ください。これらはドンチャンチャネルの主な欠点、いわゆる「偽ブレイクアウト」を示します。価格はその後範囲内に戻ります。したがって、追加の確認なしにドドンチャンチャネルのみを使用して市場に参入することは無謀です。この指標の概念をよりよく理解するために、この修正版のパラメーターと実装を分析してみましょう。

//+----------------------------------------------+
//| 指標入力パラメータ                             |
//+----------------------------------------------+
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;
        }


取引システムの開発

戦略を策定する際には、偽ブレイクアウトだけでなく、ドンチャンチャネルがトレンド戦略で最も頻繁に使用されるという事実も考慮する必要があります。参入シグナルはチャネルブレイクアウトによって形成されるため、チャネル境界外の誤ったエグジットを排除するためにはシグナル確認のために少なくとも1つのトレンド指標が使用される必要があります。また、参入、ポジション管理、エグジット、資産管理の正確な条件を判断する必要があります。上記の条件を定式化してみましょう。

1. 確認シグナル

本稿の目的は、ドンチャンチャネルに基づいた取引の例を示すだけでなく、それらを現代市場における「生存性」の観点から分析することです。したがって、いくつかの確認指標を選択してみましょう。これらの指標のそれぞれは、ドンチャンチャネルと連動して形成されます。したがって、分析された基本戦略に基づいていくつかのトレーディング戦略を取得します。ここでは次の指標からの3つの確認シグナルを選択しました。

  • 平均方向性指数(Average Directional Movement Index、ADX):このシグナルと組み合わせることで、現在のトレンドの状態と強さを評価してチャネル境界が破られた後に市場に参入することができます。
  • 移動平均収束拡散手法(Moving Average Convergence/Divergence、MACD):MACDは現在のトレンドを監視します。価格がチャネルの境界線を破った場合、このブレイクアウトが市場の方向にあるのか偶発的な価格スパイク(偽ブレイクアウト)であるのかを確認します。
  • 3つ目の確認シグナルは平均速度(Average Speed、ポイント/分単位での平均価格変更速度)とX4Period_RSI_Arrows(周期が異なる4つのRSIで構成されるセマフォ指標 )によって生成されます。

2. 取引システムの形式化

これらの3つの戦略のテスト期間が可能な限り最大になるような共通パラメータを選択します。したがって、テスト中に制御されるパラメータを定義しましょう。

  • 時間枠:異なる期間の戦略は時間枠選択オプションによってテストすることができます。これによって、弱い動きや訂正などの特定の市場段階を特徴付けることができます。長期の動向についても同じですが、これはより長い時間枠でもっと明らかになる場合があります。
  • 資金管理:取引結果に応じたいくつかのポジションサイジングオプションは、再投資が効率的であるのか、固定ロットを取引する方が便利なのかを明らかにすることができます。
  • ポジション管理:ポジションを管理するオプションのいくつかは、現在の有利な動きのパーセンテージとして固定できる利益を判断するのに役立ちます。
  • 指標パラメータ:選択された戦略をさまざまなモードでテストすることは、システムの効率化にとって最適なパラメータやシステムを不採算にする可能性のあるパラメータを検出するのに役立ちます。

次に、我取引戦略での参入条件を定式化する必要があります。

#1 ドンチャンチャネル+ADX

参入条件:

  • ドンチャンチャネルの上または下の境界が破られている。
  • ADXトレンドの強さが事前に設定されたADXレベルを上回っている。
  • 価格がチャネルの境界線を上向きに破る場合、DI+はDI-より上にあり、 下向きに破る場合、DI-はDI+より上にある。

図2 ドンチャンチャネル+ADX戦略での市場参入条件

#2 ドンチャンチャネル+MACD 

参入条件:

  • ドンチャンチャネルの上または下の境界が破られている。
  • 買いのためには、ヒストグラム値はシグナルラインより上で0以上である。
  • 売りのためには、ヒストグラム値はシグナルラインより下で0以下である。

図3 ドンチャンチャネル+MACD戦略での市場参入条件

#3 ドンチャンチャネル+(平均速度+X4Period_RSI_Arrows)

システムの条件:

  • ドンチャンチャネルの上または下の境界が破られている。
  • 平均速度の値は1より大きく、セマフォーRSIは、売りのためにはローソク足より少なくとも2点上、買いのためには少なくとも2点下でマークされる。

図4 ドンチャンチャネル+(平均速度+X4Period_RSI_Arrows)戦略での市場参入条件

取引戦略の実装

テストと最適化の便宜のために、戦略はすべて1つのエキスパートアドバイザーに実装されます。4つの戦略のうちの1つがEAパラメータによって選択されます。

//+------------------------------------------------------------------+
//|  戦略の種類の列挙の宣言                                             |
//+------------------------------------------------------------------+
enum Strategy
  {
   Donchian=0,
   Donchian_ADX,
   Donchian_MACD,
   Donchian_AvrSpeed_RSI
  };

  • Donchian — ドンチャンチャネルのみを使用したブレイクアウト戦略
  • Donchian_ADX — ADXトレンド力指標をフィルタとして使用した戦略
  • Donchian_MACD — MACDオシレータをフィルタとして使用した戦略
  • Donchian_AvrSpeed_RSI — 価格変動率を持ち期間の異なるセマフォRSIをフィルタとして使用した戦略

次に、テストしたいドンチャンチャネルに使用される極値の種類を宣言します。

//+------------------------------------------------------------------+
//| 極値の種類の列挙の宣言                                              |
//+------------------------------------------------------------------+
enum Applied_Extrem
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };

さらに、このエキスパートアドバイザーでは3つの資金管理システムが利用できます。

//+------------------------------------------------------------------+
//|  計算の種類の列挙                                                  |
//+------------------------------------------------------------------+
enum MarginMode
  {
   FREEMARGIN=0,     // MM余剰証拠金
   BALANCE,          // MMバランス
   LOT               // 固定ロット
  };

  • FREEMARGIN — 余剰証拠金に基づいた基本的なロットの計算
  • BALANCE — 現在のバランスに基づいたロットの計算
  • LOT — 固定ロット。これは手動で指定された基本ロットです。

ポジションはUniversal Trailing Stopエキスパートアドバイザーに基づいてシステムによって管理されます。これに基づいてCTrailingクラスが開発され、Trailing.mqhファイルに配置されました。

ポジション管理メソッドと入力パラメータは次のとおりです。

enum   TrallMethod
  {
   b=1,     // ローソク足の極値に基づく
   c=2,     // フラクタルの使用
   d=3,     // ATR指標に基づく
   e=4,     // パラボリック指標に基づく
   f=5,     // MA指標に基づく
   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 ドンチャンエキスパートのメインモードの情報パネル

テスト

テストを開始する前に、条件を判断する必要があります。基本条件は下の表にまとめられています。

パラメータ
Testing interval 01.03.2016 — 01.03.2017
Market EURUSD/GOLD-6.17
Execution 実際のティックに基づいたすべてのティック
Initial Deposit 1000USD
Leverage  1:500
Server MetaQuotes

エキスパートアドバイザーは4-in-1フォーマットで提供されるため、設定選択の可能な組み合わせをすべて記述する必要はありません。テスト中に組み合わされる設定のメインブロックを選び出し、これらのブロックからの個々のパラメータを最適化します。次の表は、理解のため、テスト中に変更されるエキスパートアドバイザのモードを示しています。

EAブロック テストモード
資金管理 固定ロット/バランス
操作時間枠 M30 - D1
ポジション管理 トレール注文/なし
戦略の種類 ドンチャン/ドンチャン+ADX/ドンチャン+MACD/ドンチャン+平均速度+RSI

ここで資金管理には2つのモードしか使用されない理由を説明します。テスト中、入金はエキスパートアドバイザーによってのみロードされ、一度に1つのポジションしか存在しないので、バランス余剰証拠金は実際には同じです。 

1. ドンチャンチャネルの取引戦略

純粋にドンチャンチャネルを使用した戦略から始めます。


図6 EURUSDでのドンチャン取引戦略

EURUSDでの戦略のテストと最適化によって以下の結論が下されました。

  • 与えられた範囲では、最良の結果はM30-H1で得られた。
  • 指標操作の時間枠は10-12に設定された。
  • 使用価格に関しては、CLOSE_HIGH_LOWモードで最良の結果が得られた。
  • トレール注文機能の効率は、それがないモードに比べて非常に低いものであった。
  • 一般的な結論:ドンチャンチャネルのみに基づく戦略は、市場の動きが激しい中で一連の収益性の高い取引を行う古典的なトレンド戦略として作動した。
//+------------------------------------------------------------------+
//| エキスパートアドバイザーの入力パラメータ                              |
//+------------------------------------------------------------------+
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;                             // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

input uint                 DonchianPeriod=10;                           // チャネル期間
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     // 極値の種類
//--- 戦略の選択

input Strategy             CurStrategy=Donchian;                        // 選択された戦略

//--- トレール注文パラメータ

input bool                 UseTrailing=false;                           // トレール注文の使用



同じ期間と時間枠(M30-H1)でのGOLD-6.17先物のテストでは通貨ペアと比較してよりよい結果が得られました。 


図7 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;                             // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

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. ドンチャンチャネルとADX取引戦略

ドンチャンチャネルシグナルをフィルタリングするためにADXを使用した戦略のテスト結果は下記のとおりです。

  • EAは期待されていたより少ない取引を実行した。 
  • 最良の作業時間枠は再びM30だった。
  • 収益性の高い取引の割合が高かった。
  • 有効なチャネル期間は18日であり、ADX期間は10日であった。
  • 再び、チャネルの最も効果的な価格はCLOSE_HIGH_LOWだった。


図8 EURUSDでのドンチャン+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;                             // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

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;

先物のテストでは、ドンチャンチャネル期間が10でADX期間が8に等しいH1の時間枠では、結果は前の戦略と似ていることが分かりました。ここでも、最良の結果は終値に基づいて描画されたチャネルで得られました。


図9 GOLD-6.17でのドンチャン+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_H1;                  // 操作時間枠
input bool                 InfoPanel=false;                             // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

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. ドンチャンチャネルとMACD取引戦略

ドンチャンチャネルシグナルをフィルタリングするためにMACDを使用した戦略のテスト結果は下記のとおりです。<分節 

  • 最良の結果は再度H1時間枠で得られた。
  • MACDパラメータの変更による深刻な影響はなかった。


図10 EURUSDでのドンチャン+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;                              // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

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;                 // 適応価格

先物のテストでは、前の戦略と同様にドンチャンチャネル期間を10にしたときに最良の結果が得られました。トレール注文機能を持つバージョンは、ないものより効率的でした。


図11 GOLD-6.17でのドンチャン+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_M30;                 // 操作の時間枠
input bool                 InfoPanel=true;                              // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

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フィルタは市場参入件数を減らし、最終的な成果を上げました。通貨ペアとは大きく異なる先物市場のボラティリティの詳細に関連しては、ドンチャンシグナルのフィルタリングは変化をもたらしませんでした。しかし、先物に関する総合的な結果は、通貨ペアと比較してはるかに良いものでした。

4. ドンチャンチャネルと平均速度+X4Period_RSI_Arrows

このドンチャンチャネルを複雑なフィルタと組み合わせた戦略を最適化することにより、さまざまな取引条件での戦略の使用に関する結論が確認されました。先物のボラティリティが低いため、この戦略の選択性は高過ぎました。


図12 EURUSDでのドンチャンチャネルと平均速度+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;                              // 情報パネルの表示
//--- ドンチャンチャネルシステム指標パラメータ

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;                           // トレール注文の使用


まとめ

ドンチャンチャネルに基づいた取引システムのテストによって、下記の結論が導かれ戦略の特徴が明らかになりました。

  • チャネルに基づく取引は、戦略に従って古典的なトレンドとして動作し、追加のフィルタを使用することによって改善することができる。
  • テスト結果は先物市場でより良好であった。
  • 高値と安値に基づく古典的なチャネル境界の計算とは異なり、CLOSE_HIGH_LOW(終値)はより良い結果を示した。これはテスト銘柄と関連している。EURUSDは長い髭の形をとる価格スパイクを特徴とする。そのようなスパイクはチャネルの境界線を歪めるが、終値にはより客観的な傾向がある。
  • また、最良の結果は、日足ではなく時間枠М30 - H1で得られた。
  • 有効期間は10〜20ローソク足であった。

終わりに

以下の添付ファイルには、説明されたすべてのファイルがフォルダに正しく分類されています。正しい操作のためには、MQL5フォルダを端末のルートフォルダに保存してください。使用したEasyAndFastGUIグラフィックライブラリは、こちらの関連記事で参照できます。

以下は本稿で使用されているプログラムです。

#
 名称
種類
説明
1
DonchianExpert.mq5 エキスパートアドバイザー
 ドンチャンチャネルに基づいた4つの戦略を組み合わせた複雑なエキスパートアドバイザー
2
DonchianUI.mqh コードベース  GUIクラス
3
TradeFunctions.mqh コードベース  取引関数のクラス
4
Trailing.mqh コードベース  ポジション管理クラス
5
average_speed.mq5 指標  平均価格変更速度の指標
6
donchian_channels_system.mq5 指標  チャネル境界を破るローソク足を表示するドンチャンチャネル
7 x4period_rsi_arrows.mq5 指標  期間が異なる4つのRSIを含むセマフォー指標