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

パラボリックSARによる取引システムの設計方法を学ぶ

MetaTrader 5トレーディング | 16 8月 2022, 09:35
366 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

この記事では、取引スタイルに適切な場合に取引で使用できる新しい便利なテクニカル指標について詳しく学びます。このテクニカル指標はパラボリックSARです。MetaTrader 5に組み込まれているMetaQuotes言語エディタでこの取引システムのコードを記述した後、MetaTrader 5取引プラットフォームで使用される取引システムを設計する方法を学びます。MetaTrader 5を入手する方法とMetaQuotes言語エディタを見つける方法を知りたい場合は、「MetaEditorでのMQL5コードの記述」稿を確認してください。この記事の核心は、それをカバーするトピックを通じて学習します。これらのトピックは次のとおりです。

  1. パラボリックSARの定義
  2. パラボリックSAR戦略
  3. パラボリックSAR戦略の設計図
  4. パラボリックSAR取引システム
  5. 結論

上記のトピックを通じて、パラボリックSAR指標の単純な戦略に基づいて単純な取引システムを設計する方法とその背後にある概念を学びます。「パラボリックSARの定義」を通じて、パラボリックSAR指標とは何か、またはそれが何を意味するのか、そしてこの指標をどのように計算するかをより詳細に学び、その背後にある概念を学びます。このアプローチにより、このパラボリックSAR指標を効果的に使用することが容易になります。次に、学んだことに従って、この指標の概念に基づいた簡単な戦略を通じて、このパラボリックSAR指標を使用する方法を学びます(「パラボリックSAR戦略」)。次に、言及された単純な戦略の設計図を作成します。この設計図は、戦略と構築する必要があるものの明確な設計図を通じて、取引システムを段階的に設計するのに役立ちます。次に、この記事の最も興味深いトピックについて説明します。取引システムのコードを記述して、コンピュータが設計された条件を調べ、戦略に従ってシグナルを返すようにする方法を学びます。 このプロセスは、私たちの単純な戦略に基づいて設計されたエキスパートアドバイザー(EA)を通じて自動的かつ正確に実行されます。

トピックを説明する前に、いくつかのアドバイスをしたいと思います。自分で学んだことを適用するということです。このアプローチは理解を深めるためです。戦略にしても何にしても、特に教育的な情報源から学んだ場合は、実際の口座で使用する前にテストする必要があります。自分の取引に役立たない可能性があるためです。

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

それでは、この記事のトピックを通じて興味深い旅を始めましょう。


パラボリックSARの定義

このセクションでは、Welles Wilderによって作成されたパラボリックSAR指標について詳しく学びます。この指標の名前は、チャート上の指標の形成を指す「パラボリック」と「SAR」がストップアンドリバースを指すことに由来します。または、その名前のパラボリック時間/価格システムがWelled Wilderが彼の著書「New Concepts in Technical Trading Systems」で呼んだのと同じであることがわかります。

パラボリックSAR指標は、トレンドフォロー型指標であり、トレンド市場で使用されます。この指標により、取引をおこなってからストップレベルが動き始める前の数期間中に商品が反応することができます。したがって、この指標の主な目的は、現在の市場の方向性またはトレンドに応じて適切なストップを設定できるようにすることです。トレンドについて詳しく知るには「トレンドの定義」を読むことができます。

つまり、このパラボリックSAR指標の主な目的は、トレーリング ストップを作成することです。ストップは時間と価格の2つに依存する関数です。価格については、価格の動きに応じてストップが相対的に上下することがわかり、時間については、価格の方向に関係なくストップが期間ごとに移動することがわかります。

パラボリックSAR戦術を使用するには、まずトレンドを特定する必要があります。ここまでで、パラボリックSAR指標の意味とそれが何を教えてくれるかを学びました。次に、この指標を手動で計算してその背後にある概念を学ぶ方法を知る必要があります。以下はその方法です。 

