English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
CCIによる取引システムの設計方法を学ぶ

CCIによる取引システムの設計方法を学ぶ

MetaTrader 5トレーディング | 19 7月 2022, 08:55
499 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

本連載では、最も一般的に使用されているテクニカル指標を使用したシンプルな戦略に基づく取引システムの設計方法について学んでいきます。今回は、CCI(商品チャンネル指数)という指標を取り上げます。いつものように、考え方や使い方を理解していただくために、基本を説明するつもりです。そうすることで、最終的にはご自分の取引に活かせるような洞察や新しいアイデアを得ることができるかもしれません。

今回は、CCIを利用した取引システムを設計します。取り上げるトピックは次の通りです。

まず、CCI(商品チャンネル指数)とは何か、何を測定するのか、どのように計算するのかについて詳しく説明します。何がおこなわれているかについて基本的なことや根源的なことを理解していれば、ツールをより効率的に使うことができ、それに関するアイデアや洞察をより多く見出すことができるようになります。これについては、「CCIの定義」のトピックで説明します。次に、CCIを使った簡単な戦略を、さまざまな相場のトレンドや条件で使えるようにします(「CCI戦略」)。そして、この戦略に基づいた取引システムを設計するために、何を設計し、コンピュータに何をさせるかを計画する方法を学びます(「CCI取引システムの設計図」)。そして、取引システムの設計図で計画したものをどのように設計するかを学びます(「CCI取引システム」)。

この記事では、MetaTrader 5取引プラットフォームとMetaQuotes言語エディタを使用します。MetaTrader 5は次のリンクからダウンロードできます。https://www.metatrader5.com/ja/download

MetaTrader 5をダウンロードし、インストールすると、次の図のようなターミナルが表示されます。

MT5ターミナル

その後、取引ターミナルを開いた状態でF4を押すか、ターミナルで[ツール]メニューを選択し、[MetaQuotes言語エディタ]をクリックすると、MetaQuotes言語エディタを開くことができます。

MQLを開く

または、MetaTrader 5のツールバーにある[IDE]ボタンを押します。

MT5 IDEボタン

ここで、規律を守ることができるように、取引におけるプログラミングの利点について触れておく必要があります。感情は取引に害を及ぼす可能性があるため、規律は取引の成功にとって重要な要素となります。勝利の取引計画に従った正しい判断を下すべきですが、恐怖や欲、その他の感情のために正しい行動や判断を下すことができないということが、ほとんどのトレーダーに起こります。

プログラミング機能によって、条件に従って取引計画をプログラムし、それを実行することができるようになります。プログラムは、取引に影響を与える可能性のある感情を伴うことなく、ルールに従って必要なことをおこなってくれます。つまり、プログラミングは私たちが規律を守る手助けになるのです。取引条件や取引計画をプログラミングして、取引ターミナルで自動的に実行できるようにするMQL5の出番です。これらのプログラムは、取引の計画に応じて、非常に単純なものから複雑なものまであります。

免責条項:この記事のすべてのコンテンツは、教育を目的として作成されたものであり、他の目的のために作成されたものではありません。そのため、この記事の内容は何らかの結果を保証するものではありませんので、この記事の内容に基づいておこなう行動については、自己責任でお願いします。

さて、私たちの学びの旅に新しいブロックを築くための記事を始める準備が整いました。始めましょう。 


CCIの定義

このセクションでは、CCI(商品チャンネル指数)指標について、何を測定し、どのように計算し、どのように使用するのか、より詳しく学びます。 

CCIは、ドナルド・ランバートが考案した指標で、一定期間の価格の平均値に対する現在の価格の相対値を測定するモメンタム指標です。ランバートがこの指標を作成したとき、当初の目的は商品の循環的な動きを測定することでしたが、他の金融商品も測定することができます。CCIは、トレンドの強さや反転を見抜くために使用することができます。これはモメンタム指標としての性質に従った正常な結果です。

CCIの計算方法とそれが測定するものによれば、CCIが高いときは、価格がその平均をはるかに上回っていることを意味し、逆にCCIが低いときは、価格がその平均をはるかに下回っていることを意味します。

CCIは以下の手順で算出されます。

  • TP (Typical Price)を取得する

TP = (高値 + 安値 + 終値)/3

  • TPの単純移動平均(SMA)を取得する

