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

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

MetaTrader 5トレーディング | 11 8月 2022, 11:38
712 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

この新しい記事では、測定してどのように使用するかを知っておく必要がある、取引の新しい概念についてお話します。その概念は「ボラティリティ」です。ボラティリティを測定するためには多くのツールを使用することができます。これらのツールの中で最も人気のあるツールの1つがATRテクニカル指標です。この記事で紹介するように、ボラティリティがどのように推移しているかを知ることはそれに基づいて意思決定を行うための重要な要因や拠点の一つとなるため、形勢を一変させることができます。

この ATR 指標を非常によく理解するために、多くのトピックを取り上げます。私が公開した他の記事を読んでいただいていれば、私のアプローチが物事の根源を学び、教えることであることをご存知かもしれません。以下のトピックは、この素晴らしいツールについてこの記事で学ぶことのすべてです。

  1. MetaEditorでMQL5コードを書く
  2. ATRの定義
  3. ATR戦略
  4. ADX戦略の設計図
  5. ADX取引システム
  6. 結論

これらのトピックを経て、ATR指標を深く理解し、適切な使い方を習得したいと思います。ATR指標について、それが測定するもの、およびその計算方法について学びます。その計算式を分析し、市場での実際の例に適用します。このトピックは「ATRの定義」で取り上げます。ATR指標の考え方に基づいて使える簡単な戦略を学びます。理解を深めるための簡単な戦略を紹介しjます。これは「ATR戦略」でおこないます。述べた戦略の設計図を作成することを学びます。これは、プログラムがどのように機能すべきかというアイデアを視覚化するもので、取引システムの設計プロセスにおいて価値ある手順です。「ATR戦略設計図」ではステップバイステップの設計図を提供します。そして、これらの戦略に基づいた取引システムを設計するためのコードを、プログラミング言語MQL5を用いてどのように書くかを学びます。開発されたプログラムはMetaTrader 5取引プラットフォームで実行されます。これは「ATR取引システム」で説明しています。

MQL5で戦略コードを記述するために、MetaTrader 5取引プラットフォームに統合されているMetaQuotes言語エディタ(MetaEditorツール)を使用します。まだプラットフォームをお持ちでない方は、https://www.metatrader5.com/ja/downloadからダウンロードしてください。

MetaTrader 5取引プラットフォームのウィンドウは、以下のようになります。

MT5プラットフォーム

このウィンドウから、MetaTrader 5ターミナルを開いた状態でF4キーを押すと、MetaEditorを開くことができます。もう1つの方法は、下の画像に示すように、MetaTrader 5ターミナルのインターフェイスから[IDE]ボタンをクリックすることです。

MetaEditorを開く2

MetaTrader 5ターミナルで[ツール]メニューをクリックし、次の図のようにメニューから[MetaQuotes言語エディタ]を選択することでも開くことができます。

MetaEditorを開く1

MetaQuotes言語エディタが起動します。次の図は、そのインターフェイスを示したものです。

MetaEditorインターフェイス

この記事で読んだことを実践することをお勧めします。なぜなら、練習は上達のための重要な要素だからです。

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

さて、取引スキルを向上させ、取引結果を向上させることができる新しいツールを学ぶ支度をしてください。私たちのジャーニーを始めましょう。


ATRの定義

このトピックでは、ATR指標について詳しく説明します。何を測定し、どのように計算するのか、いくつかの例を挙げながら理解を深め、この指標の使用方法と利点について、より深い洞察を得ることができます。

ATRテクニカル指標は、ウェルズ・ワイルダーによって開発されました。このATR指標は、特定期間の価格の幅を分析することで、市場のボラティリティを測定します。ATRでは、価格や市場の方向性は提供されず、提供されるのはボラティリティの測定のみです。

次に、相場のボラティリティを測る指標ATRの算出方法を説明します。

まず、真の範囲を計算する必要がありますが、これは次のうち最も大きな値となります。

  • 現在の高値と安値の差
  • 現在の高値と前回の終値の差(絶対値)
  • 現在の安値と前回の終値の差(絶対値)

この手順では、計算のために高値、安値、終値のデータが必要です。そして、アベレージトゥルーレンジを算出します。

