ATRによる取引システムの設計方法を学ぶ
はじめに
この新しい記事では、測定してどのように使用するかを知っておく必要がある、取引の新しい概念についてお話します。その概念は「ボラティリティ」です。ボラティリティを測定するためには多くのツールを使用することができます。これらのツールの中で最も人気のあるツールの1つがATRテクニカル指標です。この記事で紹介するように、ボラティリティがどのように推移しているかを知ることはそれに基づいて意思決定を行うための重要な要因や拠点の一つとなるため、形勢を一変させることができます。
この ATR 指標を非常によく理解するために、多くのトピックを取り上げます。私が公開した他の記事を読んでいただいていれば、私のアプローチが物事の根源を学び、教えることであることをご存知かもしれません。以下のトピックは、この素晴らしいツールについてこの記事で学ぶことのすべてです。
これらのトピックを経て、ATR指標を深く理解し、適切な使い方を習得したいと思います。ATR指標について、それが測定するもの、およびその計算方法について学びます。その計算式を分析し、市場での実際の例に適用します。このトピックは「ATRの定義」で取り上げます。ATR指標の考え方に基づいて使える簡単な戦略を学びます。理解を深めるための簡単な戦略を紹介しjます。これは「ATR戦略」でおこないます。述べた戦略の設計図を作成することを学びます。これは、プログラムがどのように機能すべきかというアイデアを視覚化するもので、取引システムの設計プロセスにおいて価値ある手順です。「ATR戦略設計図」ではステップバイステップの設計図を提供します。そして、これらの戦略に基づいた取引システムを設計するためのコードを、プログラミング言語MQL5を用いてどのように書くかを学びます。開発されたプログラムはMetaTrader 5取引プラットフォームで実行されます。これは「ATR取引システム」で説明しています。
MQL5で戦略コードを記述するために、MetaTrader 5取引プラットフォームに統合されているMetaQuotes言語エディタ(MetaEditorツール)を使用します。まだプラットフォームをお持ちでない方は、https://www.metatrader5.com/ja/downloadからダウンロードしてください。
MetaTrader 5取引プラットフォームのウィンドウは、以下のようになります。
このウィンドウから、MetaTrader 5ターミナルを開いた状態でF4キーを押すと、MetaEditorを開くことができます。もう1つの方法は、下の画像に示すように、MetaTrader 5ターミナルのインターフェイスから[IDE]ボタンをクリックすることです。
MetaTrader 5ターミナルで[ツール]メニューをクリックし、次の図のようにメニューから[MetaQuotes言語エディタ]を選択することでも開くことができます。
MetaQuotes言語エディタが起動します。次の図は、そのインターフェイスを示したものです。
この記事で読んだことを実践することをお勧めします。なぜなら、練習は上達のための重要な要素だからです。
免責条項:すべての情報は「現状有姿」で提供され、情報提供のみを目的としており、取引目的やアドバイスを目的としたものではありません。いかなる結果も保証するものではありません。読者がこれらの資料を自分の取引口座で使用する場合、自己責任でおこなってください。
さて、取引スキルを向上させ、取引結果を向上させることができる新しいツールを学ぶ支度をしてください。私たちのジャーニーを始めましょう。
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を計算する(次のうちの最大値)
- 現在の高値 - 現在の安値(高値と安値の差)
- 絶対値(現在の高値 - 前回の終値)
- 絶対値(現在の安値 - 前回の終値)
計算した内容に従って、高値 - 安値、abs(高値 - 前回の終値)、 abs(安値 - 前回の終値)から最大値となるTRを決定します。
2 - 14期間のATRを計算する
これまでの手順で、ATRを手動で計算することができます。ただし、最近では、MetaTrader 5の取引プラットフォームですぐに使える形で提供されているため、それをおこなう必要はありません。すべきことは、次のとおり、利用可能な指標の中からそれを選択することだけです。
MetaTrader5を起動し、[挿入]タブ→[インディケータ]→[オシレーター]→[Average True Range]をクリックします。
Average True Rangeを選択すると、以下のATRのパラメータを設定するためのウィンドウが表示されます。
1 - 指標の希望期間
この期間の値は、各期間や商品のボラティリティに応じて、時間枠や商品ごとに異なることがあります。ATRが長ければ長いほど、平均がより滑らかになるため、正確な指標を生成するのに適しています。
2 - ATR線の色
3 - ATR線のスタイル
4 - ATR線の太さ
パラメータを設定すると、ATR指標がチャートに接続され、以下のように表示されます。
前の図に見られるように、下のウィンドウには、1Hの時間枠を通してEURUSDのボラティリティを測定するために振動する線で表される14期間のATR指標が含まれています。
先に述べたように、ATRはボラティリティを測定するものです。これに基づき、ATRウィンドウの値を分析します。ATR値が低いほど、その商品のボラティリティは低くなります。また、その逆で、ATRの値が高いほど、その商品のボラティリティは高くなります。
次の図はその読み方についてです。
つまり、ATRが低い値を記録した場合はボラティリティが低いことが示され、逆にATR指標が高い値を記録した場合はボラティリティが高いことが示されるのです。
ATRは、その計算からすでに分かっているように、売買シグナルを生成するための正確な指標ではありません。これは、レンジの大きさのみを考慮しますが、その美しさは、適切なポジションサイズ、ストップロス、テイクプロフィットを適用するのに役立つ最高のツールの1つであることです。
先に述べたように、ATRはボラティリティを測定するだけであり、トレンドや相場の方向性を示すものではありません。よって、ATR曲線が上に動いていても、これは上昇トレンドを意味するものではありません。逆に、ATR曲線が下に動いていても、これは下降トレンドを意味するものではありません。混乱しないでください。最も人気のあるツールの1つであるADXは、トレンドがあるかないかを判断するために使用することができます。
また、トレンドの定義については、前回の記事でご紹介しています。
次の図は、ATRがトレンドの方向性を提供しないことを示すことができる例です。
ご覧の通り、価格が下がるのと同時に指標が上昇し、逆に価格が上がるのと同時に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値のコメントを表示し、前述の戦略を設計するのに役立つ、必要な手順の設計図を作成することから始めます。
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強度戦略の設計図です。
2 - シンプルなATRシステム - ATRの動き(Simple ATR System - ATR Movement)
- 現在のATR値 > 前回のATR値= ATRが上昇
- 現在のATR値 < 前回のATR値=ATRが下降
そこで、EAに現在のATR値と前回のATR値をチェックさせ、現在のATR値が前回のATR値より大きければATRが上昇していると判断し、現在のATR値が前回のATR値より小さければATRが下落していると判断するか、何も表示させないようにする必要があります。
このATRの動き戦略の設計図は以下の通りです。
3 - シンプルなATRシステム - SLとTPのレベル(Simple ATR System - SL and TP levels)
いずれもチャートにコメントを表示する必要がありました。
買いポジションと売りポジション:
- 現在の売り呼び値
- 現在の買い呼び値(新しい行)
- 現在のATR値(新しい行)
- ストップロスの値(新しい行)
- テイクプロフィットの値(新しい行)
そして、このATR SLとTPレベルの戦略の設計図は以下の通りです。
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を作成した後、このプログラムを実行したい場合、次の画像と同じようにナビゲータで見つけることができます。
ファイルをダブルクリックするかチャート上にドラッグ&ドロップすると、次のようなウィンドウが表示されます。
[OK]をクリックすると、下図のようにSimple ATR EAがチャートに接続されていることが確認できます。
その結果は、次のテストの例と同じように、プログラムにしたがって見つけることができます。
では、それぞれの戦略に対して、以下のような取引システムを作成します。
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を見つけ、コンパイル後に実行することができます。
ファイルをダブルクリックまたはチャート上にドラッグ&ドロップして開くと、次のようなウィンドウが表示されます。
[OK]を押すと、下図のようなEAがチャートに表示されます。
この戦略に基づき生成されたテスト用シグナルの一例を以下に示します。
次のチャートでわかるように、Strong ATRと現在のATRの値が新しい行でコメントとして表示されます。
次のチャートでわかるように、「weak ATR」と現在のATR値ののコメントが新しい行で表示されています。
以下のチャートは、決定された値通りに中立であるため、現在のATR値のみがコメント表示されていることがわかります。
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を見つけ、実行することができます。
ファイルをダブルクリックまたはドラッグ&ドロップすると、以下のようなウィンドウが表示されます。
[アルゴリズム取引を許可する]を有効にして[OK]を押すと、下図のようなEAがチャートに表示されます。
この戦略に基づき生成されたテスト用シグナルの一例を以下に示します。
ATRが上昇した場合
ATRが下降した場合
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を見つけて実行することができます。
ファイルをダブルクリックまたはチャート上にドラッグ&ドロップして開くと、次のようなウィンドウが表示されます。
[OK]を押すと、下図のようなEAがチャートに表示されます。
この戦略に基づき生成されたテスト用シグナルの一例を以下に示します。
結論
ここで、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
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索