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

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

MetaTrader 5トレーディング | 21 11月 2022, 09:51
147 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

今回は、他のテクニカルツールと組み合わせることで特に有利になる新しいテクニカルツールをご紹介します。Bears Powerテクニカル指標による取引システムの作り方を学びます。この連載の他の記事と同様に、物事の根本を理解して効果的に使うことを試みます。Bears Power指標について、以下のトピックを通して詳しく学びます。

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

「Bears Powerの定義」を通して、Bears Powerとは何か、何を測定するのか、どのように手動で計算すればこの指標の基本概念を学べるのか、そしてこの指標をどのようにMetaTrader 5取引プラットフォームに挿入して使用できるのかを学ぶことで、Bears Powerの詳細について知ることができます。基本を学び、この指標の主な概念を理解した後で、いくつかの簡単な戦略を通してこの指標の使い方を学び、理解を深め、この記事のトピックについてより多くの洞察を得て取引を改善します。これは「Bears Powerの戦略」トピックを通しておこなうことになります。次に、前述の戦略に基づいて取引システムを作成するための段階的な設計図を作成します。「Bears Power戦略の設計図」トピックで説明するように、このステップは取引をスムーズに作成するのに役立つため、非常に重要です。その後、この記事で最も興味深い「Bears Power取引システム」について説明します。MQL5(MetaQuotes言語)を使って、MetaTrader 5取引ターミナルで実行される、前述の戦略に基づいた取引を作成する方法を学ぶことができます。

学習プロセスにおいて練習は重要な要素であり、そうすることでそのテーマを非常によく理解できるようになります。MQL5のコードを書くためにMetaTrader 5取引プラットフォームとその内蔵IDEについて触れましたが、この記事ではこれを利用することにします。ダウンロードと使用方法については、以前の記事で「MetaEditorでMQL5コードを書く」トピックをお読みください。

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

では、トピックを開始します。


Bears Powerの定義

このトピックでは、Bears Powerとは何か、何を測定するのか、そしてMetaTrader 5でどのように計算し使用することができるのかを学ぶことを通して、Bears Powerの指標についてより詳細に学びます。Bears Powerは、ゼロ付近で振動するオシレーター系指標で、市場の弱気度を測ることができます。また、強気(ブル)がゲームに参加し、弱気(ベア)が弱体化したことを示すこともできます。市場を上下させるのは輸送手段とパワーであり、どの市場でも需要と供給が非常に重要であることは誰もが認識しています。ですから、ブルとベアがどれだけ市場をコントロールしているかを知ることが重要です。この指標は、この概念を測定し、ベアがどれだけ市場をコントロールしているかを確認するために、アレクサンダー・エルダー博士によって作成されました。

この指標がどのようにしてそれを実現するのかという疑問は、計算方法を学べば解決することができます。Bears Power指標を計算するためには、次のようにします。

  1. 期間の安値を取得する。
  2. 指数移動平均(EMA)を取得する。詳細を学ぶために、自分で計算します。そのために、私が以前書いた「さまざまな移動平均システムを設計する方法を学ぶ」で移動平均についてお読みください。
  3. 安値からEMAを引いてBears Powerの値を取得する。

安値 =期間中の最低値

EMA = 指数移動平均(Exponential Moving Average)

Bears Power =安値 - EMA

ベア(強気)は市場を支配しており、ほとんどの場合、市場を押し下げ続けていることが分かっています。そこで、Bears Powerの計算式では安値を使用します。これらのベアを測定するには、この安値と EMA の差を取得して、ゼロ レベル付近で振動するオシレーターを取得する必要があるからです。そして、その値がゼロレベルに近づいて上回った場合、弱気になったことを示す兆候を得ることができます。

他のトレンド指標と併用することで、この記事で紹介した戦略のようにこの指標でより効果的な洞察が得られるので、お勧めです。この概念は非常に壮大であり、テクニカル分析の美しい特徴の1つです。なぜなら、多くの概念を使ってより多くの洞察を得るために、異なる視点から商品を見ることができるからです。

MetaTrader 5にこの指標を挿入するには、取引ターミナルが開いた状態で[挿入]-->[インディケータ] -->[オシレーター]-->[ Bears Power]を選択します。これは、次の図からもわかります。

Bears Powerの挿入

[Bears Power]を選択してチャートに挿入すると、次のようなパラメータウィンドウが表示されます。

 Bears Powerのパラメータ

1 - 計算に使用する期間を決定する。