次に、学んだことを応用してATRを計算するために、実際の市場からの例を見てみましょう。以下はEURUSDのデータです。

高値 安値 終値
2022年3月17日 1.1138 1.1008 1.1089
2022年3月18日 1.112 1.1003 1.1055
2022年3月21日 1.107 1.101 1.1014
2022年3月22日 1.1047 1.096 1.1027
2022年3月23日 1.1044 1.0963 1.1004
2022年3月24日 1.1014 1.0965 1.0996
2022年3月25日 1.1039 1.0979 1.0981
2022年3月28日 1.1 1.0944 1.0978
2022年3月29日 1.1137 1.097 1.1085
2022年3月30日 1.1171 1.1083 1.1156
2022年3月31日 1.1185 1.1061 1.1065
2022年4月1日 1.1077 1.1027 1.1053
2022年4月4日 1.1056 1.096 1.097
2022年4月5日 1.099 1.0899 1.0903
2022年4月6日 1.0939 1.0874 1.0893
2022年4月7日 1.0939 1.0864 1.0878
2022年4月8日 1.0892 1.0836 1.0876
2022年4月11日 1.0951 1.0872 1.0883
2022年4月12日 1.0905 1.0821 1.0826
2022年4月13日 1.0896 1.0809 1.0885
2022年4月14日 1.0925 1.0757 1.0827
2022年4月15日 1.0832 1.0796 1.0806
2022年4月18日 1.0822 1.0769 1.078
2022年4月19日 1.0815 1.0761 1.0786
2022年4月20日 1.0868 1.0783 1.085
2022年4月21日 1.0937 1.0824 1.0836
2022年4月22日 1.0853 1.077 1.0794
2022年4月25日 1.0842 1.0697 1.0711
2022年4月26日 1.0738 1.0635 1.0643
2022年4月27日 1.0655 1.0586 1.0602

次に、ATRを計算するために、以下の手順に従います。

1- TRを計算する(次のうちの最大値)

  • 現在の高値 - 現在の安値(高値と安値の差)

H-L

  • 絶対値(現在の高値 - 前回の終値)

 absh-pc

  • 絶対値(現在の安値 - 前回の終値)

 absl-pc

計算した内容に従って、高値 - 安値、abs(高値 - 前回の終値)、 abs(安値 - 前回の終値)から最大値となるTRを決定します。

TR

2 - 14期間のATRを計算する

ATR

これまでの手順で、ATRを手動で計算することができます。ただし、最近では、MetaTrader 5の取引プラットフォームですぐに使える形で提供されているため、それをおこなう必要はありません。すべきことは、次のとおり、利用可能な指標の中からそれを選択することだけです。

MetaTrader5を起動し、[挿入]タブ→[インディケータ]→[オシレーター]→[Average True Range]をクリックします。

ATRの挿入

Average True Rangeを選択すると、以下のATRのパラメータを設定するためのウィンドウが表示されます。

ATR挿入ウィンドウ

1 - 指標の希望期間

この期間の値は、各期間や商品のボラティリティに応じて、時間枠や商品ごとに異なることがあります。ATRが長ければ長いほど、平均がより滑らかになるため、正確な指標を生成するのに適しています。

2 - ATR線の色

3 - ATR線のスタイル

4 - ATR線の太さ

パラメータを設定すると、ATR指標がチャートに接続され、以下のように表示されます。

ATRの接続

前の図に見られるように、下のウィンドウには、1Hの時間枠を通してEURUSDのボラティリティを測定するために振動する線で表される14期間のATR指標が含まれています。

先に述べたように、ATRはボラティリティを測定するものです。これに基づき、ATRウィンドウの値を分析します。ATR値が低いほど、その商品のボラティリティは低くなります。また、その逆で、ATRの値が高いほど、その商品のボラティリティは高くなります。

次の図はその読み方についてです。

ATRの読み方

つまり、ATRが低い値を記録した場合はボラティリティが低いことが示され、逆にATR指標が高い値を記録した場合はボラティリティが高いことが示されるのです。