学んだことに従い、まず市場のトレンドまたは方向性を決定する必要があり、次にこの決定に従って、計算を2つの場合に分ける必要があります。そのうちの1つは上昇市場でパラボリックSARを計算する方法で、上昇SARを返します。もう1つは、下降市場でパラボリックSARを計算して下降SARを返します。これら2つを計算します。市場が上昇している場合はSARが上昇し、市場が下降している場合はSARが下降します。

  • 上昇するSAR
    1. 前のSAR値 = 前の期間の前のSAR値を決定します。
    2. 極値(EP) = 現在の上昇トレンドの最高値を決定します。
    3. 加速係数(AF) = 0.02~0.20の値を決定します。最初の最小値(0.02)を決定した後、トレンドがどれだけ長く続くかに関係なく、EPが新しい高値を作成するたびにAFが0.02増加して最大値0.20に近づくため、値は(EP)に従って決定されます。
    4. 現在のパラボリックSAR値 = 前のSAR(手順1) + 前のAF * (前のEP - 前のSAR)。

市場から次のデータがある場合、このケース(SARが上昇)の例を見てみましょう。

高値 安値
1 45 43
2 44 43.5
3 46 43
4 47 42
5 48 42.5
6 47.5 42.75
7 48 42.60
8 47.75 42.5
9 48 43
10 49 42.5
11 48.75 42.60
12 50 42
13 51 42.5
14 52 43
15 51.5 42.5
16 51 42
17 52 43
18 53 44
19 54 45

ここで、上昇するSARを計算する必要があります。これは次のようになります。

  1. 前のSAR値 = 前の期間の前のSAR値を決定します。この例では、黄色の最初の値が42に等しい単純化のために与えられます。
  2. 極値(EP)) = 現在の上昇トレンドの最高値を決定します。これは48になります。
  3. EPとSARの差を求めると、差は48-42=6になります。
  4. 加速係数(AF) = 0.02から0.20の間の値を決定します。最初の値は0.02になります。
  5. AFにEPとSARの差を乗算すると、値は0.12になります。
  6. 手順5の結果であるEPとSARの差を以前のAFに乗算した結果を以前のSARに加算して現在のSARを計算すると、値は42.12になります。

以下は、この例で計算されたすべての値の図です。

上昇SARの例

SARの列でわかるように、SAR値は期間中毎日上昇しています。

  • 下降するSAR
    1. 前のSAR値 = 前の期間の前のSAR値を決定します。
    2. 極値(EP) = 現在の下降トレンドの最低値を決定します。
    3. 加速係数(AF) = 0.02~0.20の値を決定します。最初の最小値(0.02)を決定した後、EPが新しい高値を作成して最大値0.20に近づくたびにAFが0.02増加するため、トレンドがどれだけ長く続くかに関係なく、値は(EP)に従って決定されます。 .
    4. 現在のパラボリックSAR値 = 前のSAR (手順1) + 前のAF * (前のEP - 前のSAR)。

市場から次のデータがある場合、SARが下降するこのケースの例を見てみましょう。

高値 安値
1 54 45
2 53 44
3 52 43
4 51 42
5 51.5 42.5
6 52 43
7 51 42.5
8 50 42
9 48.75 42.6
10 49 42.5
11 48 43
12 47.75 42.50
13 48 42.60
14 47.50 42.75
15 48 42.50
16 47 42
17 46 43
18 44 43.50
19 45 43

ここで、特定の期間の下降SAR値を計算すると、次のようになります。

  1. 前のSAR値 = 前の期間の前のSAR値を決定します。この例では、単純化のために黄色の最初の値(51)が与えられます。
  2. 極値(EP) = 現在の下降トレンドの最低の安値を決定します。これは42になります。
  3. EPとSARの差を求めると、差は51-42=9になります。
  4. 加速係数(AF) = 0.02から0.20の間の値を決定します。最初の値は0.02になります。
  5. AFにEPとSARの差を乗算すると、値は0.18になります。
  6. 手順5の結果から以前のSARを減算して現在のSARを計算すると、値は50.82になります。

以下は、特定の期間中のすべての値の計算の図です。

SAR列でわかるように、SAR値は期間中毎日減少します。

幸いなことに、パラボリックSAR指標やその他の指標を計算する必要はありません。この指標はMetaTrader 5取引プラットフォームに組み込まれており、必要なのは利用可能な指標の中からこの指標を選択することだけだからです。それをおこなう方法は次のとおりです。

MetaTrader 5 を開いているときに、[挿入]タブをクリックし、[インディケータ]/[トレンド系]/[Parabolic SAR]を選択します。

SARの挿入

