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

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

MetaTrader 5トレーディング | 29 11月 2022, 11:10
450 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

新しいテクニカルツールと、シンプルな戦略に基づいた取引システムの設計方法について学ぶ、初心者向け連載の新しい記事です。今回取り上げるのはVIDYA(Variable Index Dynamic Average、可変インデックス動的平均)指標です。この指標は、取引で使用することができるトレンドフォロー型指標の1つです。この用語の概念は、この指標がトレンドに従うということ、つまり、遅行指標であり、値動きの後に動くということです。この指標を次のトピックを通してカバーしていきます。

  1. VIDYAの定義
  2. VIDYA戦略
  3. VIDYA戦略の設計図
  4. VIDYA取引システム
  5. 結論


プログラミングスキルを高めたい方は、理解を深めるために、学んだことをご自分で応用してみてください。学習プロセスにおいて練習は非常に重要なステップです。MetaTrader 5の取引ターミナルに組み込まれているMQL5(MetaQuotes言語5)を使用します。ダウンロード方法や使用方法がわからない場合は、以前の記事から「MetaEditorでMQL5コードを書く」を読んでみてください。

免責条項:すべての情報は「現状有姿」で提供され、情報提供のみを目的としており、取引目的やアドバイスを目的としたものではありません。いかなる結果も保証するものではありません。読者がこれらの資料を自分の取引口座で使用する場合、自己責任でおこなってください。


VIDYAの定義

VIDYA(Variable Index Dynamic Average、可変インデックス動的平均)は、Tushar Chande氏によって開発されたトレンドフォロー型の指標です。指数移動平均のように見えますが、相対的な価格変動に基づいて動的に調整されます。この指標では、ボラティリティは、正と負の動きの合計の間の比率を測定することによってChande Momentum Oscillator (CMO)によって測定されます。これは計算法を学ぶときにわかります。CMOを使用して指数移動平均が平滑化されます。この指標の設定はパラメータで、CMO期間とEMA期間になります。他の移動平均同様、この指標はトレンドの種類(上昇トレンドまたは下降トレンド)を取得するために使用できます。トレンドの種類とその見極め方について詳しく知りたい方は、以前の記事で紹介したトレンドの定義を読んでみてください。また、この指標は売買シグナルを生成するために使用することもできます。「VIDYA戦略」を通して、それに基づいた簡単な戦略をいくつか見てみましょう。

次に、VIDYA指標の計算方法を学び、その主な概念をより深く理解する必要があります。手動で計算するには以下の手順に従います。

  • EMAを算出します

EMA(i) = 価格(i) * F + EMA(i-1)*(1-F)

ここで、

EMA(i) = 現在のEMA

価格(i)=現在価格

F(平滑化係数)=2/(期間+1のEMA)

EMA(i-1) = 前回のEMA値

  • VIDYA値を算出します

VIDYA(i) = Price(i) * F * ABS(CMO(i)) + VIDYA(i-1) * (1 - F* ABS(CMO(i)))

ここで、

VIDYA(i)=現在のVIDYA値

ABS(CMO(i)) = Chande Momentum Oscillatorの現在値の絶対値

VIDYA(i-1)=前回のVIDYA値

  • Chande Momentum Oscillator (CMO)を算出します

CMO(i) = (UpSum(i) - DnSum(i))/(UpSum(i) + DnSum(i))

ここで、

UpSum(i) = 期間中のプラス移動量の総和の現在値

DnSum(i) = 期間中のマイナス移動量の総和の現在値

その後、VIDYA指標を取得することができます。現在では、手動で計算する必要はなく、MetaTrader 5の取引プラットフォームで利用可能な指標から選択してチャートに挿入するだけです。次が挿入方法です。

[挿入] --> [インディケータ] --> [トレンド] --> [Variable Index Dynamic Average]にアクセスします。

VIDYAの挿入

以下のウィンドウが開いて指標のパラメータが表示されます。

VIDYAパラメータ

1 - Chande Momentum Oscillator (CMO)の期間

2 - 指数移動平均(EMA)の期間

3 - 価格の種類

4 - VIDYA線の色

5 - VIDYA線のスタイル

6 - VIDYA線の太さ

これまでのパラメータをすべて決定し、[OK]を押すと、以下のようにチャートに指標が表示されます。