ATRは、その計算からすでに分かっているように、売買シグナルを生成するための正確な指標ではありません。これは、レンジの大きさのみを考慮しますが、その美しさは、適切なポジションサイズ、ストップロス、テイクプロフィットを適用するのに役立つ最高のツールの1つであることです。

先に述べたように、ATRはボラティリティを測定するだけであり、トレンドや相場の方向性を示すものではありません。よって、ATR曲線が上に動いていても、これは上昇トレンドを意味するものではありません。逆に、ATR曲線が下に動いていても、これは下降トレンドを意味するものではありません。混乱しないでください。最も人気のあるツールの1つであるADXは、トレンドがあるかないかを判断するために使用することができます。

また、トレンドの定義については、前回の記事でご紹介しています

次の図は、ATRがトレンドの方向性を提供しないことを示すことができる例です。

ATRの読み方2

ご覧の通り、価格が下がるのと同時に指標が上昇し、逆に価格が上がるのと同時にATR線が下降しています。これは、ATRがトレンドや相場の方向性を示すものではなく、ボラティリティのみを測定するものであるためです。


ATR戦略

このトピックでは、ATR指標の概念に従って使用することで取引結果を向上させる簡単な戦略を学びます。ATR指標の概念は、相場の方向性ではなく、相場のボラティリティのみを測定することです。

1- シンプルなATRシステム - ATRの強度(Simple ATR System - ATR Strength)

この戦略では、現在のATRの値と特定の値とを比較し、ATRが強いかどうかを判断することになります。ここで重要なことは、これらの具体的な数値は商品や期間によって異なる可能性があるということです。そこで、ATR指標の値を確認し、その値によって強弱を判断することにします。現在のATRの値が0.0024より大きければATRが強いことを意味し、逆に現在のATRの値が0.0014より小さければATRが弱いことを意味します。ATR値が0.0014から0.0024の間であれば、ATRが中立であることを意味し、現在のATR値のみを返します。

  • 現在のATR値 > 0.0024 = ATRが強い
  • 現在のATR値 < 0.0014 = ATRが弱い
  • 現在のATR値 > 0.0014かつ < 0.0024=現在のATR値


2 - シンプルなATRシステム - ATRの動き(Simple ATR System - ATR Movement)

この戦略によると、現在のATR値と前回のATR値を比較し、その後ATRの動きを決定します。ATR線が上に移動し、それが現在のATR値が前回のATR値よりも大きい場合に発生するか、下に移動し、それが現在のATR値が以前のATR値よりも小さい場合に発生します。

  • 現在のATR値>前回のATR値=ATRが上昇
  • 現在のATR値 < 前回のATR値=ATRが下降


3 - シンプルなATRシステム - SLとTPのレベル(Simple ATR System - SL and TP levels)

この戦略によると、買いポジションと売りポジションの両方の場合、現在のATR値とストップロスおよびテイクプロフィットの具体的な計算に基づいて、ダイナミックに損切りと利益確定レベルを決定する必要があります。

買いポジションの場合、次をチャートで確認する必要があります。

  • 現在の売り呼び値
  • 現在の買い呼び値(新しい行)
  • 現在のATR値(新しい行)
  • 買いポジションのための特定の計算によるストップロス値(新しい行)
  • 買いポジションのための特定の計算によるテイクプロフィット値(新しい行)

売りポジションの場合、チャート上で次を確認する必要があります。

  • 現在の売り呼び値
  • 現在の買い呼び値(新しい行)
  • 現在のATR値(新しい行)
  • 売りポジションのための特定の計算によるストップロス値(新しい行)
  • 売りポジションのための特定の計算に従った利食い値(新しい行)

ATR指標には他にも高度な戦略がありますが、ここではATR指標を深く理解し、取引結果を向上させることができる適切な方法で使用できるようにするための、簡単な戦略のみを紹介しています。


ATR戦略の設計図

このセクションでは、3つの戦略について、それぞれの戦略の設計図を通して、取引システムを作るために必要なことをステップバイステップで学びます。まず、3つの戦略を設計または作成する前に、簡単なプログラムまたはEA(エキスパートアドバイザー)を作成して、現在のATR値のコメントを表示し、前述の戦略を設計するのに役立つ、必要な手順の設計図を作成することから始めます。