2 - Bears Powerのバーの色を決める。

3 - Bears Powerのバーの太さを決める。

これらのパラメータを決定し、[OK]を押すと、以下のようにチャートに指標が挿入されることがわかります。

Bears Powerの接続

前のチャートで分かるように、チャートの下の部分には指標が接続されており、すでに言及したように言及したようにそのバーはゼロの周りに振動します。ゼロ以下の値はベアがコントロールしていることを意味し、値がゼロに近づいて上回ると、ベアが弱くなったことを意味しします。


Bears Power戦略

このセクションでは、この指標の基本的な考え方に基づいて使える簡単な戦略を通じて、Bears Powerの使い方を学びます。以下は、これらの戦略とその条件です。ここで確認しておきたいのは、これらの戦略は、指標の背後にある主な概念とその使用方法を理解することが主な目的であるため、実際の口座で使用する前には、必ずテストして、自分の取引に適していることを確認する必要があるということです。

    戦略1:Bears Power Movement

      この戦略では、現在のBears Power値と前回のBears Power値の位置関係からシグナルを得る必要があります。現在の値が前回の値を上回れば、Bears Power指標の上昇のシグナルとなります。逆に、現在の値が前回の値を下回れば、Bears Powerの下降のシグナルとなります。

      単純に言うと次のようになります。

      現在のBears Power > 前回のBears Power → Bears Power上昇中

      現在のBears Power < 前回のBears Power → Bears Power下降中

        戦略2:Bears Power - Strong or Divergence

          この戦略では、現在の安値、前回の安値、Bears Power、前回のBears Powerの4つの値を評価し、強い動きやダイバージェンスがあるかどうかを知らせるシグナルを得る必要があります。現在の安値が前回の安値を下回り、現在のBears Powerの値が前回を下回れば、強い動きのシグナルとなります。一方、今回の安値が前回の安値を下回り、今回のベア値が前回を上回れば、強気のダイバージェンスのシグナルとなります。

          単純に言うと次のようになります。

          現在の安値 < 前回の安値、現在のBears Power < 前回のBears Power → 強い動き

          現在の安値 < 前回の安値、現在のBears Power > 前回のBears Power → 強気ダイバージェンス

            戦略3

              この戦略では、売買シグナルを得るためのトリガーが必要であり、そのための4つの値を評価することになります。この4つの値とは、現在のBears Power、ゼロレベル、現在の終値、現在の指数移動平均のことです。現在のBears Powerがゼロレベルを上回り、現在の終値が指数移動平均線を上回れば、買いのシグナルとなります。現在のBears Powerがゼロレベルを下回り、現在の終値が指数移動平均線を下回れば、売りのシグナルとなります。

              単純に言うと次のようになります。

              現在のBears Power > ゼロレベルかつ現在の終値 > EMA → 買い

              現在のBears Power < ゼロレベルかつ現在の終値 < EMA → 売り


              Bears Power戦略の設計図

              本テーマでは、それぞれの戦略について、ステップバイステップの設計図を作成し、この設計図に自分の考えを明確に整理した上で、その戦略の取引システムを円滑かつ容易に作成する方法を学ぶことができます。

                戦略1:Bears Power Movement

                  まず、私たちのステップを整理するために、プログラムに何をさせるかを理解する必要があります。そこで、コンピュータに2つの値をティックごとに確認させる必要がありますが、それは確実に現在のBears Powerの値と以前のBears Powerの値を作成してからになります。これらの値を確認して、どちらが大きいかを判断するプログラムが必要です。現在の値が前回を上回れば、プログラムかエキスパートアドバイザー(EA)が次のようなコメントのシグナルをチャートに返す必要があります。

                  • Bears Powerが上昇中
                  • Bears Power値
                  • 前回のBears Power値

                  すべての値を別々の行に表示する必要があります。 

                  もう1つのシナリオは、現在のBears Power値が前の値を上回る場合で、EAは次の値と別々の行に各値を持つコメントも返す必要があります。

                  • Bears Powerが下降している
                  • Bears Power値
                  • 前回のBears Power値

                  この戦略を使って取引システムを作るためのステップバイステップの設計図を以下に示します。

                  Bear&apos;s Power Movementの設計図

                    戦略2:Bears Power - Strong or Divergence

                      この戦略では、取引システムは、現在の安値、前回の安値、現在のBears Power値、前回のBears Power値の4つの値を確認する必要があります。その後、現在の安値が前回を下回り、同時に現在のBears Power値が前回を下回っているかどうかを判断する必要があります。取引システムは、以下の値のシグナルをチャートのコメントとして返す必要があります(それぞれの値は別々の行に表示されます)。

                      • 強い動き
                      • 現在の安値
                      • 前回の安値
                      • 現在のBears Power値
                      • 前回のBears Power値

                      一方、現在の安値が前回を下回り、同時に現在のBears Power値が前回を上回る場合、取引システムは以下の値のシグナルをチャートのコメントとして返す必要があります。

                      • 強気ダイバージェンス
                      • 現在の安値
                      • 前回の安値
                      • 現在のBears Power値
                      • 前回のBears Power値

                      以下は、この戦略に基づいた取引システムを構築するためのステップバイステップの設計図です。

                      Bears Power - Strong or Divergenceの設計図

                       

                        戦略3:Bears Power signals

                          この戦略では、現在のBears Power、ゼロレベル、現在の終値、現在の指数移動平均の4つの値をティックごとに確認する取引システムを作る必要があります。現在のBears Powerがゼロレベルを上回ると同時に現在の終値が指数移動平均を上回るかどうかを判断し、EAが以下の値のシグナルをチャートのコメントとして返す必要があります(それぞれの値は別々の行に表示されます)。

                          • 買いシグナル
                          • 現在の終値
                          • 現在のEMA値
                          • 現在のBears Power値

                          一方、現在のBears Power値がゼロを下回ると同時に現在の終値が指数移動平均を下回る場合、取引システムは以下の値のシグナルをコメントとして返す必要があります。

                          • 売りシグナル
                          • 現在の終値
                          • 現在のEMA値
                          • 現在のBears Power値

                          この戦略に基づいた取引システムを構築するのに考えを整理するためのステップバイステップの設計図を以下に示します。

                          Bears Power Signalsの設計図

                          Bears Power取引システム

                          このトピックでは、言及されている各戦略の取引システムの作成方法を学びますが、すべての戦略のベースとして使用するため、Bears Powerの現在値のシグナルをチャートのコメントとして返すBears Powerのシンプルな取引システムを作成します。

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

                          double型のbearpower配列を作成します。

                          double bearpowerArray[];

                          この作成した配列をArraySetAsSeries関数で並び替えて、ブール値を返します。

                          ArraySetAsSeries(bearpowerArray,true);

                          iBearsPower関数で指標のハンドルを返すことで、Bears Powerの指標を定義します。そのパラメータは次の通りです。

                          • symbol:(_Symbol)を使用して現在の銘柄に適用
                          • period:(_Period)を使用して、現在の期間または時間枠に適用
                          • ma_period:使用可能な移動平均の期間に13を使用
                          int bearpowerDef = iBearsPower(_Symbol,_Period,13);

                          CopyBuffer関数を使ってVolumes指標からデータを取得し、配列に入力します。この関数のパラメータは次の通りです。

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

                          NormalizeDouble関数で変数を作成後、double型の値を返すbearpowerValを定義します。この関数のパラメータは次の通りです。

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

                          Comment関数を使って、現在のBears Powerの値をチャートにコメントとして生成する必要があります。

                          Comment("Bear's Power Value is ",bearpowerVal);

                          この取引システムを作るための設計図は以下の通りです。

                          //+------------------------------------------------------------------+
                          //|                                          Simple Bear's Power.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 bearpowerArray[];
                          
                             ArraySetAsSeries(bearpowerArray,true);
                          
                             int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                          
                             CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                          
                             double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                          
                             Comment("Bear's Power Value is ",bearpowerVal);
                          
                            }
                          //+------------------------------------------------------------------+

                          この取引システムのEAがナビゲータウィンドウで次のように表示されるようになります。

                          Bears Powerナビゲータ

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

                           Simple Bears Powerウィンドウ

                          [OK]を押すと、下図のようにEAがチャートに表示されます。

                          Simple Bears Powerの接続

                          先ほどのチャートでわかるように、EAが右上に接続されています。テスト時の例として、以下のようにチャートにシグナルが生成されます。

                          シンプルBears Powerシグナル

                          先ほどのチャートの左上にあるように、現在のBears Powerの値が表示されます。

                            戦略1: Bears Power Movement

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

                              //+------------------------------------------------------------------+
                              //|                                        Bear's Power Movement.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 bearpowerArray[];
                              
                                 ArraySetAsSeries(bearpowerArray,true);
                              
                                 int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                              
                                 CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                              
                                 double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                 double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                              
                                 if(bearpowerVal>bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is rising","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                              
                                 if(bearpowerVal<bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is declining","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              このコードの相違点

                              現在のBears Power値「bearpowerVal」と前回のBears Power値「bearpowerPrevVal」を定義します。

                                 double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                 double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);

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

                              上昇の場合:

                                 if(bearpowerVal>bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is rising","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }

                              下降の場合:

                                 if(bearpowerVal<bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is declining","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }

                              このコードをコンパイルすると、ナビゲータウィンドウに下図のように表示されます。

                              Bears Powerナビ2

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

                               Bears Power Movementウィンドウ

                              [OK]を押すと、次のようにチャートに接続されることがわかります。

                              Bears Power Movementの接続

                              先のチャートでわかるように、EAがチャートの右上に接続されています。そのシグナルに応じて、以下のようなシグナルが生成されます。

                              現在のデータで上昇した場合:

                               Bears Power Movement - 上昇 - 現在のデータ

                              前のチャートの上部にあるように、上昇シグナル、現在のBears Power値、前回のBears Power値が表示されています。データウィンドウでは、Bears Powerの現在値を知ることができます。

                              前データで上昇した場合:

                              Bears Power Movement - 上昇 - 前回のデータ

                              前のチャートで見たように、データウィンドウには前回のBears Power値が表示されるという違いがあります。

                              現在のデータで下降した場合:

                              Bears Power Movement - 下降 - 現在のデータ

                              前チャートの上部でわかるように、下落シグナル、現在のベアのパワー値、前回のBears Power値が表示されています。データウィンドウでは、Bears Powerの現在値を知ることができます。

                              前回のデータで下降した場合:

                               Bears Power Movement - 下降 - 前回のデータ

                              前のチャートで見たように、データウィンドウにBears Powerの最後の値が表示されるという違いがあります。

                                戦略2: Bears Power - Strong or Divergence

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

                                  //+------------------------------------------------------------------+
                                  //|                          Bear's Power - Strong or Divergence.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 bearpowerArray[];
                                     MqlRates priceArray[];
                                  
                                     ArraySetAsSeries(bearpowerArray,true);
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                  
                                     int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                  
                                     CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                  
                                     double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                     double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                                  
                                     double currentLowVal=NormalizeDouble(priceArray[2].low,6);
                                     double prevLowVal=NormalizeDouble(priceArray[1].low,6);
                                  
                                     if(currentLowVal<prevLowVal && bearpowerVal<bearpowerPrevVal)
                                       {
                                        Comment("Strong Move","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                  
                                     if(currentLowVal<prevLowVal && bearpowerVal>bearpowerPrevVal)
                                       {
                                        Comment("Bullish divergence","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

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

                                  bearpowerArrayとpriceArrayの2つの配列を作成します。

                                     double bearpowerArray[];
                                     MqlRates priceArray[];

                                  作成した配列の並び替えは、bearpowerArrayについては、以前と同じようにArraySetAsSeries関数を使用します。priceArrayについては、次のパラメータでMqlRatesの履歴データを取得するCopyRates関数を使用します。

                                  • 銘柄名:_Symbolを使用
                                  • timeframe:_Periodを使用
                                  • 開始時間:0を使用
                                  • 停止時間:3を使用
                                  • レート配列:pArrayを使用
                                     ArraySetAsSeries(bearpowerArray,true);
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

                                  NormalizeDouble関数によってBears Powerと安値の現在値と前回値を定義します。

                                     double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                     double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                                  
                                     double currentLowVal=NormalizeDouble(priceArray[2].low,6);
                                     double prevLowVal=NormalizeDouble(priceArray[1].low,6);

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

                                  強い動きの場合

                                     if(currentLowVal<prevLowVal && bearpowerVal<bearpowerPrevVal)
                                       {
                                        Comment("Strong Move","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }

                                  強気ダイバージェンスの場合:

                                     if(currentLowVal<prevLowVal && bearpowerVal>bearpowerPrevVal)
                                       {
                                        Comment("Bullish divergence","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }

                                  このコードをコンパイルした後、ナビゲータウィンドウでこの取引システムのEAを見つけることができます。

                                  Bears Powerナビ3

                                  このEAを目的のチャートにドラッグ&ドロップすると、次のようなウィンドウが表示されます。

                                  Bears Power - Strong or Divergenceのウィンドウ

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

                                   Bears Power - Strong or Divergenceの接続

                                  先のチャートでわかるように、チャートの右上には、Strong or DivergenceのEAが接続されています。そして、この戦略に基づき、以下のように生成されたシグナルを見つけることができます。

                                  現在のデータでの強い動きの場合:

                                   Bears Power - Strong or Divergence - 強力 - 現在のデータ

                                  チャート上で見ることができるように、次の値のコメントのような、目的のシグナルがあります。

                                  • 強い動き
                                  • 現在の安値
                                  • 前回の安値
                                  • 現在のBears Power値
                                  • 前回のBears Power値 

                                  過去のデータで強い場合:

                                   Bears Power - Strong or Divergence - 強力 - 前回のデータ

                                  前のチャートでわかるように、同じ値のチャート上シグナルと同じコメントがありますが、前のデータウィンドウを使用しています。

                                  現在のデータウィンドウでの強気ダイバージェンス:

                                  Bears Power - 強気ダイバージェンス - 現在のデータ

                                  先ほどのチャートでわかるように、以下の値がチャートにコメントとされています。

                                  • 強気ダイバージェンス
                                  • 現在の安値
                                  • 前回の安値
                                  • 現在のBears Power値
                                  • 前回のBears Power値  

                                  前回のデータウィンドウでの強気ダイバージェンス:

                                   Bears Power - 強気ダイバージェンス - 前回のデータ

                                  前のチャートで見たように、前のデータウィンドウと同じ値のコメントがチャート上に表示されています。

                                    戦略3:Bears Power signals

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

                                      //+------------------------------------------------------------------+
                                      //|                                         Bear's Power signals.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 bearpowerArray[];
                                         double maArray[];
                                         MqlRates priceArray[];
                                      
                                         ArraySetAsSeries(bearpowerArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                      
                                         int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                         int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);
                                      
                                         CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                      
                                         double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                      
                                         double emaVal = NormalizeDouble(maArray[0],6);
                                      
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                      
                                         if(bearpowerVal>0 && currentClose>emaVal)
                                           {
                                            Comment("Buy Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                      
                                         if(bearpowerVal<0 && currentClose<emaVal)
                                           {
                                            Comment("Sell Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                        }
                                      //+------------------------------------------------------------------+
                                      

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

                                      bearpowerArray、naArray、priceArrayの3つの配列を作成します。

                                         double bearpowerArray[];
                                         double maArray[];
                                         MqlRates priceArray[];

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

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

                                      Bears Powerは前回と同じiBearsPower、移動平均は移動平均のハンドルを返すiMA関数で定義しています。

                                         int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                         int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);

                                      CopyBuffer関数で配列に入力して、Bears Powerと移動平均の指標からデータを取得します。

                                         CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                         CopyBuffer(maDef,0,0,3,maArray);

                                      現在のBears Power、指数移動平均、現在の終値を定義します。

                                         double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                         double emaVal = NormalizeDouble(maArray[0],6);
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);

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

                                      買いシグナルの場合:

                                         if(bearpowerVal>0 && currentClose>emaVal)
                                           {
                                            Comment("Buy Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }

                                      売りシグナルの場合:

                                         if(bearpowerVal<0 && currentClose<emaVal)
                                           {
                                            Comment("Sell Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }

                                      このコードをコンパイルすると、ナビゲータウィンドウに下図のように表示されます。

                                      Bears Powerナビコピー4

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

                                      Bears Power Signalsウィンドウ

                                      [OK]を押すと、下図のようにEAがチャートに表示されます。

                                       Bears Power Signalsの接続

                                      チャートの右上にEAが接続しているのがわかります。この取引システムに基づき、次のようなシグナルを生成することができます。

                                      買いシグナルの場合:

                                       Bears Power Signals - 買い

                                      チャートを見るとわかるように、次のような値を持つコメントがあります。

                                      • 買いシグナル
                                      • 現在の終値
                                      • 現在のEMA値
                                      • Bears Power値

                                      売りシグナルの場合:

                                      Bears Power Signals - 売り

                                      チャート上で見ることができるように、チャート上に目的のシグナルが以下の値をもつコメントとして表示されます。

                                      • 売りシグナル
                                      • 現在の終値
                                      • 現在のEMA値
                                      • Bears Power値


                                      結論

                                      これまでのトピックを通じて、この指標の基本を網羅できたと思います。Bears Power指標とは何か、何を計測するのか、どのように計算するのか、MetaTrader5内蔵のBears Power指標をどのように挿入し使用するのかを「Bears Power定義」を通してより詳しく学びました。この指標を詳しく理解した後、指標の背後にある基本的な考えに基づいて、指標の使用方法を学びました。これらの戦略の基本的な目的は、この指標の使用方法を学ぶことです。実際の口座で使用する前には、テストして、ご自分に適していて、それらによって利益を生成できることを確認する必要があります。これらの戦略は、次のようなものでした。

                                      Bears Power Movement:この戦略は、Bears Power指標が上昇中か下降中かを判断するために使用することができます。

                                      Bears Power Strong or Divergence:この戦略は、強い動きやダイバージェンスがあるかどうかを判断するために使用することができます。

                                      Bears Power signals:この戦略は、売買シグナルを得るために使用することができます。

                                      その後、すべての戦略について、ステップバイステップで設計する方法を学び、この設計図を通して考えを整理した後、円滑かつ容易に取引システムを作成することができるようになりました。そして、この記事で最も興味深いトピックは、MQL5でコーディングした後に自動的にシグナルを取得し、MetaTrader 5取引ターミナルで実行するための各戦略の取引システムを作成することでした。

                                      自分でコードを書いてみることで、コーディングや学習プロセスを改善することができ、プログラマーとしての学習効果を高めることができるので、まだならばぜひやってみてください。プログラミングのスキルを向上させるためには、できる限りコードに注意を払い、できる限り問題を解決する必要があります。プログラミングは、スムーズに、簡単で効果的に、そして正確に取引するために、私たちが向上させなければならない重要なスキルです。それはまた、私達が通常、特定の決定された手順でおこなうことをおこなってくれるため、時間を節約できます。コンピュータやプログラムは自動的に私たちに有利にそれをおこなうことができます。プログラムは私たちが必要とすることを感情なしでおこなうようにできるので、このアプローチは、取引に悪影響を及ぼし非常に有害になりかねない感情を避けるためる手助けとなります。

                                      この記事が読者の取引を強化し、取引結果を向上させるために役立つことを願っています。最も人気のあるテクニカル指標に基づいて取引システムを設計する方法を学び、より多くの同様の記事を読みたい場合は、本連載の他の記事をお読みください。これらの記事では、多くのテクニカル指標の背後にある基本的な概念に基づいて、単純な戦略を通じて、それらに基づいて取引システムを設計しています。これらの記事には、例えば移動平均、MACD、ストキャスティクス、RSI、ADXなど、最も人気のあるテクニカル指標が多数掲載されています。

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

                                      ニューラルネットワークが簡単に(第24部):転移学習用ツールの改善 ニューラルネットワークが簡単に(第24部):転移学習用ツールの改善
                                      前回の記事では、ニューラルネットワークのアーキテクチャを作成および編集するためのツールを作成しました。今日はこのツールでの作業を続けて、より使いやすくします。これは、私たちのトピックから一歩離れていると思われるかもしれませんが、うまく整理されたワークスペースは、結果を達成する上で重要な役割を果たすと思われないでしょうか。
                                      DoEasy-コントロール(第14部):グラフィック要素に名前を付けるための新しいアルゴリズム。TabControl WinFormsオブジェクトへの作業の継続 DoEasy-コントロール(第14部):グラフィック要素に名前を付けるための新しいアルゴリズム。TabControl WinFormsオブジェクトへの作業の継続
                                      この記事では、カスタムグラフィックを構築するためのすべてのグラフィック要素に名前を付けるための新しいアルゴリズムを作成し、TabControl WinFormsオブジェクトの開発を継続する予定です。
                                      DoEasy-コントロール(第15部):TabControl WinFormsオブジェクト — 複数行のタブヘッダー、タブ処理メソッド DoEasy-コントロール(第15部):TabControl WinFormsオブジェクト — 複数行のタブヘッダー、タブ処理メソッド
                                      この記事では、TabControl WinFormオブジェクトの作業を続けます。タブフィールドオブジェクトクラスを作成して複数の行にタブヘッダーを配置できるようにし、オブジェクトタブを処理するメソッドを追加します。
                                      データサイエンスと機械学習—ニューラルネットワーク(第01回):フィードフォワードニューラルネットワークの解明 データサイエンスと機械学習—ニューラルネットワーク(第01回):フィードフォワードニューラルネットワークの解明
                                      ニューラルネットワークの背後にある操作全体は、多くの人に気に入られていますが、ほとんどの人に理解されていません。この記事では、フィードフォワード型の多層知覚の密室の背後にあるすべてを平易な言葉で説明しようとします。