その後、次のようなパラボリックSARパラメータウィンドウが表示されます。

SARパラメータ

1- 価格が新しい高値または安値を作成するたびに追加されるステップ(AF)を決定します。

2 - (AF)の最大値を決定します(デフォルトは0.20)。

3 - 指標の色を決定します。

4 - 指標のスタイルを決定します。

パラボリックSAR指標の適切なパラメータを決定し、[OK] をクリックすると、次のようにチャートに接続されていることがわかります。

SARの接続

前の図でわかるように、上昇の動きの間、パラボリックSARが価格を下回って移動し、動きに従って上昇し続けていることがわかります。また、下降の動きの間、パラボリックSAR指標が価格を上回って移動し、動きに従って下降し続けていることがわかります。


パラボリックSAR戦略

このトピックでは、パラボリックSARで使用できるいくつかの簡単な戦略を学習します。ここでの主な目的は、新しいツールの概念とそのための取引システムを設計する方法を学習することです。実際の口座で使用する前に戦略をテストする必要があることを忘れないでください。

このパラボリックSAR指標はトレンドフォロー型であり、トレンド市場、上昇トレンド、下降トレンド中に使用できると述べました。まずトレンドを決定し、それに応じてパラボリックSARを使用できます。

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

この戦略では、ティックごとに、パラボリックSAR値を価格と比較し、買いシグナルがあるかどうかを判断する必要があります。パラボリックSAR値が最安値を下回った場合は買いシグナルが生成されます。また、SAR値が最高値を上回った場合、別の利食いシグナルが発生する可能性があります。

SAR値 < 安値 = 買い

SAR値 > 高値 = 利食い

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

この戦略は上昇トレンド戦略の反対になります。ティックごとに、パラボリックSAR値を価格と比較し、売りシグナルがあるかどうかを判断する必要があります。売りシグナルはパラボリックSAR値が最高値を上回った場合に生成されます。SAR値が最安値を下回った場合には、別の利食いシグナルが発生する可能性があります。

SAR値 > 高値 = 売り

SAR値 < 安値 = 利食い

  • 戦略3:トレーリングストップ戦略の買いシグナル

この戦略では、ティックごとに、SAR値を価格と比較し、買いシグナルがあるかどうかを判断し、パラボリック SAR指標値に従ってすべてのティックのトレーリングストップを決定する必要があります。したがって、SAR値が安値を下回る場合、これは買いとなり、指標値に従ってトレーリングストップロス レベルを取得します。

SAR値 < 安値 = 買い --> SAR値ごとのトレーリングストップ値

  • 戦略4: トレーリングストップ戦略の売りシグナル

この戦略では、ティックごとに、SAR値を価格と比較し、売りシグナルがあるかどうかを判断し、パラボリックSAR値に従ってすべてのティックのトレーリングストップを決定する必要があります。したがって、SAR値が高値を上回る場合、これは売りとなり、指標値に従ってトレーリングストップロスレベルを取得します。

SAR値 > 高値 = 売り --> SAR値ごとのトレーリングストップ値。


パラボリックSAR戦略の設計図

このトピックは、戦略の設計図を設計して、戦略の取引システムのコードを書くのに役立ちます。 EAに何を指示する必要があるかを段階的に知るために、考えを整理および構造化できるようになります。以下は各戦略の設計図です.。

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

コンピュータまたはEAに、何を確認する必要があるか、条件が満たされた場合に何を返すかを通知します。この戦略では、SAR値を確認し、それを価格レベルと比較して、 SAR値が安値を下回るかどうかを判断する必要があります。下回らない場合は何も返す必要がありません。下回る場合は、EAが買いシグナルを返す必要があり、次に2つの値を再度チェックして比較し、SAR値が高値を上回るかどうかを判断します。上回らない場合は何も返しません。上回る場合は、利食いシグナルを返す必要があります。

SAR値 < 安値 = 買い

SAR値 > 高値 = 利食い

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

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

この戦略では、SAR値を確認し、それを価格レベルと比較して、 SAR値が高値を上回るかどうかを判断する必要があります。上回らない場合は何も返す必要がありません。上回る場合は、EAが売りシグナルを返す必要があり、次に2つの値を再度チェックして比較し、SAR値が安値を下回るかどうかを判断します。下回らない場合は何も返しません。下回る場合は、利食いシグナルを返す必要があります。