シンプルなATRシステムの設計図

1- シンプルなATRシステム - ATRの強度(Simple ATR System - ATR Strength)

  • 現在のATR値 > 0.0024 = ATRが強い
  • 現在のATR値 < 0.0014 = ATRが弱い
  • 現在のATR値 > 0.0014かつ < 0.0024=現在のATR値

プログラムには、現在のATRの値を特定の値でチェックし、現在のATRの値が0.0024より大きければATRが強いと判断してもらいたいわけです。ATRが0.0024より大きくない場合、0.0014より小さいかどうかをチェックする必要があります。これはATRが弱いということを意味します。それが0.0014の値より小さくなく、0.0014と0.0024の間である場合、チャート上で現在のATR値のみを表示してもらいたいのです。

以下は、このATR強度戦略の設計図です。

Simple ATR system - ATR Strengthの設計図

2 - シンプルなATRシステム - ATRの動き(Simple ATR System - ATR Movement)

  • 現在のATR値 > 前回のATR値= ATRが上昇
  • 現在のATR値 < 前回のATR値=ATRが下降

そこで、EAに現在のATR値と前回のATR値をチェックさせ、現在のATR値が前回のATR値より大きければATRが上昇していると判断し、現在のATR値が前回のATR値より小さければATRが下落していると判断するか、何も表示させないようにする必要があります。

このATRの動き戦略の設計図は以下の通りです。

Simple ATR system - ATR movementの設計図

3 - シンプルなATRシステム - SLとTPのレベル(Simple ATR System - SL and TP levels)

いずれもチャートにコメントを表示する必要がありました。

買いポジションと売りポジション:

  • 現在の売り呼び値
  • 現在の買い呼び値(新しい行)
  • 現在のATR値(新しい行)
  • ストップロスの値(新しい行)
  • テイクプロフィットの値(新しい行)


そして、このATR SLとTPレベルの戦略の設計図は以下の通りです。

Simple ATR system - SL&TP lvlsの設計図

ADX取引システム

この興味深いトピックでは、それぞれの戦略を基に、簡単、滑らか、かつ正確に実行できる取引システムを作成するためのコードの書き方を学びます。では、EAが自動的にATRの値をチャートに表示するコードを書いてみましょう。

このSimple ATR SystemのEAコードの書き方は、以下の通りです。

  • double関数を使用して価格配列を作成する
double PriceArray[];
  • ArraySetAsSeries関数を使用してデータを並べ替える
ArraySetAsSeries(PriceArray,true);
  • iATR関数と戻り値の整数値「int」を使用してATRを定義する
int ATRDef=iATR(_Symbol,_Period,14);
  • CopyBuffer関数を使用してデータを定義して結果を保存する
CopyBuffer(ATRDef,0,0,3,PriceArray);
  • NormalizeDouble関数を用いてdouble値を返すことにより、現在のデータの値を取得する
double ATRValue=NormalizeDouble(PriceArray[0],5);
  • チャートにATR値をコメントする
Comment("ATR Value = ",ATRValue);

簡単にコピー&ペーストしたい場合や、1つのブロックで確認したい場合、以下は完全なコードです。

//+------------------------------------------------------------------+
//|                                                   Simple ATR.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 price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

このEAを作成した後、このプログラムを実行したい場合、次の画像と同じようにナビゲータで見つけることができます。

ATRナビゲータ

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

Simple ATRウィンドウ

[OK]をクリックすると、下図のようにSimple ATR EAがチャートに接続されていることが確認できます。

Simple ATRの接続

その結果は、次のテストの例と同じように、プログラムにしたがって見つけることができます。

Simple ATRのシグナル

では、それぞれの戦略に対して、以下のような取引システムを作成します。

1- シンプルなATRシステム - ATRの強度(Simple ATR System - ATR Strength)

  • 現在のATR値 > 0.0024 = ATRが強い
  • 現在のATR値 < 0.0014 = ATRが弱い
  • 現在のATR値 > 0.0014かつ < 0.0024=現在のATR値