VIDYAの接続

先のチャートでわかるように、この指標はチャートに挿入され、その値と値動きに基づいて価格の上下に線が引かれます。VIDYAの線が価格の上にあるときは弱気のコントロールがあることを意味し、逆にVIDYAの線が価格の下にあるときは強気のコントロールがあることを意味します。


VIDYA戦略

このトピックでは、VIDYA指標の主要概念に基づいた簡単な戦略を通じて、VIDYA指標の使い方を学びます。この指標は、他のテクニカルツールや指標と組み合わせることで、より信頼性が高く効果的な結果を得ることができます。なぜなら、多角的な見識を深めることができ、これがテクニカル分析の特徴の1つだからです。

    戦略1:VIDYA Trend Identifier

      デフォルト設定(9,12)で現在の終値と現在のVIDYAを比較して、上か下かトレンドタイプでシグナルを出します。現在の終値がVIDYAを上回ったら上昇トレンドのシグナルを出します。一方、現在の終値がVIDYAを下回る場合、下降トレンドでシグナルを出します。

      現在の終値 > VIDYA → 上昇トレンド

      現在終値 < VIDYA → 下降トレンド

        戦略2:VIDYA One Crossover

          前の戦略の同じ値を比較して、売買シグナルを出します。現在の終値がVIDYAを上回ったら買いシグナルを出します。逆に、現在の終値が現在のVIDYAを下回ったら売りシグナルを出します。

          現在の終値 > VIDYA → 買いシグナル

          現在の終値 < VIDYA → 売りシグナル

            戦略3:VIDYA Two Crossover

              VIDYA (9、12)とVIDYA (20、50)と比較し、売買シグナルを出します。VIDYA(9、12)がVIDYA(20、50)を上回った場合は買いシグナルを出します。一方、現在のVIDYA(9、12)が現在のVIDYA(20、50)を下回った場合は売りシグナルを出します。

              VIDYA (9, 12) > VIDYA (20, 50) → 買いシグナル

              VIDYA (9, 12) < VIDYA (20, 50) → 売りシグナル

              これまでの3つのシンプルな戦略を通じて、VIDYA指標の主要概念に基づいた使い方を学びました。


              VIDYA戦略の設計図

              このトピックでは、各戦略の取引システムをスムーズに構築できるよう、ステップバイステップの設計図を作成します。

                戦略1: VIDYA Trend Identifier

                  この戦略では、トレンドの種類についてのシグナルを発生させることができる取引システムを作ります。トレンドの種類を判断するために、取引システムは現在の終値と現在のVIDYA値という2つの値を確認する必要があります。現在の終値がVIDYA値を上回ったら、トレンドが上向きであることを示すシグナルをデします。

                  取引システムは、以下のような値でチャートにコメントを返します。

                  • 上昇トレンド
                  • 現在の終値
                  • 現在のVIDYA値

                  もう1つのシナリオでは、現在の終値が現在のVIDYAの値を下回った場合に、トレンドが下降していることを示すシグナルを出します。

                  取引システムは、以下のような値でチャートにコメントを返します。

                  • 下降トレンド
                  • 現在の終値
                  • 現在のVIDYA値

                  次の図は、この戦略の設計図です。

                   VIDYA Trend Identifierの設計図

                    戦略2: VIDYA One Crossover

                      この戦略では、売買シグナルがある場合に警告するために使用することができる取引システムを作成します。この戦略では、VIDYA Trend Identifierと同じ値を使用して、異なるシグナルを出します。取引システムは、現在の終値と現在のVIDYA値の2つの値を確認して、現在の終値がVIDYA値を上回った場合は買いシグナルを出します。

                      取引システムは次のような値を返します。

                      • 買いシグナル
                      • 現在の終値
                      • 現在のVIDYA値

                      逆に、現在の終値がVIDYAを下回れば売りシグナルを出します。

                      取引システムは、以下のような値でチャートにコメントを返します。

                      • 売りシグナル
                      • 現在の終値
                      • 現在のVIDYA値
                      次の図は、この戦略の設計図です。

                      VIDYA One Crossoverの設計図

                        戦略3: VIDYA Two Crossover

                          この戦略では、売買のシグナルを生成するために使用できる取引システムを作成します。(9, 12) VIDYAの現在値と(20, 50) VIDYAの現在値の2つの値を連続して確認します。(9、12)の現在値が(20、50)の現在値を上回ったら買いシグナルを出します。

                          取引システムは次のような値を返します。

                          • 買いシグナル
                          • 現在の終値
                          • VIDYA(9、12)の現在値
                          • VIDYA (20, 50)の現在値

                          一方、VIDYA(9、12)の現在値がVIDYA (20, 50)の現在値を下回ったら売りシグナルを出します。

                          取引システムは次のような値を返します。

                          • 売りシグナル
                          • 現在の終値
                          • VIDYA(9、12)の現在値
                          • VIDYA (20, 50)の現在値

                          次の図は、この戦略の設計図です。


                          VIDYA Two Crossoverの設計図

                          自動売買システムを作るのに役立つように、言及した各戦略の簡単なステップバイステップの設計図を設計しました。これで、VIDYA取引システムの最も興味深いトピックである、各戦略の取引システムを作るための準備が整いました。 


                          VIDYA取引システム

                          このシンプルな取引システムでは、VIDYA指標の現在値がチャート上にコメントとして表示されるため、継続的に確認することができます。

                          以下の手順は、必要なことをおこなうための取引システムを作成する方法です。

                          実数型または浮動小数点型の1つで端数のある値を表す doubleを使用して、vidyaArray の配列を作成します。

                          double vidyaArray[];

                          作成した配列vidyaArrayをArraySetAsSeries関数で並び替え、ブーリアン値を返すようにします。

                          ArraySetAsSeries(vidyaArray,true);

                          iVIDyA関数で指標のハンドルを返し、vidyaDefにVIDYAの定義と等しい整数変数を作成することにします。

                          そのパラメータは次の通りです。

                          • symbol:現在の銘柄に適用(_Symbolを使用)
                          • period:現在の期間または時間枠に適用(_Periodを使用)
                          • cmo_period:Chande Momentumの期間(9を使用)
                          • ema_period:指数移動平均の平滑化期間(12を使用)
                          • ma_shift:チャート上の水平方向のシフト(オプション)(0を使用)
                          • applied_price:価格の種類(終値を使用)
                          int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);

                          作成した配列に、CopyBuffer関数を使ってVIDYA指標からデータを取得し、埋めていきます。

                          この関数のパラメータは次の通りです。

                          • indicator_handle:指標ハンドル(vidyaDefを使用))
                          • buffer_num: 指標バッファの番号(0を使用)
                          • start_pos:開始位置(0を使用)
                          • count:コピーする量(3を使用)
                          • buffer[]:コピーのターゲット配列(vidyaArrayを使用)
                          CopyBuffer(vidyaDef,0,0,3,vidyaArray);

                           NormalizeDouble関数で変数を作成後、double型の値を返すvidyaValを定義します。

                          この関数のパラメータは次の通りです。

                          • value:正規化した数値(vidyaArray[0]を使用)
                          • digit:小数点以下の桁数(6を使用)
                          double vidyaVal = NormalizeDouble(vidyaArray[0],6);

                          Comment関数を使って、現在のVIDYAの値をチャートにコメントとして生成します。

                          Comment("VIDYA Value is ",vidyaVal);

                          この取引システムの完全なコードは、次のようになります。

                          //+------------------------------------------------------------------+
                          //|                                                 Simple VIDYA.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()
                            {
                             double vidyaArray[];
                          
                             ArraySetAsSeries(vidyaArray,true);
                          
                             int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                          
                             CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                          
                             double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                          
                             Comment("VIDYA Value is ",vidyaVal);
                          
                            }
                          //+------------------------------------------------------------------+

                          この取引システムのエキスパートアドバイザー(EA)がナビゲータウィンドウで次のように表示されるようになります。

                          VIDYA nav

                          チャート上にドラッグ&ドロップすると、このEAのウィンドウが以下のように表示されます。

                           Simple VIDYAウィンドウ

                          [OK]を押すと、以下のようにEAが接続されていることがわかります。

                          Simple VIDYAの接続

                          前のチャートでわかるように、右上でEAが接続されています。そして、以下のように目的のシグナルが現れることがわかります。

                           Simple VIDYAのシグナル

                          先ほどのチャートの左上にあるように、VIDYAの現在値が表示されます。内蔵のVIDYA指標の値と同じ値であることを確認する必要がある場合、EAを接続した後に、EAと同じ設定で内蔵指標を挿入することができます。これは次のようになります。

                           Simple VIDYA同一シグナル

                          先ほどのチャートでは、右上にEAが表示され、左上にはこのEAの現在値が表示されています。また、右のデータウィンドウでは、ビルトイン指標が価格チャートに接続されており、その値が表示されています。明らかに、どちらの値も同じであることがわかります。

                            戦略1: VIDYA Trend Identifier

                              この戦略の取引システムを作成する場合、この戦略の全コードは以下のようになります。

                              //+------------------------------------------------------------------+
                              //|                                       VIDYA trend identifier.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()
                                {
                                 MqlRates priceArray[];
                                 double vidyaArray[];
                              
                                 int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                 ArraySetAsSeries(vidyaArray,true);
                              
                                 int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                              
                                 CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                              
                                 double currentClose=NormalizeDouble(priceArray[2].close,6);
                                 double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                              
                                 if(currentClose>vidyaVal)
                                   {
                                    Comment("Uptrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              
                                 if(currentClose<vidyaVal)
                                   {
                                    Comment("Downtrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              
                              
                                }
                              //+------------------------------------------------------------------+

                              このコードの相違点は次の通りです。

                              配列を2つ作成します(MqlRates関数を使って価格用の配列を、先ほどのdoubleを使ってVIDYA用の配列)。

                                 MqlRates priceArray[];
                                 double vidyaArray[];

                              priceArrayについては、次のパラメータでMqlRatesの履歴データを取得するCopyRates関数を使用します。そのパラメータは次の通りです。

                              • 銘柄名:_Symbolを使用
                              • timeframe:_Periodを使用
                              • 開始時間:0を使用
                              • 停止時間:3を使用
                              • レート配列:priceArrayを使用

                              vidyaArrayには、先ほどと同じようにArraySetAsSeries関数を使用します。

                                 int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                 ArraySetAsSeries(vidyaArray,true);

                              現在の価格の終値と現在のVIDYAの値を定義します。

                                 double currentClose=NormalizeDouble(priceArray[2].close,6);
                                 double vidyaVal = NormalizeDouble(vidyaArray[0],6);

                              この戦略の条件は次の通りです。

                              1.上昇トレンドの場合

                                 if(currentClose>vidyaVal)
                                   {
                                    Comment("Uptrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }

                              2.下降トレンドの場合

                                 if(currentClose<vidyaVal)
                                   {
                                    Comment("Downtrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }

                              このコードをコンパイルして、目的のチャートに挿入すると、次のようになります。

                              VIDYA Trend Identifierの接続

                              ご覧のように、先ほどのチャートの右上にVIDYA Trend IdentifierのEAが接続されていることがわかります。これでシグナルの受信を開始することができます。以下は、テスト時に得られたこれらのシグナルの例です。

                              1.上昇トレンドの場合

                              VIDYA Trend Identifier - 上昇トレンドシグナル

                              先ほどのチャートの左上にあるように、次のような値を確認することができます。

                              • 上昇トレンド
                              • 現在の終値
                              • 現在のVIDYA値

                              2.下降トレンドの場合

                              VIDYA Trend Identifier - 下降トレンドシグナル

                              先ほどのチャートには以下の値があります。

                              • 下降トレンド
                              • 現在の終値
                              • 現在のVIDYA値
                                戦略2: VIDYA One Crossover

                                  以下は、この戦略の取引システムを作成するための完全なコードです。

                                  //+------------------------------------------------------------------+
                                  //|                                          VIDYA one crossover.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()
                                    {
                                     MqlRates priceArray[];
                                     double vidyaArray[];
                                  
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                     ArraySetAsSeries(vidyaArray,true);
                                  
                                     int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                  
                                     CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                  
                                     double currentClose=NormalizeDouble(priceArray[2].close,6);
                                     double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                  
                                     if(currentClose>vidyaVal)
                                       {
                                        Comment("Buy signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  
                                     if(currentClose<vidyaVal)
                                       {
                                        Comment("Sell signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  
                                  
                                    }
                                  //+------------------------------------------------------------------+

                                  このコードの相違点は次の通りです。

                                  この戦略に基づいてコメントします。

                                  1.買いシグナルの場合

                                     if(currentClose>vidyaVal)
                                       {
                                        Comment("Buy signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }

                                  2.売りシグナルの場合

                                     if(currentClose<vidyaVal)
                                       {
                                        Comment("Sell signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }

                                  このコードをコンパイルした後、以下のように目的のチャートに挿入します。

                                  VIDYA One Crossoverの接続

                                  先のチャートでわかるように、EAがチャートの右上に接続されています。その後、この戦略に基づき、売買のシグナルを得ることになります。システムテストの例を以下に示します。

                                  1.買いシグナルの場合

                                  VIDYA One Crossover - 買いシグナル

                                  前チャートの左上でわかるように、VIDYA One Crossoverを基準にすると、以下のような値になることがわかります。

                                  • 買いシグナル
                                  • 現在の終値
                                  • 現在のVIDYA値

                                  2.売りシグナルの場合

                                  VIDYA One Crossover - 売りシグナル

                                  先ほどのチャートの左上にあるように、次のような値を確認することができます。

                                  • 売りシグナル
                                  • 現在の終値
                                  • 現在のVIDYA値
                                    戦略3: VIDYA Two Crossover

                                      以下は、このVIDYA Two Crossover戦略の取引システムを作成するためのフルコードです。

                                      //+------------------------------------------------------------------+
                                      //|                                          VIDYA two crossover.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()
                                        {
                                         MqlRates priceArray[];
                                         double vidyaArray[];
                                         double vidyaArray1[];
                                      
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                         ArraySetAsSeries(vidyaArray,true);
                                         ArraySetAsSeries(vidyaArray1,true);
                                      
                                         int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                         int vidyaDef1 = iVIDyA(_Symbol,_Period,20,50,0,PRICE_CLOSE);
                                      
                                         CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                         CopyBuffer(vidyaDef1,0,0,3,vidyaArray1);
                                      
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                         double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                         double vidyaVal1 = NormalizeDouble(vidyaArray1[0],6);
                                      
                                         if(vidyaVal>vidyaVal1)
                                           {
                                            Comment("Buy signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      
                                         if(vidyaVal<vidyaVal1)
                                           {
                                            Comment("Sell signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      
                                      
                                        }
                                      //+------------------------------------------------------------------+

                                      このコードの相違点は次の通りです。

                                      価格用、vidyaArray、vidyaArray1の3つの配列を作成します。

                                         MqlRates priceArray[];
                                         double vidyaArray[];
                                         double vidyaArray1[];

                                      作成した配列を並び替えます。

                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                         ArraySetAsSeries(vidyaArray,true);
                                         ArraySetAsSeries(vidyaArray1,true);

                                      vidyaDefとvidyaDef1を定義します。

                                         int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                         int vidyaDef1 = iVIDyA(_Symbol,_Period,20,50,0,PRICE_CLOSE);

                                      vidyaArrayとvidyaArray1の配列に入力します。

                                         CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                         CopyBuffer(vidyaDef1,0,0,3,vidyaArray1);

                                      currentClose、vidyaVal、vidyaVal1の値を定義します。

                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                         double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                         double vidyaVal1 = NormalizeDouble(vidyaArray1[0],6);

                                      この戦略に基づいて生成されるシグナルの条件は次の通りです。

                                      1.買いシグナルの場合

                                         if(vidyaVal>vidyaVal1)
                                           {
                                            Comment("Buy signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }

                                      2.売りシグナルの場合

                                         if(vidyaVal<vidyaVal1)
                                           {
                                            Comment("Sell signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }

                                      このコードをコンパイルして、目的のチャートに挿入すると、次のようになります。

                                      VIDYA Two Crossoverの接続

                                      先のチャートでわかるように、EAがチャートの右上に接続されています。この戦略に基づく売買シグナルを見ることができるようになります。システムテストの例を以下に示します。

                                      買いシグナルの場合

                                      VIDYA Two Crossover - 買いシグナル

                                      前のチャートでわかるように、クロスオーバーの後、左上に次のような値があります。

                                      • 買いシグナル
                                      • 現在の終値
                                      • (9,12) VIDYAの現在値
                                      • (20,50) VIDYAの現在値

                                      売りシグナルの場合

                                      VIDYA Two Crossover - 売りシグナル

                                      もう1つのシナリオでは、前のチャートにあるように、クロスオーバーの後、左上に次のような値が表示されます。

                                      • 売りシグナル
                                      • 現在の終値
                                      • (9,12) VIDYAの現在値
                                      • (20,50) VIDYAの現在値


                                      結論

                                      この記事を通じて、VIDYA(Variable Index Dynamic Average、可変インデックス動的平均)が何であるかを明確にすることができるより多くのトピックを取り上げました。すべてのトピックが終わったので、それが詳細にお分かりになったかと思います。VIDYA(Variable Index Dynamic Average、可変インデックス動的平均)とは何か、何を測定する指標か、どのように手動で計算すればその主な概念を理解できるか、そしてどのようにチャートに挿入し読み取るかを確認しました。そのすべてを、「VIDYAの定義」で学びました。その後、「VIDYA戦略」を通して、以下のような戦略を学んだので、指標の主要概念に基づいた簡単な戦略を通して、どのように使うことができるかを学びました。

                                      • VIDYA Trend Identifier戦略:上昇トレンドと下降トレンドがある場合、トレンドタイプでシグナルを取得
                                      • VIDYA One Crossover戦略:価格とVIDYAラインのクロスオーバーに基づき、買いまたは売りのシグナルを取得
                                      • VIDYA Two Crossover戦略:設定値(9,12)のVIDYAと設定値(20,50)のVIDYAのクロスオーバーで売買シグナルを取得

                                      プログラミングに限らず、あらゆる学習プロセスにおいて、理解を深め、スキルを向上させるためには、練習が非常に重要なステップとなります。初心者のうちは、設計した取引システムのコードを自分で書いてみて、プログラミングスキルを身に付けていただければと思います。この記事の主な概念は教育目的であり、戦略を最適化したり変更したりする必要があるかもしれません。また、万人に適した戦略は存在しないため、読者の取引スタイルに適していないことが分かるかもしれません。

                                      この記事が読者の役に立ち、記事のトピックや関連するトピックについて良い洞察が得られたなら幸いです。似たような記事をもっと読んで、最も人気のあるテクニカル指標とその使い方や取引システムの設計方法について学びたい方は、この初心者向け連載の私の過去の記事を読んでみてください。RSI、MACD、ストキャスティック、移動平均、ボリンジャーバンド、エンベロープなどによる取引システムの設計についての記事があります。

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

                                      DIYテクニカル指標 DIYテクニカル指標
                                      この記事では、独自のテクニカル指標を作成できるアルゴリズムについて検討します。非常に単純な初期仮定で、非常に複雑で興味深い結果を得る方法を学びます。
                                      ニューラルネットワークが簡単に(第26部):強化学習 ニューラルネットワークが簡単に(第26部):強化学習
                                      機械学習の手法の研究を続けます。今回からは、もう1つの大きなテーマである「強化学習」を始めます。この方法では、モデルは問題を解決するためのある種の戦略を設定することができます。この強化学習の特性は、取引戦略を構築する上で新たな地平を切り開くものと期待されます。
                                      DoEasy-コントロール(第16部):TabControl WinFormsオブジェクト — 複数行のタブヘッダー、コンテナに合わせたヘッダーの伸び DoEasy-コントロール(第16部):TabControl WinFormsオブジェクト — 複数行のタブヘッダー、コンテナに合わせたヘッダーの伸び
                                      この記事では、TabControlの開発を続け、ヘッダーのサイズを設定するすべてのモードに対して、コントロールの4つの側面すべてにタブヘッダーの配置(通常、固定、右詰め)を実装します。
                                      データサイエンスと機械学習—ニューラルネットワーク(第02回):フィードフォワードNNアーキテクチャの設計 データサイエンスと機械学習—ニューラルネットワーク(第02回):フィードフォワードNNアーキテクチャの設計
                                      フィードフォワード(予測制御)ニューラルネットワークについて説明する前に、少し説明しておくことがあって、設計もその1つです。入力、隠れ層の数、および各ネットワークのノードに対する柔軟なニューラルネットワークを構築および設計する方法を見てみましょう。