SAR値 > 高値 = 売り

SAR値 < 安値 = 利食い

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

  • 戦略3:トレーリングストップ戦略の買いシグナル
  • この戦略のコードを書くには、SAR 値をチェックし、トレーリングストップ値を返し、この値を高値と安値でチェックしてSAR値が安値を下回るかどうかを判断します。 下回らない場合はトレーリングストップ値のみを返し、下回る場合は買いシグナルとトレーリングストップ値を返します。 

    トレーリングストップレベルのみ --> SAR値 < 安値 = 買い --> SAR値ごとのトレーリングストップ値

    ストップ戦略での買いの設計図

    • 戦略4: トレーリングストップ戦略の売りシグナル

    この戦略のコードを書くには、SAR値をチェックし、トレーリングストップ値を返し、この値を高値と安値でチェックしてSAR値が高値を上回るかどうかを判断します。 上回らない場合はトレーリングストップ値のみを返し、上回る場合は売りシグナルとトレーリングストップ値を返します。

    トレーリングストップ値のみ --> SAR値 > 高値 = 売り --> SAR 値ごとのトレーリングストップ値

    ストップ戦略での売りの設計図

    パラボリックSAR取引システム

    この興味深いトピックでは、MQL5(MetaQuotes言語エディタ)によって言及されたすべての戦略のコードを記述し、MetaTrader 5 取引プラットフォームでこれらの戦略を自動的かつ正確に実行するために、それぞれの取引システムを設計する方法を学びます。

    まず、パラボリックSAR値を含むコメントを返す単純な取引システムを設計するためのコードの書き方を学びます。この単純なEAを作成するには、以下の手順に従います。

    • double型のパラボリックSARの配列を作成します。
    double SARArray[];
    • ArraySetAsSeries関数を使用して現在のデータから配列を並べ替えると、ブール値が返されます。
    ArraySetAsSeries(SARArray,true);
    • iSAR関数を使用してSAR指標を定義します。
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • CopyBuffer関数を使用して、SARArrayにSAR定義を入力します。
    CopyBuffer(SARDef,0,0,3,SARArray);
    • double型でSAR値の変数を作成した後、NormalizeDouble関数を使用してSARの値を計算します。
    double SARValue=NormalizeDouble(SARArray[0],5);
    • Comment関数を使用してSAR値をチャートに出力します。
    Comment("Parabolic SAR value is ",SARValue);

    その後、完全なコードブロックは次のようになります。

    //+------------------------------------------------------------------+
    //|                                  Simple Parabolic SAR System.mq5 |
    //|                                  Copyright 2022, MetaQuotes Ltd. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2022, MetaQuotes Ltd."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    void OnTick()
      {    
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
    
       //chart comment with the signal
       Comment("Parabolic SAR value is ",SARValue);
      }
    //+------------------------------------------------------------------+
    

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

    Simple parabolic SAR system - ナビゲータ

    チャート上でファイルをダブルクリックまたはドラッグ&ドロップしてEAを実行し、結果またはシステムの結果を取得すると、次のウィンドウが表示されます。

     Simple parabolic SAR system - ウィンドウ

    次に、[アルゴリズム取引を許可する] の横にチェックを入れて [OK] を押すと、次のようにシステムまたはEAがチャートに接続されていることがわかります。

    Simple parabolic SAR system - 接続

    次の図は、このシステムで生成されたシグナルの例です。

    Simple parabolic SAR system

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

    この戦略で述べたのと同じように、SAR値が安値を下回る場合に買いシグナルを生成し、SAR値が高値を上回る場合に利食いシグナルを生成するように取引システムの条件を設定する必要があります。以下は、この戦略をコーディングする方法です。

    • string関数を使用して、シグナルの文字列変数を作成します。
    string signal="";
    • MqlRates関数を使用して価格の配列を作成します。これには、価格、ボリューム、およびスプレッドに関する情報が格納されます。
    MqlRates PriceArray[];
    • ArraySetAsSeries関数を使用して、現在のデータから価格配列を並べ替えます。
    ArraySetAsSeries(PriceArray,true);
    • CopyRates関数を使用して配列に価格データを入力します。この関数は、データを整数として格納した後、MqlRates構造体の履歴データを取得します。
    int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
    • SAR値の別のdouble型の配列を作成します。
    double SARArray[];
    • ArraySetAsSeries関数を使用して、現在のデータからSAR配列を並べ替えます。
    ArraySetAsSeries(SARArray,true);
    • SAR定義を参照するためにSARDefを整数として保存した後、パラボリックSAR指標のハンドルを返すため、iSAR関数を使用してEAのSAR指標を定義します。
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • 特定の指標の特定のバッファのデータを取得するときに、CopyBuffer関数を使用してSARArrayにSARDefを入力します。
    CopyBuffer(SARDef,0,0,3,SARArray);
    • double型の値を返すNormalizeDouble関数を使用して、最後のデータのSAR値を計算します。 
    double SARValue=NormalizeDouble(SARArray[0],5);
    • 「if」を使用して「買い」シグナルの条件を設定します。SAR値が安値を下回る場合、「買い」シグナルを返す必要があります。
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
    
    • 「if」を使用して「利食い」シグナルの条件を設定します。SAR値が高値を上回る場合、「利食い」シグナルを返す必要があります。
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
    
    • Comment関数を使用して、生成されたシグナルをチャート上にコメント表示します。
    Comment("The signal is ",signal);

    前の手順で、この戦略の取引システムを作成しました。以下は1つの完全なコードブロックです。

    //+------------------------------------------------------------------+
    //|                      Parabilic SAR 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
       
       //comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+
    

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

    上昇 - 接続 - ナビゲータ

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

    上昇SAR - ウィンドウ

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

    上昇トレンド - 接続

    その後、テストの例として、下図のように、チャート上で生成されたシグナルをコメントとして見つけることができます。

    • 買いシグナル

    上昇トレンド - 買いシグナル

    • 利食いシグナル

    上昇トレンド - TPシグナル

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

    この戦略では、SAR値が高値を上回る場合に売りシグナルを生成し、SAR値が安値を下回る場合に利食いシグナルを生成するように取引システムの条件を設定する必要があります。以下は、この戦略をコーディングする方法です。

    //+------------------------------------------------------------------+
    //|                    Parabolic SAR 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }
       
       //chart comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+
    
    • この戦略コードの違いは次のとおりです。
      • 売りシグナルの条件 - SAR値が高値を上回った場合
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
    
      • 利食いシグナルの条件 - SAR値が安値を下回った場合
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }
    

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

    SAR下降トレンド - ナビゲータ

    ファイルをチャートにドラッグ&ドロップしてEAを実行すると、次のウィンドウが開きます。

    SAR下降トレンド - ウィンドウ

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

    SAR下降トレンド - 接続

    次に、この戦略のシグナルが、テストの例として下図のようにコメントとしてチャートに表示されていることを確認できます。

    • 売りシグナル

    SAR下降トレンド - 売りシグナル

    • 利食いシグナル

    SAR下降トレンド - TP シグナル

    • 戦略3:トレーリングストップ戦略の買いシグナル

    この戦略では、パラボリック SAR値と価格の特定の条件に従って、チャート上に買いシグナルとトレーリングストップ値をコメントとして表示します。トレーリングストップ値をチャートに表示し、SAR値が安値を下回った場合には買いシグナルを生成します。この戦略の取引システムを設計するためのコードは次の通りです。

    //+------------------------------------------------------------------+
    //|         Parabolic SAR System - Buy signal with training stop.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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    
    • 違いは次のとおりです。
      • SAR値であるトレーリングストップ値をチャートの新しい行のコメントとして追加します。
    Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);

    このコードをコンパイルした後、次のように、ナビゲータでEAファイルを見つけることができます。

    SAR上昇 - トレーリングストップの買いシグナル - ナビゲータ

    このEAをチャートに実行する場合は、チャートにドラッグ&ドロップすると、次のウィンドウが開きます。

    SAR上昇 - トレーリングストップの買いシグナル - ウィンドウ

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

    SAR上昇トレンド - トレーリングストップの買いシグナル - 接続

    次の図は、テストからこの戦略に従って生成されたシグナルの例です。

    SAR上昇トレンド - トレーリングストップの買いシグナル1

    次の図は、トレーリングストップ値が価格とともにどのように増加するかを示しています。

    SAR上昇トレンド - トレーリングストップの買いシグナル2

    • 戦略4:トレーリングストップ戦略の売りシグナル

    この戦略では、パラボリック SAR値と価格の特定の条件に従って、チャート上に売りシグナルとトレーリングストップ値をコメントとして表示します。トレーリングストップ値をチャートに表示し、SAR値が高値を上回った場合には売りシグナルを生成します。この戦略の取引システムを設計するためのコードは次の通りです。

    //+-----------------------------------------------------------+
    //| Parabolic SAR System - Sell signal with trailing stop.mq5 |
    //| Copyright 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    
    • 違いは次のとおりです。
      • 売りシグナルの条件
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
    

    コードをコンパイルすると、次のようにナビゲータでEAを見つけることができます。

    SAR下降トレンド - トレーリングストップの売りシグナル - ナビゲータ

    ファイルをチャートにドラッグ&ドロップして実行すると、EAウィンドウが表示されます。

    SAR下降トレンド - トレーリングストップの売りシグナル - ウィンドウ

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

    SAR下降トレンド - トレーリングストップと売りシグナル - 接続

    次の図は、生成されたシグナルの例です。

    SAR 下降トレンド - トレーリング ストップと売りシグナル1

    以下は、価格に伴うトレーリングストップの減少を示しています。

    SAR下降トレンド - トレーリングストップの売りシグナル2


    結論

    これで、パラボリックSARテクニカル指標の基本を詳細に学習したと言えます。この指標が何でそれが何を測定するか、およびその背後にある概念を理解するために手動で計算する方法を学び、簡単な戦略を通じてどのように使用できるかを学びました。これらの戦略に基づいて取引システムを設計するのに役立つようにこれらの戦略の設計図を作成し、MQL5でこれらの戦略をコーディングしてMetaTrader 5で実行し、シグナルを自動的かつ正確に生成する方法を学びました。

    これらの戦略をご自分でコーディングしようとしたことを願っています。自分でコーディングすることにより、学習曲線が向上します。練習は、何かを習得するための非常に重要な要素です。 また、何かを学ぶときに、.練習したり、学んだことを実践したり適用したりすると、練習しなかったよりも意識が高まることがわかるでしょう。

    また、この記事がお役に立てば幸いです。取引を強化するための強力で有用な洞察が得られ、記事のトピックまたは関連トピックに関する新しいアイデアに目を向けることができたことを願っています。新しいツールや戦略を実際の口座で使用する前に、取引結果が向上することを保証するために妥当な期間テストする必要があることも確認させてください。


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

    データサイエンスと機械学習(第03回):行列回帰 データサイエンスと機械学習(第03回):行列回帰
    今回のモデルは行列によって作成されています。これにより柔軟性が得られ、コンピュータの計算限界内に留まる限り、5つの独立変数だけでなく多くの変数を処理できる強力なモデルを作成できます。この記事を面白く読めることは間違いありません。
    一からの取引エキスパートアドバイザーの開発(第14部):価格別出来高の追加((II) 一からの取引エキスパートアドバイザーの開発(第14部):価格別出来高の追加((II)
    今日は、EAにいくつかのリソースを追加します。この興味深い記事では、情報を提示するためのいくつかの新しいアイデアと方法を提供します。同時に、プロジェクトの小さな欠陥を修正するのにも役立ちます。
    一からの取引エキスパートアドバイザーの開発(第15部):Web上のデータにアクセスする(I) 一からの取引エキスパートアドバイザーの開発(第15部):Web上のデータにアクセスする(I)
    MetaTrader5ではどのようにオンラインデータにアクセスするのでしょうか。Web上にはたくさんのサイトや場所があり、膨大な量の情報が掲載されています。知るべきことは、どこを調べて、この情報をどのように使用するのが最善かということです。
    一からの取引エキスパートアドバイザーの開発(第13部):Times & Trade (II) 一からの取引エキスパートアドバイザーの開発(第13部):Times & Trade (II)
    本日は、Times & Tradeシステムの第2部である市場分析を構築します。前回の「Times & Trade (I)」稿では、市場で実行された取引を可能な限り迅速に解釈するための指標を持つことを可能にする代替のチャート編成システムについて説明しました。