このEASimple ATR System - ATR StrengthのEAコードの書き方は、以下の通りです。

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR strength.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 price array
   double PriceArray[];
   
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart with ATR strength as per its value
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
   
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
   
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

このコードにおける相違点は次の通りです。

  • 現在のATRと特定の値を比較して、現在のATR値 > 0.0024の場合にコメントする
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
  • 現在のATR < 0.0014の場合
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
  • 現在のATR値 > 0.0014、現在のATR < 0.0024の場合
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);

その後、ナビゲータウィンドウでこのEAを見つけ、コンパイル後に実行することができます。

ATRナビゲータ1

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

ATR strengthウィンドウ

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

ATR strengthの接続

この戦略に基づき生成されたテスト用シグナルの一例を以下に示します。

次のチャートでわかるように、Strong ATRと現在のATRの値が新しい行でコメントとして表示されます。

ATR strength - 強

次のチャートでわかるように、「weak ATR」と現在のATR値ののコメントが新しい行で表示されています。

ATR strength - 弱

以下のチャートは、決定された値通りに中立であるため、現在のATR値のみがコメント表示されていることがわかります。

ATR strength - 中立

2 - シンプルなATRシステム - ATRの動き(Simple ATR System - ATR Movement)

  • 現在のATR値 > 前回のATR値= ATRが上昇
  • 現在のATR値 < 前回のATR値=ATRが下降

このSimple ATR System - ATR Movement EAのコードの書き方は、以下の通りです。

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR 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()
  {
   //creating arrays
   double PriceArray0[];
   double PriceArray1[];
   
   //sort price array from current data
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14); 
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);

   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
   
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
      
  }
//+------------------------------------------------------------------+


このコードにおける相違点は次の通りです。

  • 2つの価格配列(現在のATR値(PriceArray0)、前回のATR値(PriceArray1))を作成する
   double PriceArray0[];
   double PriceArray1[];
  • 現在のデータから価格配列を並び替える
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
  • 2つの配列に対するデータを定義して結果を格納する
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
  • 2つの値(現在のATRと前回のATR)に対して現在のデータ値を取得する
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);
  • 現在のATRと前回のATRの値を比較してコメントする
    • 現在のATR値 > 前回のATR値の場合
   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
    • 現在のATR値 < 前回のATR値の場合
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
コンパイル後、ナビゲータウィンドウでこのEAを見つけ、実行することができます。

ATRナビゲータ2

ファイルをダブルクリックまたはドラッグ&ドロップすると、以下のようなウィンドウが表示されます。

ATR movementウィンドウ

[アルゴリズム取引を許可する]を有効にして[OK]を押すと、下図のようなEAがチャートに表示されます。

ADX movementの接続

この戦略に基づき生成されたテスト用シグナルの一例を以下に示します。

ATRが上昇した場合

ATR movement - 上

ATRが下降した場合

ATR movement - 下


3 - シンプルなATRシステム - SLとTPのレベル(Simple ATR System - SL and TP levels)

買いポジションの場合、次をチャートで確認する必要があります。

  • 現在の売り呼び値
  • 現在の買い呼び値(新しい行)
  • 現在のATR値(新しい行)
  • 買いポジションのストップロス値(新しい行)
  • 買いポジションのテイクプロフィット値(新しい行)

売りポジションの場合、チャート上で次を確認する必要があります。

  • 現在の売り呼び値
  • 現在の買い呼び値(新しい行)
  • 現在のATR値(新しい行)
  • 売りポジションのストップロス(新しい行)
  • 売りポジションのテイクプロフィット(新しい行)

以下は、このSimple ATR System - SL and TP levelsのEAコードの書き方です。

//+------------------------------------------------------------------+
//|                             Simple ATR System - SL&TP levels.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()
  {
   //define Ask price&Bid
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //creating price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
   
   //comment on the chart
   Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
   "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
  }