TPのSMA = (TPの総和)/n

  • 平均偏差を取得する

平均偏差 = |TP-SMA|の総和/n

  • CCIを取得する

CCI = (TP-TPのSMA)/(0.015*平均偏差)

では、この計算を適用する例を見てみましょう。

ある商品について、次のような14日間のデータがあったとします。

高値 安値 終値
1 100 90 110
2 130 100 120
3 140 110 130
4 130 100 120
5 120 95 110
6 140 120 130
7 160 130 150
8 170 150 160
9 155 130 140
10 140 120 130
11 160 140 150
12   180 160 170
13   190 170 190
14   200 180 210

以下は、このデータを使ってCCIを計算する方法です。

  • まず、TP (Typical Price)を計算します。

TP = (高値 + 安値 + 終値)/3

TPを計算すると、以下のようになります。

例CCI1

  • 次に、算出されたTPのSMA(単純移動平均)を算出する必要があります。

TPのSMA=TPの総和/n

結果は以下のとおりです。

例CCI2

  • 次に、TPとSMAの差を絶対値で計算して、平均偏差を算出します。

|TP-SMA|

こちらです。

例CCI3

  • ここで、平均偏差を計算する必要があります。

平均偏差=|TP-SMA|の総和/n

例CCI4

  • 次に、いよいよCCIを計算します。
CCI = (TP-TPのSMA)/(0.015*平均偏差)

CCI = (196.67-141.19)/(0.015*22.86)

CCI = 55.48/0.3429

CCI = 161.80

今では、MetaTrader 5にはすぐに使える組み込みの指標があるため、指標を手動で計算する必要はありません。下図のように、プラットフォーム上でCCI指標を選択すれば、すぐに使用することができます。

CCIの挿入

CCIを選択すると、以下のウィンドウが表示されます。

CCIウィンドウ

指標の前のウィンドウには、そのパラメータが表示されます。

  • 1:指標の期間を特定する
  • 2:指標の計算で使用する価格の種類を設定する(ここではTypical priceを選択)
  • 3:指標のスタイル(CCIの色、CCIラインタイプ、CCIラインの太さ)を設定する

すべてのパラメータを指定した後、[OK]を押すと、指標がチャートに表示されます。

チャート上のCCI指標

CCIは、100と-100の間で振動するオシレータです。


CCI戦略

このセクションでは、CCIを利用した2つの簡単な戦略についてお話します。市場のトレンドや方向性(上昇トレンド、下降トレンド、横ばい)に応じて、いずれかの戦略を使用することができます。もうひとつは、CCI値とゼロと100または-100の両方との単純な交差です。これらの戦略の話をする前に、CCIを利用した戦略が数多くあることに触れておく必要があります。すべての戦略は、実際の資金を使ったリアル口座で使用する前に、デモ口座で自分でテストして、取引に役立つかどうかを確認する必要があります。

戦略は次のようになります。

