
エンベロープによる取引システムの設計方法を学ぶ
はじめに
前回の「ボリンジャーバンドによる取引システムの設計方法を学ぶ」稿では、バンドによる取引を可能にする最も人気のある指標の1つであるボリンジャーバンドについて書きました。リンクはこちらです。
ボリンジャーバンドについてのこの記事で述べたように、「バンド取引」の概念には使用できるさまざまな既存の方法があります。すべての方法の計算とストラテジーのアプローチは異なりますが、共通しているのは、バンドで取引するという概念です。
ここで、バンド取引の概念を使用した別の方法であるエンベロープ指標を共有します。この指標は、価格とその移動平均を囲む2つのバンドで表されます。この記事では、次のトピックを含むいくつかの詳細を検討します。
これらのトピックを通じて、指標を深く理解できるように指標について説明します。この情報は、結果を向上するより良い取引計画またはストラテジーの開発に役立つはずです。そこで、エンベロープの定義のトピックを通じて、エンベロープ指標の概念について詳しく説明します。概念をよりよく理解するために、その計算を検討します。次に、取引結果を向上させるストラテジーの開発を試みます。
「エンベロープストラテジー」セクションでは、使用例として、私たちに有利に使用できるいくつかの簡単な基本ストラテジーを共有します。これにより、より良い結果を得るためのより多くのストラテジーへの目を向けることができます。次に、「エンベロープ取引ストラテジーシステムの青写真」セクションでは、エンベロープ指標のストラテジーを使用して取引システムを作成する方法の青写真を共有します。これは非常に興味深いトピックであると思います。後で、「エンベロープ取引システム」セクションで、MQL5言語でエンベロープ指標ストラテジーに基づいて取引システムを設計する方法を共有します。これは、MetaTrader 5でさらに使用できます。
この記事がお役に立てば幸いです。また、読者の独自の取引システムの開発や取引結果の改善に役立つ洞察が得られることを願っています。
重要: この記事のすべてのコードはMQL5で記述されています。これらのコードはMetaTrader 5で実行できます。つまり、アプリケーションを実行するにはMetaTrader 5が必要です。MetaTrader 5ターミナルをまだお持ちでない場合は、https://www.metatrader5.com/ja/downloadからダウンロードしてください。
ダウンロードすると、MetaTrader5のウィンドウで次の画像が表示されます。
MetaQuotes言語エディター(MetaEditor)を開いてコードを書き込むには、次の図にその方法を示します。
もう1つの開き方:
または、MetaTrader5ウィンドウが開いているときにF4キーを押すこともできます。
次に、次のウィンドウが開きます。
新しいファイルは下記のように開きます。
- 新しいファイルを開いてエキスパートアドバイザーを作成します
- 新しいファイルを開いてカスタムインジケータを作成します
- 新しいファイルを開いてスクリプトを作成します
詳細については「アルゴリズム取引システムを設計する理由と方法を学ぶ」稿をご覧ください。
免責事項: この記事の内容はすべて、教育のみを目的として作成されており、他を目的にしていません。この記事の内容はいかなる種類の結果も保証するものではないため、この記事の内容に基づいて行うすべてのアクションは自己責任となります。
それでは、エンベロープ指標を調べて、それが取引にどのように役立つかを確認するための旅を始めましょう。
エンベロープの定義
エンベロープ指標は、バンドで取引する方法の1つであり、前述したように、ボリンジャーバンド、チャネル、エンベロープなど、バンドで取引する方法は多数あります。
簡単に言えば、エンベロープは、移動平均を一定の割合で囲む2つのバンドであり、通常は価格を囲むと言えます。これらのエンベロープは、トレンドの動きをフィルタリングしたり、横ばいのときに取引したりするために使用できます。
トレンドの最中に、偽のブレイクアウトやホイップソーなど、反対方向への動きに直面することがあります。このような動きは偽のシグナルを生成する可能性があります。その後、状況は反対のシナリオに戻ります。たとえば、価格が移動平均を上向きに超えた場合、これは上昇のシグナルとして機能します。その後、価格は反転し、移動平均を下向きに交差します。つまり、前の上向きの交差の反対です。ちなみに、移動平均の詳細、使用方法、それに基づく取引システムの作成については、以前に書いた「さまざまな移動平均システムを設計する方法を学ぶ」稿をご覧ください。
上の図では、価格は上から移動平均を超えた後で反転して再び上昇します。
また、横ばいで買い手と売り手のバランスが取れている場合や、明らかなトレンドがなく、この動きの恩恵を受ける必要がある場合もあります。
このような場合、エンベロープ指標はトレンド中の動きのフィルターにできるので便利です。価格が移動平均を上向きに超える場合、価格がエンベロープ指標の上位線を超えるのを待ちます。
前に述べたのと同じ動きを示す上の図でわかるように、価格は移動平均を上向きに超えましたが、エンベロープ指標の上位線を超えていませんでした。したがって、このクロスオーバーに従って行動を起こすことはできません。そうして初めて、価格が再び下落したことがわかりました。
そしてここでテクニカル分析について興味深いことを言及する必要があります。その多くの方法とストラテジーをより良い結果を生み出すように組み合わせられるということです。
前に述べたように、エンベロープは価格を取り巻く2つのバンドであるため、価格に触れる可能性はバンドが広いほど低くなり、狭いほど高くなります。
では、エンベロープ指標はどのように計算できるのでしょうか。エンベロープは、移動平均から一定の割合で設定されます。この割合は、価格アクション、時間枠、およびユーザーストラテジーによって異なります。
エンベロープを計算するには、次を行います。
- 移動平均を計算する
- エンベロープの% = 移動平均*%
- エンベロープの上位線 = 移動平均 + 移動平均の決定された%
- エンベロープの下位線 = 移動平均 - 移動平均の決定された%
その方法の例を見てみましょう。
次の14日間の価格データがあるとします。
- 移動平均を取得します(ここでは単純移動平均を計算しますが、任意の移動平均を使用できます。それらの一部については、以前書いた「さまざまな移動平均システムの設計方法を学ぶ」稿で詳しく説明しています。
- 好みに応じてエンベロープの割合を計算します。
- エンベロープの上位線を計算します。
- エンベロープの下位線を計算します。
この計算はティックごとに実行され、次に上位線の値が価格の上にプロットされ、下位線の値が価格の下にプロットされます。
だたし、それはプラットフォームに計算されて組み込まれているため選択するだけでチャートにプロットされるので、今日は手動で行いません。次の図は、その方法について説明しています。
上の図は、エンベロープのパラメータを示しています。
- 移動平均の期間
- エンベロープの%
- 価格の種類(終値、中央値、通常価格など)
- チャート上のエンベロープに対してシフトされる値
- 移動平均の種類
- エンベロープの上位線の色
- エンベロープの上位線のスタイル
- エンベロープの下位線の色
- エンベロープの下部線のスタイル
すべてのパラメータを決定した後、次の図に示すように、指標がチャートに表示されます。
エンベロープのストラテジー
このセクションでは、エンベロープストラテジーのいくつかを紹介します。これらのストラテジーは、市場の状況や市場の方向性に応じて使用されます。
ご存知のように、市場では上昇トレンド、下降トレンド、横ばいの方向性があります。特定の市場の方向性に応じて、この市場の動きから利益を得ることができる特定のストラテジーを使用します。
エンベロープを他のツールと組み合わせて、この組み合わせに基づいてストラテジーを作成することができます。このような組み合わせ使用の結果は、1つのツールのみを使用するよりも優れている可能性があります。したがって、エンベロープ指標を価格アクションパターンなどの別のツールと組み合わせることができます。たとえば、エンベロープ指標からシグナルを取得し、価格パターンから別のシグナルまたは確認シグナルを取得します。オプションで、別のテクニカル分析指標を使用することができます。これは、より良い結果を得て意思決定を改善するように複数の概念を組み合わせる、テクニカル分析取引における驚くべきアプローチだと思います。
それに応じて、トレンドの動きで使用できるストラテジーと、横ばいの動きで使用できるストラテジーに分割します。
- ストラテジー1: 上昇トレンド
上昇トレンド市場では、価格は上昇トレンドで変動し、安値と高値が増加します。ここで、上昇トレンド中に価格とエンベロープ指標がどのように機能するかを知る必要があります。
この指標は、ある期間の価格の平均である移動平均の割合であるため、上昇トレンドの間、価格はエンベロープ指標の上位線を超えて移動します。上昇トレンド中のストラテジーは次のようになります。
価格がエンベロープの上位線を上向きに横切ると買いシグナルが生成されます。価格がエンベロープの下位線を下向きに横切るとテイクプロフィットのシグナルが生成されます。
- 価格 > 上位線 = 買い
- 価格 < 下位線 = テイクプロフィット
- ストラテジー2: 下降トレンド
下降トレンド市場では、価格は下降トレンドで変動し、高値と安値が減少します。ここで、下降トレンド中に価格とエンベロープ指標がどのように機能するかを知る必要があります。
下降トレンドの間、価格はエンベロープ指標の下位線を下回ります。下降トレンド中のストラテジーは次のようになります。
価格がエンベロープの下位線を下向きに横切るとショートのシグナルが生成されます。価格がエンベロープの上位線を上向きに横切るとテイクプロフィットのシグナルが生成されます。
- 価格 < 下位線 = ショート
- 価格 > 上位線 = テイクプロフィット
- ストラテジー3: 横ばい
横ばいの市場では、横ばいのフォーメーションの一部で価格が変動し、高値と安値はそのままになります。または、買い手と売り手が相手を制御することなく両者の間にバランスがあり、2つのレベルにまたがる単純な形になりまです。これは、バランスを示しています。横ばいに他の形がないことを意味するものではありませんが、横ばいの動きは、上昇トレンドと下降トレンドを除く任意の動きまたは形であることを知っておくとよいでしょう。ここで、横ばい中に価格とエンベロープ指標がどのように機能するかを知る必要があります。
横ばいの場合、価格はエンベロープ指標の下位線と上位線の間を移動します。横ばい中のストラテジーは次のようになります。
価格がエンベロープの下位線に達すると買いシグナルが生成され、上位線に達するとテイクプロフィットのシグナルが生成されます。価格がエンベロープの上位線に達するとショートのシグナルが生成され、下位線に達するとテイクプロフィットのシグナルが生成されます。
- 価格 = 下位線 = 買い
- 価格 = 上位線 = テイクプロフィット
- 価格 = 上位線 = ショート
- 価格 = 下位線 = テイクプロフィット
これらのストラテジーは指標の使用方法を理解するのに役立つようにのみ提供されています。適切に使用するためには改善とさらなる開発が必要です。読んだり学んだりするすべてのストラテジーを常に徹底的にテストしてください。特に教育目的で作成されているストラテジーを使用するには、結果をテストおよび確認してからにしてください。
エンベロープ取引システムの青写真
この興味深いセクションでは、前述のストラテジーを青写真として設計し、正確に何をしたいのか、プログラムに何をさせたいのかを決定します。それを行います。
- ストラテジー1: 上昇トレンド
- 価格 > 上位線 = 買い
- 価格 < 下位線 = テイクプロフィット
このストラテジーの青写真は次のようになります。
- ストラテジー2: 下降トレンド
- 価格 < 下位線 = ショート
- 価格 > 上位線 = テイクプロフィット
このストラテジーの青写真は次のようになります。
- ストラテジー3: 横ばい
- 価格 = 下位線 = 買い
- 価格 = 上位線 = テイクプロフィット
- 価格 = 上位線 = ショート
- 価格 = 下位線 = テイクプロフィット
エンベロープ取引システム
このセクションでは、MQL5を使用してEA(エキスパートアドバイザー)プログラムの形式でこれらのストラテジーのコードを書く方法を紹介します。これは、取引を強化し、シグナルを自動的かつ簡単に識別するのに役立ちます。ここで、Simple Envelopes EAのコードを書く方法を共有し、チャートのエンベロープ指標の上位線と下位線にコメントするようにプログラムに指示します。
エンベロープの上位線と下位線の値をチャートのコメントとして表示できるようにするプログラムを設計しましょう。
//+------------------------------------------------------------------+ //| Simple Envelopes EA.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" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating an array for price info MqlRates PriceInfo[]; //Sorting it from current data to old data ArraySetAsSeries(PriceInfo, true); //Copy prices data to array int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo); //Creating two arrays for prices of upper and lower band double UpperBandArray[]; double LowerBandArray[]; //Identify Envelopes indicator int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.100); //Copying prices data to arrays CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray); CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray); //Calculation for the current data double UpperBandValue=NormalizeDouble(UpperBandArray[0],6); double LowerBandValue=NormalizeDouble(LowerBandArray[0],6); //Comments on the chart with values of Band of Envelopes Comment("Envelopes Upper Band =",UpperBandValue,"\n" "Envelopes Lower Band =",LowerBandValue,"\n"); } //+------------------------------------------------------------------+
MetaTrader 5のコードは、次の図に示すように実行できます。
その後、プログラムがチャートに表示されます。
MetaTrader 5取引ターミナルでコードを実行すると、次のチャートとシグナルが表示されます。
エンベロープ指標には、下位線と上位線の2つのバンドがあり、それらの値をチャートで確認できます。
ここで、前述の3つのストラテジーのコードを記述します。ストラテジー1では上昇トレンドで買ってテイクプロフィットを行い、ストラテジー2では下降トレンドでショートとテイクプロフィットを行い、ストラテジー3は横ばいで下位線で買って、上位線でテイクプロフィットを行ってから上位線でショートして下位線でテイクプロフィットを行います。
- ストラテジー1: 上昇トレンド
- 価格 > 上位線 = 買い
- 価格 < 下位線 = テイクプロフィット
次のコードは、このストラテジーを実行するようにプログラムを設計するためのものです。
//+------------------------------------------------------------------+ //| Envelopes 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" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating an array for price info MqlRates PriceInfo[]; //Sorting it from current data to old data ArraySetAsSeries(PriceInfo, true); //Copy prices data to array int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo); //Creating two arrays for prices of upper and lower band double UpperBandArray[]; double LowerBandArray[]; //Identify Envelopes indicator int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.100); //Copying prices data to arrays CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray); CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray); //Calculation for the current data double UpperBandValue=NormalizeDouble(UpperBandArray[0],6); double LowerBandValue=NormalizeDouble(LowerBandArray[0],6); //Comment Buy signal on the chart or no signal if (PriceInfo[0].close > UpperBandValue) Comment("Envelopes Buy Signal"); if (PriceInfo[0].close < LowerBandValue) Comment("Envelopes Take Profit or Stop Loss"); } //+------------------------------------------------------------------+
MetaTraderのコードは、次の図に示すように実行できます。
ファイルをチャートにドラッグアンドドロップするか、ファイルをダブルクリックすると、コードが実行され、次のウィンドウが開きます。
その後、プログラムはチャートに接続されます。
前のチャートでわかるように、上昇トレンド中に価格が上位線を超えると買いシグナルが生成されます。
前のチャートでわかるように、価格が下位線を下回るとテイクプロフィットのシグナルが生成されます。
- ストラテジー2: 下降トレンド
- 価格 < 下位線 = ショート
- 価格 > 上位線 = テイクプロフィット
次のコードは、このストラテジーを実行するようにプログラムを設計するためのものです。
//+------------------------------------------------------------------+ //| Envelopes 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" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating an array for price info MqlRates PriceInfo[]; //Sorting it from current data to old data ArraySetAsSeries(PriceInfo, true); //Copy prices data to array int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo); //Creating two arrays for prices of upper and lower band double UpperBandArray[]; double LowerBandArray[]; //Identify Envelopes indicator int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.100); //Copying prices data to arrays CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray); CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray); //Calculation for the current data double UpperBandValue=NormalizeDouble(UpperBandArray[0],6); double LowerBandValue=NormalizeDouble(LowerBandArray[0],6); //Comment Buy signal on the chart or no signal if (PriceInfo[0].close < LowerBandValue) Comment("Envelopes Short Signal"); if (PriceInfo[0].close > UpperBandValue) Comment("Envelopes Take Profit or Stop Loss"); } //+------------------------------------------------------------------+
次の図に示すように、MetaTrader5からコードを実行できます。
ファイルをチャートにドラッグアンドドロップするか、ファイルをダブルクリックすると、コードが実行され、次のウィンドウが開きます。
その後、プログラムがチャートに接続されます。
前のチャートでわかるように、下降トレンド中に価格が下位線を下回った場合、ショーとのシグナルが生成されます。
前のチャートでわかるように、下降トレンド中に価格が上位線を超えるとテイクプロフィットのシグナルが生成されます。
- ストラテジー3: 横ばい
- 価格 = 下位線 = 買い
- 価格 = 上位線 = テイクプロフィット
//+------------------------------------------------------------------+ //| Envelopes 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" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating an array for price info MqlRates PriceInfo[]; //Sorting it from current data to old data ArraySetAsSeries(PriceInfo, true); //Copy prices data to array int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo); //Creating two arrays for prices of upper and lower band double UpperBandArray[]; double LowerBandArray[]; //Identify Envelopes indicator int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.150); //Copying prices data to arrays CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray); CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray); //Calculation for the current data double UpperBandValue=NormalizeDouble(UpperBandArray[0],6); double LowerBandValue=NormalizeDouble(LowerBandArray[0],6); //Comment Buy signal on the chart or no signal if (PriceInfo[0].close <= LowerBandValue) Comment("Envelopes Buy Signal"); if (PriceInfo[0].close >= UpperBandValue) Comment("Envelopes Take Profit"); if (PriceInfo[0].close > LowerBandValue && PriceInfo[0].close < UpperBandValue) Comment("No Signal"); } //+------------------------------------------------------------------+MetaTrader 5のコードは、次の図に示すように実行できます。
その後、プログラムがチャートに表示されます。
前のチャートでわかるように、価格が横ばいのときに下位線に触れると、買いシグナルが生成されます。
前のチャートでわかるように、価格が横ばいのときに上位線に触れると、テイクプロフィットのシグナルが生成されます。
- 価格 = 上位線 = ショート
- 価格 = 下位線 = テイクプロフィット
次のコードは、このストラテジーを実行するようにプログラムを設計するためのものです。
//+------------------------------------------------------------------+ //| Envelopes Sideways Short 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" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating an array for price info MqlRates PriceInfo[]; //Sorting it from current data to old data ArraySetAsSeries(PriceInfo, true); //Copy prices data to array int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo); //Creating two arrays for prices of upper and lower band double UpperBandArray[]; double LowerBandArray[]; //Identify Envelopes indicator int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.150); //Copying prices data to arrays CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray); CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray); //Calculation for the current data double UpperBandValue=NormalizeDouble(UpperBandArray[0],6); double LowerBandValue=NormalizeDouble(LowerBandArray[0],6); //Comment Buy signal on the chart or no signal if (PriceInfo[0].close >= UpperBandValue) Comment("Envelopes Short Signal"); if (PriceInfo[0].close <= LowerBandValue) Comment("Envelopes Take Profit"); if (PriceInfo[0].close > LowerBandValue && PriceInfo[0].close < UpperBandValue) Comment("No Signal"); } //+------------------------------------------------------------------+MetaTrader 5のコードは、次の図に示すように実行できます。
その後、プログラムがチャートに表示されます。
前のチャートでわかるように、価格が横ばいのときに低位線に触れると、シグナルが生成されません。
前のチャートでわかるように、価格が横ばいのときに上位線に触れると、ショートシグナルが生成されます。
前のチャートでわかるように、価格が横ばいのときに下位線に触れると、テイクプロフィットのシグナルが生成されます。
終わりに
この記事では、エンベロープ指標を使用してバンドで取引する概念について検討しました。また、バンドの利点と、トレンド中および横ばいの動き中にエンベロープ指標を使用する方法についても検討しました。
また、エンベロープがどのように計算されるかを見てきましたが、使用しているものの内部を理解することは常に良いことです。エンベロープは、取引結果と意思決定を改善する方法について、新しい洞察とアイデアを提供できる指標の1つです。
さらに、単純なストラテジーを検討し、さまざまな市場条件(トレンド市場の上昇トレンドと下降トレンド、または横ばい)で指標を使用できるようにしました。また、これらのストラテジーを理解し、簡単にコードを記述できるように、取引システムの青写真を設計する方法についても説明しました。
また、この記事では、MQL5言語のコードを取り上げています。この記事の主な目的は、コードを書くことが取引においてどのように役立ち有用であるか、そしてコードを書くことが簡単かつ効果的に取引するのにどのように役立つかを説明することです。
トピックの理解を深めるために、ご自分でコードを作成して実行することをお勧めします。この記事があなたとあなたの取引に役立つことを願っています。
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/10478





- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索