//+------------------------------------------------------------------+

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

  • ストップロスやテイクプロフィットを計算するための売り呼び値と買い呼び値を定義する
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
  • 買いポジションと売りポジションの両方について、ストップロスとテイクプロフィットを計算する
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
  • 買いポジションと売りポジションの両方の戦略に基づいてコメント
  • 現在の売り呼び値
  • 現在の買い呼び値(新しい行)
  • 現在のATR値(新しい行)
  • ストップロスの値(新しい行)
  • テイクプロフィットの値(新しい行)
  •    Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
       "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);

    コードをコンパイルしたら、ナビゲータウィンドウでこのEAを見つけて実行することができます。

    ATRナビゲータ3

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

    ATR SL_TPウィンドウ

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

    ATR SL_TPの接続

    この戦略に基づき生成されたテスト用シグナルの一例を以下に示します。

    ATR SL-TP levels

    結論

    ここで、ATR とは何か、それが何を測定し、その背後にある概念、手動で計算する方法を学び、それを市場の実際の例に適用したことで、Average True Range を詳細に理解していると想定されます。 ATR 定義のトピックを通じてでした。次に、私たちが学んだのと同じATRの概念に基づいて、有利に使用できるいくつかの簡単な戦略を学びました. 「ATR戦略」のトピックで学んだこと、「ATR戦略の設計図」トピックのトピックを通じて、MetaTrader 5 取引プラットフォームで動作するすべての戦略の取引システムを設計するのに役立つ各戦略の設計図を学び、設計しました。 MetaQuotes言語(MQL5) によって各戦略のEAを記述し、ATR取引システム トピックを通じてMetaTrader 5プラットフォームでそれらを実行します。

    これまでのトピックを理解し、練習した後は、ATRをその背景にある概念に従って使用できるようになり、特に、何事も練習が重要なので、自分で学んだことを応用した後、自動売買システムを通じて、商品のボラティリティを判断するための指標を読みこなせるようになる必要があります。

    また、新しい戦略やツールは、実際の口座で使用する前に必ずテストすることが重要です。なぜなら、たとえ他の人が使ってうまくいったとしても、自分の性格や取引プランに合わない可能性があり、これは普通のことだからです。よって、まずはテストをして、自分にとって役に立つかどうか、利益が出るかどうかを確認する必要があります。

    最後に、この記事が読者の取引に役立つことを願っています。また、記事のトピックや取引に関連するトピックについて、取引結果を高めるための新しいアイデアに目を開かせ、また、取引におけるプログラミングの重要性、プログラミングがどれだけ役に立つか、プログラミングによってどれだけ簡単、スムーズかつ正確に取引できるようになるかをわかっていただけたことを願っています。

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

    一からの取引エキスパートアドバイザーの開発(第12部):Times and Trade (I) 一からの取引エキスパートアドバイザーの開発(第12部):Times and Trade (I)
    今日は、注文の流れを読むために、高速な解釈を持つTimes & Tradeを作成します。これは、システムを構築していくうえで最初の部分です。次回は、足りない情報を補って、システムを完成させる予定です。この新しい機能を実装するために、エキスパートアドバイザー(EA)のコードにいくつかの新しいものを追加する必要があります。
    DoEasy - コントロール(第5部):WinForms基本オブジェクト、Panelコントロール、AutoSizeパラメータ DoEasy - コントロール(第5部):WinForms基本オブジェクト、Panelコントロール、AutoSizeパラメータ
    本稿では、すべてのライブラリWinFormsオブジェクトの基本オブジェクトを作成し、Panel WinFormsオブジェクトのAutoSizeプロパティ(オブジェクトの内部コンテンツに合わせた自動サイズ変更)の実装を開始する予定です。
    一からの取引エキスパートアドバイザーの開発(第13部):Times & Trade (II) 一からの取引エキスパートアドバイザーの開発(第13部):Times & Trade (II)
    本日は、Times & Tradeシステムの第2部である市場分析を構築します。前回の「Times & Trade (I)」稿では、市場で実行された取引を可能な限り迅速に解釈するための指標を持つことを可能にする代替のチャート編成システムについて説明しました。
    DoEasy - コントロール(第4部):パネルコントロールとPadding and Dockパラメータ DoEasy - コントロール(第4部):パネルコントロールとPadding and Dockパラメータ
    今回は、Paddingパラメータ(要素の四辺の内部インデント/マージン)とDockパラメータ(コンテナ内のオブジェクトの配置方法)の扱いを実装します。