1番目の戦略:市場トレンドに応じたCCIの理用

    • 上昇トレンドの間:

      上昇トレンドとは、安値と高値がより高くなる相場の方向性で、価格が上昇するにつれて買い手のコントロールが効くことを意味します。このような相場の場合、CCIをシグナルプロバイダとして利用し、CCIラインが100レベルを上抜けたら買いシグナルを発生させることができます。つまり、CCI>100です。そして、例えばプライスアクションのような別の効果的なツールを使って利食いすることができます。

      CCI > 100 = 買い

      利食いシグナルは、以前の安値を下回るプライスアクションのような、より有用な別のツールから使用
        • 下降トレンドの間:

          下降トレンドとは、上昇トレンドの逆で、価格が高値と安値をつくり、売り手からコントロールされて価格が下がることを意味するトレンドのことです。このような市場では、CCIはシグナルを生成するためにも使用できます。CCIラインが-100レベルを下回ると売りのシグナルが表示されます。プライスアクションは、利食いのために使用することができます。

          CCI < -100 = 売り

          利食いシグナルは、以前の安値を下回るプライスアクションのような、より有用な別のツールから取得
            • 横ばいの間:

              横ばいの時は、買い手と売り手のバランスが取れているので、どちらかが優勢になることはありません。横ばいは、上昇トレンドと下降トレンド以外のあらゆる状況を指します。

              横ばいでは、CCIを利用してシグナルを発生させることができます。CCIラインが-100レベルを下回ったら買いシグナル、100を超えたら利食いシグナルです。あるいは、CCIラインが100を上抜けたら売りシグナル、-100を下抜けたら利食いシグナルとなります。

              CCI < -100 = 買い
              CCI > 100 = 利食い
              CCI > 100 = 売り

              CCI < -100 = 利食い

                2番目の戦略:ゼロクロスシグナル

                  今回は、CCIの使い方を変えて、ゼロレベルとの交差で相場に参入し、100と-100の値との交差でポジションタイプ(買いまたは売り)に応じて利食いするというアクションを取ることができます。

                    • 買いシグナル:

                      CCI値がゼロレベルに回復するのを見ます。CCI値が0を超えたら買いシグナル、100を超えたら利食いです。

                      CCI > 0 = 買い
                      CCI > 100 = 利食い 

                        • 売りシグナル:

                          CCI値がゼロレベルに回復するのを見ます。CCI値が0を下回ったら売りシグナルとなり、CCI値が-100を下回ったら利食いすることができます。

                          CCI < 0 = 買い
                          CCI < 100 = 利食い 

                          CCI取引システムの設計図

                          さて、この記事で最も興味深いのは、CCIを手動で観測する際にシグナルを自動化するために、これらの戦略をプログラムする必要があることです。

                          そこで、これらの戦略をコード化し、私たちがまさに必要としていることに従って何をすべきかをコンピュータに伝える必要があるのです。そのための設計図を設計するところから、一歩一歩始めていきます。

                            1番目の戦略:市場のトレンドに応じたCCIの使い分け
                              • 上昇トレンドの間:

                                CCI値を毎ティックで確認し、CCI値に応じて何かをするプログラムが必要です。

                                CCIが100を超えたら買いシグナルを出し、そうでなければ何もしません。

                                CCI上昇トレンドの設計図

                                  • 下降トレンドの間:

                                    CCI値を毎ティックで確認し、その値に応じてアクションを起こします。

                                    CCI値が-100未満になったら売りシグナルを出し、そうでなければ何もしません。

                                    CCI下降トレンドの設計図

                                      • 横ばいの間:

                                        横ばい時は、CCI値を確認し、それに応じて何かをするプログラムが必要です。

                                        CCIの値が-100未満の場合、買いシグナルを出し、利食いシグナルを出します。(CCI < -100)でなければ、(-100 < CCI < 100)かどうかを確認します。そうである場合は何もしません(ホールド)。そうでない場合は、(CCI > 100)なら売り、そして(CCI < -100)なら利食いシグナルを出します。(CCI > 100)でないなら、(-100 < CCI < 100)の場合は何もしません(ホールド)。

                                        CCI横ばい設計図

                                          2番目の戦略:ゼロクロスシグナル
                                            • 買いシグナル:

                                              CCI値とゼロレベルを毎ティックで確認します。CCI値が0より大きくなったらチャート上に買いシグナルを表示し、CCI値が100を上回ったら利食いシグナルを表示します。

                                              ゼロクロスCCI戦略の設計図(買い)

                                                • 売りシグナル:
                                                  CCI値とゼロレベルを毎ティックで確認し、CCI値がゼロレベルを下回ったらチャート上に売りシグナルを表示し、CCI値が-100未満になったら利食いシグナルを表示します。

                                                  ゼロクロスCCI戦略の設計図(売り)

                                                  CCI取引システム

                                                  さて、ここで述べた戦略を、コンピュータが必要なことをおこなうためのコードとして書く必要があります。

                                                  まず、CCIの値をチャート上に表示する簡単なプログラムを書きます。プログラミングは以下の手順でおこなわれます。

                                                  1. 価格の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. CCI値をチャート化し、その値をチャート上に表示する

                                                  これまでの手順をコード化して、コンピュータにCCI値を自動的にチャート上に表示させることができるプログラムを作成する方法は次のとおりです。

                                                  //+------------------------------------------------------------------+
                                                  //|                                            Simple CCI System.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //Charting CCI values
                                                     Comment ("CCI Value = ",CCIValue);
                                                    }
                                                  //+------------------------------------------------------------------+

                                                  その後、ナビゲータでこのプログラム(Simple CCI System)を見つけ、それを選択し、取引プラットフォームで実行することができます。

                                                  更新されたCCIナビゲータ

                                                  プログラム(Simple CCI System)は、ダブルクリックまたはチャート上にドラッグ&ドロップすることで開くことができます。その後、下記のウィンドウが表示されます。

                                                  Simple CCI Systemウィンドウ

                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)「Simple CCI System」がチャートに接続され、CCI値がチャート上に可視化されます。

                                                  シンプルなCCIシステムの接続 

                                                  さて、ここで紹介した2つの戦略のコーディング方法を学びます。

                                                  • 1番目の戦略:市場のトレンドに応じたCCIの使い分け
                                                    • 上昇トレンドの間:

                                                  CCI > 100 = 買い


                                                  以下の手順をおこないます。

                                                  1. 価格用の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. 上昇トレンド時の条件CCIシグナルを設定する

                                                  これらの手順は次のようにコード化できます。

                                                  //+------------------------------------------------------------------+
                                                  //|                                         Uptrend CCI Strategy.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals for uptrend
                                                     if(CCIValue> 100)
                                                     Comment ("UPTREND CCI - BUY SIGNAL ");
                                                     
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  その後、ナビゲータでこのプログラム「Uptrend CCI Strategy」を見つけることができます。

                                                  ナビゲータでのUptrend strategy CCI

                                                  再度、このプログラム「Uptrend CCI Strategy」を、ダブルクリックまたはチャート上にドラッグ&ドロップすることで開きます。次のウィンドウが開きます。

                                                  Uptrend CCI Strategyウインドウ

                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)「Uptrend CCI Strategy」がチャートに接続されます。

                                                  Uptrend CCI Strategyの接続

                                                  Uptrend CCI Strategyのシグナルは、この戦略にしたがって表示されます。

                                                  Uptrend CCI Strategy買いシグナル

                                                  • 下降トレンドの間:

                                                  CCI < -100 = 売り

                                                  以下の手順でコード化します。

                                                  1. 価格用の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. 下降トレンド時のCCIシグナルの条件を設定する

                                                  以下は、取引プラットフォームで起動し、必要なものを自動的に実行することができるプログラムのコードです。

                                                  //+------------------------------------------------------------------+
                                                  //|                                       Downtrend CCI Strategy.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue< -100)
                                                     Comment ("DOWNTREND CCI - SHORT SIGNAL ");
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  ナビゲータでこのプログラム「Downtrend CCI Strategy」を検索します。

                                                  ナビゲータでのDowntrend strategy CCI

                                                  Downtrend CCI Strategyを、ダブルクリックまたはチャート上にドラッグ&ドロップすることで開きます。次のウィンドウが表示されます。

                                                  Downtrend CCI Strategyウインドウ

                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)Downtrend CCI Strategyがチャートに接続されます。

                                                  下降トレンドCCI戦略:接続

                                                  Downtrend CCI Strategyのシグナルは、この戦略にしたがって、下図のように表示されます。

                                                  下降トレンドCCI戦略:売りシグナル

                                                  • 横ばいの間:
                                                    • 買いシグナルの場合

                                                  CCI < -100 = 買い

                                                  CCI > 100 = 利食い

                                                  手順1~5

                                                  1. 価格用の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. 横ばい時の条件CCI買いシグナルを設定する

                                                  これらの手順をコード化することで、必要なことができるプログラムを作ることができます。

                                                  //+------------------------------------------------------------------+
                                                  //|                                  Sideways CCI Strategy - Buy.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue< -100)
                                                     Comment ("SIDEWAYS CCI - BUY SIGNAL ");
                                                     
                                                     if(CCIValue> 100)
                                                     Comment ("SIDEWAYS CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+

                                                  このプログラム「横ばいCCI戦略(買い)」をナビゲータで検索します。

                                                  ナビゲータでのSideways CCI Strategy - Buy

                                                  ダブルクリックまたはドラッグ&ドロップで開きます。次のウィンドウが表示されます。


                                                  Sideways CCI Strategy - Buyウィンドウ

                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)[Sideways CCI Strategy - Buy]がチャートに接続されます。

                                                  横ばいCCI買い戦略の接続

                                                  そして、この戦略に従ってSIDEWAYS CCI - BUYシグナルが表示されます。

                                                  Sideways CCI - Buy

                                                  利食いシグナルは、CCI > 100 = 利食いです。例:

                                                  Sideways CCI - Buy - TP

                                                    • 売りシグナル:

                                                  CCI > 100 = 売り

                                                  CCI < -100 = 利食い

                                                  それを次の手順でコーディングしていきます。

                                                  1. 価格用の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. 横這い時のCCI売りシグナル条件の設定。

                                                  そして、これらの手順をコード化して、プログラムSideways CCI Strategy - Shortを作成する方法を以下に示します。

                                                  //+------------------------------------------------------------------+
                                                  //|                                Sideways CCI Strategy - Short.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue> 100)
                                                     Comment ("SIDEWAYS CCI - SHORT SIGNAL ");
                                                     
                                                     if(CCIValue< -100)
                                                     Comment ("SIDEWAYS CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+

                                                  その後、「Sideways CCI Strategy - Short 」というプログラムがナビゲータに表示されます。

                                                  ナビゲータでのSideways CCI Strategy

                                                  Sideways CCI Strategy - Short をダブルクリックまたはチャート上にドラッグ&ドロップすることで開きます。次のウィンドウが表示されます。

                                                  Sideways CCI Strategy - shortウィンドウ

                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)Sideways CCI Strategy - Shortがチャートに接続され、以下のような状態になります。

                                                  Sideways CCI Strategy:接続

                                                  この戦略に従ってSideways CCI - Shortシグナルが表示されます。

                                                  Sideways CCI - Short

                                                  CCI < -100 = 利食いの場合、利食いシグナルを出すことができます。

                                                  Sideways CCI - Short - TP

                                                  • 2番目の戦略:ゼロクロスのシグナル:
                                                    • 買いシグナル:

                                                  CCI > 0 = 買い
                                                  CCI > 100 = 利食い

                                                  それを次の手順でコーディングしていきます。

                                                  1. 価格用の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. CCI値およびゼロレベルクロスの条件を設定する

                                                  プログラム「Zero crossover CCI Strategy - Buy」の作成手順:

                                                  //+------------------------------------------------------------------+
                                                  //|                            Zero crossover CCI Strategy - Buy.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                    
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue > 0)
                                                     Comment ("Zero crossover CCI - BUY SIGNAL ");
                                                     
                                                     if(CCIValue > 100)
                                                     Comment ("Zero crossover CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  ナビゲータでこのプログラム「Zero crossover CCI Strategy - Buy」を探します。

                                                  ナビゲータでのZero crossover CCI Strategy - Buy

                                                  ダブルクリックまたはチャート上にドラッグ&ドロップして、このプログラムを開きます。次のウィンドウが開きます。

                                                  Zero crossover CCI strategy - Buyウィンドウ


                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)Zero crossover CCI Strategy - Buyがチャートに接続されます。

                                                  Zero crossover CCI strategy - Buyの接続

                                                  この戦略に従って、Zero crossover CCI - BUYシグナルが表示されます。

                                                  Zero crossover CCI - Buy

                                                  CCI > 100 =利食いの場合は利食いシグナルを出すことができます 。次の図はその例です。

                                                  Zero crossover CCI strategy - Buy - TP

                                                    • 売りシグナル:

                                                  CCI < 0 = 買い
                                                  CCI < -100 = 利食い 

                                                  それを次の手順でコーディングしていきます。

                                                  1. 価格用の配列を作成する
                                                  2. 現在のデータから価格配列を並び替える
                                                  3. CCIのプロパティを定義する
                                                  4. 結果を並び替える
                                                  5. 現在のデータの値を取得する
                                                  6. CCI値およびゼロレベルクロスの条件を設定する

                                                  プログラム「Zero crossover CCI Strategy - Short」作成のコーディング手順。

                                                  //+------------------------------------------------------------------+
                                                  //|                          Zero crossover CCI Strategy - Short.mq5 |
                                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                                  //|                                             https://www.mql5.com |
                                                  //+------------------------------------------------------------------+
                                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                                  #property link      "https://www.mql5.com"
                                                  #property version   "1.00"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue < 0)
                                                     Comment ("Zero crossover CCI - SHORT SIGNAL ");
                                                     
                                                     if(CCIValue < -100)
                                                     Comment ("Zero crossover CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  その後、ナビゲータでこのプログラム「Zero crossover CCI Strategy - Short 」を見つけてください。

                                                  ナビゲータでのZero crossover CCI Strategy - Short

                                                  このプログラム「Zero crossover CCI Strategy - Short」をダブルクリックするか、チャート上にドラッグ&ドロップして開いてください。次のウィンドウが開きます。

                                                  Zero crossover CCI strategy - Shortウィンドウ

                                                  [アルゴリズム取引を許可する]を有効にして[OK]を押すと、プログラム(EA)Zero crossover CCI Strategy - Shortがチャートに接続されます。

                                                  Zero crossover CCI strategy - Shortの接続

                                                  この戦略に従って、Zero crossover CCI - Shortシグナルが表示されます。

                                                  Zero crossover CCI - Short

                                                   CCI < -100 = 利食い のときに利食いシグナルを出すことができます。次の図はその例です。

                                                  Zero crossover CCI strategy - Short - TP

                                                  結論

                                                  CCI(商品チャンネル指数、Commodities Channel Index)は、取引に有益で、CCIのすべての戦略をテストした後により良い結果を得るために有利に使用できる別のツールです。ご自分の取引の計画とスタイルに適している場合は、この記事はあなたの取引で使用できる新しいツールの紹介であると考えることができます。 

                                                  CCIとは何か、その意味、測定方法、計算方法について、また、CCIというツールに対する知識と認識を深め、より多くの洞察と新しいアイデアに目を向けるきっかけとなるような事例を紹介しました。

                                                  次に、さまざまな市場条件(上昇トレンド、下降トレンド、横向き)でCCIが使用できる単純な戦略とゼロクロス戦略を理解しました。前述のように、CCIで使用できる戦略は多数あり、どれを知るかについて詳しく知ることができます。 そのうちの1つは取引に役立ちますが、何かの基本を知っていると、より効果的に使用できると思います。

                                                  そして、この戦略の設計図がわかり、CCIによる取引システムを設計するためのプログラムを書くのに役立つことがわかったのです。そして、この戦略をMQL5でコード化し、この取引システムをMetaTrader 5取引プラットフォームに取り付けて実行し、自動的にシグナルを生成する方法、さらにチャート上にシグナルを生成する方法を知りました。

                                                  ここで確認しておきたいのは、新しい戦略は、実際の口座で使う前に必ずテストする必要があるということです。この記事が、読者のトレードに役立つ情報を提供し、また新しいアイデアや洞察に目を向けることで、トレードの役に立つことを願っています。


                                                  MetaQuotes Ltdにより英語から翻訳されました。
                                                  元の記事: https://www.mql5.com/en/articles/10592

                                                  MACDによる取引システムの設計方法を学ぶ MACDによる取引システムの設計方法を学ぶ
                                                  今回は、このシリーズの新しいツール、MACD(Moving Average Convergence Divergence、移動平均収束発散)に基づいた取引システムの設計方法について学びます。
                                                  一からの取引エキスパートアドバイザーの開発(第10部):カスタムインジケータへのアクセス 一からの取引エキスパートアドバイザーの開発(第10部):カスタムインジケータへのアクセス
                                                  エキスパートアドバイザー(EA)でカスタムインジケータに直接アクセスするにはどうすればよいでしょうか。取引EAが本当に役立つのは、カスタムインジケータを使用できる場合のみです。それ以外の場合、取引EAはコードと命令のセットにすぎません。
                                                  一からの取引エキスパートアドバイザーの開発(第11部):両建て注文システム 一からの取引エキスパートアドバイザーの開発(第11部):両建て注文システム
                                                  この記事では、両建て注文システムを作成します。先物契約は、トレーダーを極度に苦しめる資産タイプですが、なにがそんなに難しいのでしょうか。
                                                  一からの取引エキスパートアドバイザーの開発(第9部):概念的な飛躍(II) 一からの取引エキスパートアドバイザーの開発(第9部):概念的な飛躍(II)
                                                  この記事では、Chart Tradeをフローティングウィンドウに配置します。前稿では、フローティングウィンドウ内でテンプレートを使用できるようにする基本的なシステムを作成しました。