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

ストキャスティクスによる取引システムの設計方法を学ぶ

MetaTrader 5トレーディング | 8 8月 2022, 14:48
638 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

テクニカル分析取引で最も素晴らしいことの1つは、多くのツールがあり、1つのツールを個別に使用することも複数のツールを組み合わせることもできるということです。これは私たちにとって便利で有益です。さらに、取引結果とパフォーマンスを向上させるためには非常に役立つ素晴らしいツールがあります。このツールはプログラミングで、非常に便利で役立つプログラムを作ることができます。自らの条件に合わせて、必要なことを自動的かつ正確におこなうようコンピューターに指示を与えるのです。

この記事は、このテクニカルトレーディングと収益性の高い取引戦略のプログラミングという文脈で何が役立つか学んで教えようとするあと1つの貢献です。この記事では、取引に役立つ新しいツールについて説明します。それは、テクニカル分析で最も人気のある指標の1つである「ストキャスティックスオシレータ」です。連載の他の記事を読んでいただければわかると思いますが、私は物事の根源を学び、教えることが好きで、物事の詳細や仕組みについてできるだけ理解したいと思っています。このトピックも同じ手法で議論してみます。今回取り上げるトピックは次です。

    1. ストキャスティックスの定義
    2. ストキャスティックス戦略
    3. ストキャスティックスの設計図
    4. ストキャスティックス取引システム
    5. 結論

      「ストキャスティクスの定義」では、ストキャスティクスオシレータとは何か、何を測定する指標なのかについて詳しく学んでいきます。次に、「ストキャスティックス戦略」では、簡単に使える戦略を学びます。その後、これらのシンプルな戦略をMQL5でコーディングし、さらにMetaTrader 5で使用できるようにするための設計図を設計します。これは「ストキャスティックの設計図」で検討します。次に、これらのシンプルな戦略の取引システムを設計するためのコードの書き方を学びます。これは、「ストキャスティックス取引システム」のトピックでおこないます。

      MetaTrader 5の取引ターミナルとMetaQuotes言語(MetaTrader 5に内蔵)を使用する予定です。ターミナルは、https://www.metatrader5.com/ja/downloadからダウンロードできます。

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

      さて、これから新しい興味深いトピックについての新しい旅が始まります。


      ストキャスティックスの定義

      このセクションでは、最も人気のあるテクニカル指標の1つであるストキャスティックスオシレータについて詳しく学びます。これは、ジョージ・レーンによって開発されたとペリー・J・カウフマンの「New Trading Systems and Methods」にも記載されていますが、それについては他の意見もあります。その1つは、誰がストキャスティクスという指標を作ったのか絶対的に明確ではないというもので、これはチャールズ・D・カークパトリックとジュリー・R・ダールクイストの著書「Technical Analysis, The Complete Resource for Financial Market Technicians」で述べられています。もう1つは、ジョン・J・マーフィーの著書「Technical Analysis of The Financial Markets」で述べられているように、この指標はジョージ・レーンが広めたとする意見です。

      上昇トレンドでは、終値が一定期間価格帯の上限に近づく傾向があり、逆に下降トレンドでは、終値が一定期間価格帯の下限に近づく傾向があるという観測があったため、ストキャスティックス指標が開発されました。これは、現在の終値と、特定期間の最高値・最安値の両方との関係を測定するものです。

      ストキャスティックスオシレータは2本の線で構成され、この2本の線はゼロレベルと100レベルの間で振動しています。

      • %Kラインは最速のラインです。
      • %Dラインは最も遅いラインであり、平滑化されています。

      ストキャスティックスオシレータには、複数のバージョンがあります。最も人気のあるバージョンは次の2つです。

      • 高速ストキャスティクス
      • 低速ストキャスティクス

      違いはストキャスティックスオシレータの計算方法でわかります。

      ストキャスティックスオシレータ指標の計算方法は以下の通りです。

      1. 指標を算出するために必要な期間を決定する。
      2. 決定された期間の最高値を決定する。
      3. 決定された期間の最安値を決定する。
      4. 高速ストキャスティクスの%Kを取得する = 100*((現在の終値-最安値)/(最高値-最安値))
      5. 高速ストキャスティクスの%Dを取得する = 高速ストキャスティクスの%Kの3移動平均
      6. 低速ストキャスティクスの%Kを取得する = 高速ストキャスティクスの%D
      7. 低速ストキャスティクスの%Dを取得する=( 高速ストキャスティクスの%Dと同じ低速ストキャスティクスの%K)の3移動平均 

      では、これらの計算を応用して、ストキャスティクスオシレータという指標を取得する例を見てみましょう。次のデータがあるとします。

      終値 高値 安値
      1 100 110 90
      2 130 140 120
      3 140 160 120
      4 130 150 110
      5 120 140 100
      6 140 150 130
      7 160 170 150
      8 170 180 160
      9 155 170 150
      10 140 170 130
      11 160 180 155
      12 180 190 175
      13 190 220 190
      14 200 230 200
      15 210 215 205
      16 200 200 190
      17 190 195 180
      18 185 105 180
      19 195 210 185
      20 200 220 190

      ストキャスティクスオシレータを計算するためには、先に述べた手順に従うので、以下のようになります。

      • 期間=14となるので、まず取引期間が14なければ、指標の計算を開始することはできません。
      • 過去14期間の最高値を決定すると(230)になります。次の図は、最初の値と残りのデータについてそれを示しています。

      14最高値

      • 過去14期間の最安値を決定すると(90)になります。次の図は、最初の値と残りのデータについてそれを示しています。

      14最安値

      • 高速ストキャスティクスの%K = 100*((現在の終値 - 最安値)/(最高値 - 最安値))を取得します。 
      • 高速ストキャスティクスの%D = 高速ストキャスティクスの%Kの3移動平均を取得します。
      • 次の図は、利用可能なデータの計算結果を示しています。

      高速 - K-D

      • 低速ストキャスティクスの%K = 高速ストキャスティクスの%Dを取得します。
      • 低速ストキャスティクスの%D = 低速ストキャスティクスの%Kの3移動平均を取得します。
      • 次の図は、利用可能なデータの計算結果を示しています。

      低速 - K-D

      これまでの手順で、ストキャスティックスオシレータを手動で計算しました。幸いなことに、MetaTrader5の取引ターミナルにはすぐに使える組み込みの指標があるので、毎回手動で計算する必要はありません。次の図に示すように、MetaTrader 5から[挿入]タブをクリックして、プラットフォームで利用可能な指標のリストから選択することができます。

      Stoch挿入

      [Stochastic Oscillator]を選択すると、以下のウインドウが表示され、指標のパラメータが表示されます。

      Stoch挿入ウィンドウ

      指標のパラメータは次をおこないます。

      1. 期間を決定する
      2. %D高速の移動平均の期間を決定する
      3. %D低速の移動平均の期間を決定する
      4. それとの関係を測定するために提出された価格を決定する
      5. 計算で使用する移動平均の種類を決定する
      6. %Kの線の色、スタイル、太さを決定する
      7. %Dの線の色、スタイル、太さを決定する

      好みに合わせてパラメータを決定すると、チャートに指標が貼り付けられ、以下の図のように表示されます。

      チャート上のStoch

      ストキャスティックオシレータを挿入した後、前の画像によって、指標が下のウィンドウに0から100の間で振動する2本の線(%K、%D)でプロットされており、それが以下のものと同じであることがわかります。

      • Stoch(14, 3,3):指標の名前と選択されたパラメータ(14期間、高速ストキャスティクスの%Dの移動平均で3期間、高速ストキャスティクスの%Dで3期間)を表す
      • 36.85:%K値を表す
      • 38.28:%D値を表す

      ストキャスティックスオシレータの計算では、相場の動きによって終値が特定期間の値幅の上下に近づく傾向があることが分かっているため、ほとんどの場合、特定の形で相場の方向へ動くと考えられます。

      上昇トレンドの間:

      上昇トレンドとは、買い手(ブル)のコントロールにより価格が上昇する相場の方向性をいいます。通常、安値と高値が上がります。この場合、この市場は強気相場と呼ぶことができます。

      この市場の方向性の間、ほとんどの場合、「上昇トレンド」の動きの期間中、終値は価格帯の上部近くで閉じる傾向があり、ストキャスティクス指標は 50 レベルと 100 レベルの間で振動することがわかります。この状況の一例を次の図に示します。

      上昇トレンド中のストキャスティクス

      下降トレンドの間:

      下降トレンドとは、売り手(ベア)のコントロールにより価格が下降する相場の方向性のことです。高値と安値が下がります。この場合、この市場は弱気相場と呼ぶことができます。

      このような相場では、ほとんどの場合、終値はその「下降トレンド」の動きの期間の値動きの下限付近で閉じる傾向があります。そのため、ストキャスティクス指標は、下降の動きの期間では50レベルと0レベルの間で推移することがわかります。この状況の一例を次の図に示します。

      下降トレンド中のストキャスティクス

      横ばいの間:

      横ばいとは、上下どちらにも明確な方向性がない値動きのことです。買い手と売り手あるいは強気と弱気のバランスがとれている考えることができます。これは上昇トレンドと下降トレンド以外のあらゆる動きのことです。

      横ばいの間は、上にも下にも明確な動きはなく、価格はその期間の中間値付近で閉じる傾向があるため、ストキャスティクスは20と80のレベルで動くことが多くなります。次の図はその例です。

      横ばい時のストキャスティクス

      さて、ここまででストキャスティックス指標が様々な相場の動きの中でどのように動作するかを分析してきました。次に、このトピックを通して、それをどのように活用するかを学びます。


      ストキャスティックス戦略

      このセクションでは、簡単な戦略を通して、この指標をどのように使うことができるかをお話します。ストキャスティクスでは、上昇トレンド、下降トレンド、横ばいトレンドなど、相場の流れに沿ったシグナルを得ることができます。

      • 戦略1:上昇トレンド戦略

      この戦略では、%Kラインと%Dラインが50レベル以下であることを確認し、%Kラインが%Dラインを上回ったら買いシグナルを出します。例えば、安値を探すなど、プライスアクションのような別の有効なツールに従って利食いすることができます。

      %K, %D < 50 --> %K > %D = 買いシグナル
        • 戦略2:下降トレンド戦略

        この戦略では、%Kラインと%Dラインが50レベルを上回ることを確認し、%Kラインが%Dラインを下にクロスしたら売りシグナルを出します。例えば、高値を探すなどして、プライスアクションのような別の有効なツールに従って利食いすることができます。

        %K, %D > 50 --> %K < %D = 売りシグナル
          • 戦略3:横ばい戦略
            • 買いシグナル

          この戦略では、%Kラインと%Dラインが20レベルを下回ることを確認し、%Kラインが%Dラインを上にクロスしたら買いシグナルを出します。%Kラインと%Dラインが80を上回る場合、%Kラインが%Dラインを下にクロスしたら利食いシグナルを出します。

          %K, %D < 20 --> %K > %D = 買いシグナル
          %K, %D > 80 --> %K < %D = 利食い

              • 売りシグナル

                この戦略では、%Kラインと%Dラインが80レベルを上回ることを確認し、%Kラインが%Dラインを下にクロスしたら売りシグナルを出します。%Kラインと%Dが20レベルを下回る場合、%Kラインが%Dラインを上にクロスしたら利食いシグナルを出します。

                %K, %D > 80 --> %K < %D = 売りシグナル
                %K, %D < 20 --> %K > %D = 利食い

                ストキャスティクスには、シンプルなものから複雑なものまで多くの戦略があり、この指標を単独で使うことも、他のツールと組み合わせてより良い結果を出すこともできますが、ここでは、この指標の使い方を理解するために、シンプルな戦略のみを紹介します。


                  ストキャスティックスの設計図

                  このセクションでは、先に述べた戦略の設計図を作成し、取引システムを簡単に作成できるようにします。この設計図は、私たちがプログラムに何を求めているかを正確に把握するためのステップバイステップのガイドラインになります。

                  • 戦略1:上昇トレンド戦略

                  %K, %D < 50 --> %K > %D = 買いシグナル

                  まず(%K, %D)をチェックして、それが50レベルより下か上かを判断します。50レベルより下であれば、%Kラインが%Dラインを上回るまで何もしないで待ち、買いシグナルを出します。(%K, %D)が50レベル以上の場合、プログラムは何もしません。

                  次の図は、この上昇トレンド戦略の設計図です。

                  SSS-上昇トレンド戦略の設計図

                  • 戦略2:下降トレンド戦略

                  %K, %D > 50 --> %K < %D = 売りシグナル

                  まず(%K, %D)をチェックして、それが50レベルより上か下かを判断します。50レベルより上であれば、%Kラインが%Dラインを下回るまで何もしないで待ち、売りシグナルを出します。(%K, %D)が50レベル以下の場合、プログラムは何もしません。

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

                  SSS-下降トレンド戦略の設計図

                  • 戦略3:横ばい戦略

                  買いシグナル

                  %K, %D < 20 --> %K > %D = 買いシグナル

                  %K, %D > 80 --> %K < %D = 利食い

                  まず (%K, %D) をチェックして、それが20レベルより下か上かを判断します。20レベルより下であれば、%Kラインが%Dラインを上回るまで何もしないで待ち、買いシグナルを出します。(%K, %D)が20レベル以上の場合、プログラムは何もしません。次に、(%K, %D)をチェックして、それが80レベルより上か下かを判断します。もし80レベルより上なら、%Kラインが%Dラインを下回るまで何もしないで待ち、利食いシグナルを出します。(%K, %D)が80レベル以下の場合、プログラムは何もしません。

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

                  SSS-横ばい戦略-買いの設計図

                  売りシグナル

                  %K, %D > 80 --> %K < %D = 売りシグナル

                  %K, %D < 20 --> %K > %D = 利食い

                  まず(%K, %D)をチェックして、それが80レベルより上か下かを判断します。80レベルより上であれば、%Kラインが%Dラインを下回るまで何もしないで待ち、売りシグナルを出します。(%K, %D)が80レベル以下の場合、プログラムは何もしません。次に、(%K, %D)をチェックし、それが20レベルより下か上かを判断します。20レベルより下であれば、%Kラインが%Dラインを上回るまで何もしないで待ち、知食いシグナルを出します。(%K, %D)が20レベル以上の場合、プログラムは何もしません。

                  次の図は、この横ばい戦略の売りシグナルの設計図です。

                  SSS-横ばい戦略 - 売りの設計図

                  これまで、ストキャスティックス指標が使える簡単な戦略を考え、その戦略の設計図を作成し、取引システムの作成に役立てました。次のセクションでは、この取引システムをどのように設計するかについて学びます。


                  ストキャスティックス取引システム

                  次に、これらの戦略によって機能する取引システムをどのようにコーディングするかという、この記事の興味深い部分に着手します。プログラミングは、取引の正確性に加え、取引決定に感情を伴わずに規律正しく計画や戦略を実行するのに役立つ効果的な取引を行うための素晴らしいツールですが、最も重要なことは、戦略を実行する前にあらゆる戦略をテストすることです。では、先に述べた戦略に従って、取引システムを書いてみましょう...。

                  まず、チャート上のストキャスティクスの線の値を提供するプログラムのコードを書く必要があります。このコードを書くことによって、この手順の後にト取引システムを理解し作成することができるように、書いている内容を一行ずつ学んでいくことになります。

                  まず、%Kラインと%Dラインの配列を作成し、小数部を含む値を表現する「double」を使用します。

                  double Karray[];
                  double Darray[];
                  

                  次に、「ArraySetAsSerious」関数を使用して、これらの作成された配列を現在のデータから並び替えます。

                  ArraySetAsSeries(Karray, true);
                  ArraySetAsSeries(Darray, true);

                  次に「Stochastic」指標を定義する必要があります。「iStochastic」関数を使用して、「Stochastic」の定義と等しくなるような「StochDef」変数を作成します。

                  int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);

                  次に、「CopyBuffer」関数を使用して、配列に価格データを配置します。

                  CopyBuffer(StochDef,0,0,3,Karray);
                  CopyBuffer(StochDef,1,0,3,Darray);
                  

                  現在のデータの%K行と%D行の値を計算し、端数のサイズを小さくして近似させるために「float」を使用します。

                  float KValue = Karray[0];
                  float DValue = Darray[0];
                  

                  最後のコードでは、「Comment」関数を使用して%Kラインと%Dラインの値を2本の線でチャートに表示します。

                  Comment("%K value is ", KValue,"\n""%D Value is ",DValue);

                  以下は、前のコードと同じですが、必要であれば一度にコピーできるように1ブロックになっています。

                  //+------------------------------------------------------------------+
                  //|                       Simple Stochastic System - Lines Value.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 arrays for %K line and %D line   
                     double Karray[];
                     double Darray[];
                     
                  //sorting arrays from the current data   
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                  
                  //defining the stochastic indicator   
                     int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
                  
                  //filling arrays with price data   
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                  
                  //calculating value of %K and %D line of cuurent data  
                     float KValue = Karray[0];
                     float DValue = Darray[0];
                     
                  //commenting calcualted values on the chart   
                     Comment("%K value is ",KValue,"\n"
                     "%D Value is ",DValue);
                        
                    }
                  //+------------------------------------------------------------------+

                  ここまでで、ストキャスティクス指標のラインの現在値をチャート上に表示するプログラムのコードを書きましたが、コンパイル後にナビゲータウィンドウに表示されているように、このプログラムを取引ターミナルであるMeta Trader5で実行する必要があります。

                  ナビゲータ1

                  Simple Stochastic System - Lines Valueファイルをドラッグ&ドロップすると、以下のウィンドウが表示されます。

                  SSS - Lines Valueウィンドウ


                  [OK]を押すと、下図のように、プログラムまたはEAがチャートに接続されます。

                  SSS - Lines Valueの接続

                  下図のようなストキャスティクス直線の値が生成されることがわかります。

                  SSS - Lines Value

                  ここで必要なのは、使用する戦略に応じた適切なシグナルをチャート上にコメントとして表示することができる取引システムを作成することです。始めてみましょう.。

                  • 戦略1:上昇トレンド戦略

                  %K, %D < 50 --> %K > %D = 買いシグナル

                  次のコードは、この上昇トレンド戦略に従って必要なものを実行するための取引システムを作成するためのものです。

                  //+------------------------------------------------------------------+
                  //|                  Simple Stochastic System - Uptrend 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                     
                     if (KValue0<50&&DValue0<50)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                     Comment("SSS - Uptrend Strategy - Signal is ",signal);
                        
                    }
                  //+------------------------------------------------------------------+

                  ここでの違いは次の通りです。

                  後で計算するので、空の「signal」変数を作成しました。

                  string signal="";

                  現在のデータと現在の前のデータに対して、%K値(0,1)の変数と%D値(0,1)の変数を2つ作成しました。

                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];

                  %Kと%Dのクロスを評価するには、アップへのクロスが必要で、言い換えれば、このクロスの後に上に移動するには、%Kが%Dをアップにブレークする必要があり、これは「if」のラインコードに見られることです。

                     if (KValue0<50&&DValue0<50)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        

                  クロスの評価後、それが真であれば「BUY」のシグナルが必要であり、これが「シグナル」の割り当てとなります。このシグナルをチャート上にコメントする必要がありますが、それは次のコードの行に従うことになります。

                  Comment("SSS - Uptrend Strategy - Signal is ",signal);

                  プログラムのコードを作成し、コンパイルした後、ナビゲータウィンドウで見つけることができます。

                  ナビゲータ2

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

                  SSS-Uptrendウィンドウ


                  [OK]を押すと、接続されます。

                  SSS-上昇トレンドの接続

                  テスト中は、以下の例と同じようにシグナルが表示されます。

                  SSS - 上昇トレンド -買い

                  • 戦略2:下降トレンド戦略

                  %K, %D > 50 --> %K < %D = 売りシグナル

                  以下は、この下降トレンド戦略を実行するプログラムを作成するためのものです。

                  //+------------------------------------------------------------------+
                  //|                Simple Stochastic System - Downtrend 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                           
                     if (KValue0>50&&DValue0>50)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                     Comment("SSS - Downtrend Strategy - Signal is ",signal);
                        
                    }
                  //+------------------------------------------------------------------+

                  違いは次の通りです。

                  • クロスオーバーの条件

                     if (KValue0>50&&DValue0>50)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        

                  • この戦略に従ったコメント

                     Comment("SSS - Downtrend Strategy - Signal is ",signal);

                  コンパイル後、ナビゲータウィンドウにはこのプログラムのファイルが表示されます。

                  ナビゲータ3

                  このファイルをチャート上にドラッグ&ドロップすると、以下のようなウィンドウが開きます。

                  SSS-Downtrendウィンドウ

                  [OK]を押すと、ファイルがチャートに接続されます。

                  SSS-下降トレンドの接続 

                   シグナルはこの戦略の条件に従って、チャート上にコメントとして表示され、次の図はその例です。

                  SSS-下降トレンド-売り

                  • 戦略3:横ばい戦略
                    • 買いシグナル

                  %K, %D < 20 --> %K > %D = 買いシグナル

                  %K, %D > 80 --> %K < %D = 利食いシグナル

                  この横ばい戦略を実行できるプログラムを作成するためのコードを以下に示します。

                  //+------------------------------------------------------------------+
                  //|           Simple Stochastic System - Sideways - Buy 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                     
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);
                     
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "Take Profit";
                        }
                        
                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);  
                        
                    }
                  //+------------------------------------------------------------------+

                  違いは次の通りです。

                  • 横ばい戦略の買いシグナルによるクロスオーバーの条件

                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        

                  • 横ばい戦略の買いシグナルに従ったコメント

                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);

                  • 横ばい戦略の利食いシグナルの条件

                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "Take Profit";
                        }
                        

                  • 横ばい戦略の利食いシグナルに従ったコメント

                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);

                  コンパイル後、ナビゲータウィンドウにこの取引システムのファイルが表示されます。

                  ナビゲータ4

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

                  SSS-横ばい-買い-ウィンドウ

                  [OK]を押すと、プログラムがチャートに接続されます。

                  SSS-横ばい-買い-接続

                  この戦略に従って、シグナルはチャートにコメントとして表示されます。次の図は、そのようなシグナルの例を示しています。

                  SSS-横ばい-買い-買い

                  以下は、「利食い」シグナルの例です。

                  SSS-横ばい-買い-TP

                    • 横ばい戦略:売りシグナル

                  %K, %D > 80 --> %K < %D = 売りシグナル

                  %K, %D < 20 --> %K > %D = 利食いシグナル

                  以下は、この戦略を実行するプログラムの書き方です。

                  //+------------------------------------------------------------------+
                  //|          Simple Stochastic System - Sideways - Sell 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];  
                     
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                     
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "TAKE PROFIT";
                        }         
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                    }
                  //+------------------------------------------------------------------+
                  

                  違いは次の通りです。

                  • 横ばい戦略の売りシグナルによるクロスの条件
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                  • 横ばい戦略の売りシグナルに従ったコメント
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                  • 横ばい戦略の利食いシグナルの条件
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "TAKE PROFIT";
                        }   
                  • 横ばい戦略の利食いシグナルに沿ったコメント 
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  

                  コンパイル後、ナビゲータウィンドウにこの取引システムのファイルが表示されます。

                  ナビゲータ5

                  チャート上にドラッグ&ドロップすると、以下のウィンドウが開きます。

                  SSS-Sideways-売り-ウィンドウ

                  [OK]を押すと、チャートにプログラムが接続され、シグナルを生成できる状態になります。

                  SSS-横ばい-売りの接続

                  次の図は、この戦略に従って生成された売りシグナルの例です。

                  SSS-横ばい-売り-売り

                  次の図は、この戦略に従って生成された利食いシグナルの例です。

                  SSS-横ばい-売り-TP

                  結論

                  今回の記事では、取引の世界で最も人気のある指標の1つである「ストキャスティックスオシレーター」を使った簡単な取引システムの作り方の基本を学ぶことができたと言えるでしょう。「ストキャスティックスオシレータ」がどのような指標で、何を測定し、どのように計算するのか、詳しく考察してきましたが、ご理解いただけましたでしょうか。ストキャスティクス指標の使い方について、簡単に使える戦略を紹介することで、何か新しい発見があったのではないでしょうか。また、このシンプルな戦略に基づき、簡単かつスムーズに取引システムを構築するための設計図が紹介されています。また、これらのシンプルな戦略に基づき、取引システムをどのように設計するかについても検討しました。

                  この記事が皆様の取引に役立ち、取引の世界で最も人気があり有用な指標の1つである「ストキャスティックスオシレータ」についての洞察を与えることによって、新しいアイデアを見つける手助けになればと思います。

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

                  DoEasy - コントロール(第3部):バインドされたコントロールの作成 DoEasy - コントロール(第3部):バインドされたコントロールの作成
                  本稿では、基本要素にバインドされた従属コントロールを作成します。開発は、基本的な制御機能を使用して実行されます。さらに、影を持つことができるオブジェクトに適用するとまだいくつかのロジックエラーが発生するため、グラフィック要素の影オブジェクトを少しいじります。
                  データサイエンスと機械学習(第02回):ロジスティック回帰 データサイエンスと機械学習(第02回):ロジスティック回帰
                  データ分類は、アルゴトレーダーとプログラマーにとって非常に重要なものです。この記事では、「はい」と「いいえ」、上と下、買いと売りを識別するのに役立つ可能性のある分類ロジスティックアルゴリズムの1つに焦点を当てます。
                  ADXによる取引システムの設計方法を学ぶ ADXによる取引システムの設計方法を学ぶ
                  今回は、最も人気のある指標を使って取引システムを設計する連載の続きとして、ADX (Average Directional Index)指標についてお話します。この指標を理解するために詳しく学び、簡単な戦略でその使い方を学びます。深く学ぶことで、より多くの洞察得ることができ、それをよりよく活用することができるのです。
                  一からの取引エキスパートアドバイザーの開発(第11部):両建て注文システム 一からの取引エキスパートアドバイザーの開発(第11部):両建て注文システム
                  この記事では、両建て注文システムを作成します。先物契約は、トレーダーを極度に苦しめる資産タイプですが、なにがそんなに難しいのでしょうか。