
ボリンジャーバンドによる取引システムの設計方法を学ぶ
はじめに
取引の世界には、取引の目標を達成するために有利に使用できる多くのツールと方法があります。これらのツールは、市場の状況や状態に応じて使用できます。
そのような方法の1つは変動幅です。変動幅の主な概念は、決定されたバンドから利益を得るために売買する2つのバンド間で取引することです。これらのツールの1つは、ボリンジャーバンド指標です。この指標は、テクニカル分析と取引の世界で最も人気のある、または最も一般的に使用されている指標の1つです。
この記事では、このボリンジャーバンド指標に関する情報を共有して、それが何であるか、どのように計算するか、どのように使用できるかについての理解を深めます。その後、自分のストラテジーに従って好きなように使うことができるでしょう。次に、このボリンジャーバンド指標を正確かつ簡単に使用して取引システムを設計する方法を紹介します。次のトピックについて説明します。
ボリンジャーバンドについて学習するとき、それはその平均の周りのデータの分散を測定します。この指標は、ジョンボリンジャーによって作成されました。これは、平均(20日移動平均)周辺のデータ(価格)の分散を測定するために、20日移動平均を囲む2つのバンドで構成されています。
ボリンジャーバンド指標には価格を囲む2つのバンドがあるため、エンベロープ指標と同じように見える場合があります。しかしこれは正しくありません。ボリンジャーバンドとエンベロープの違いは、ボリンジャーバンド指標が移動平均を超えて一定の割合で配置されていないが、その計算により、ボリンジャーバンド指標は移動平均の標準偏差に従って拡大または縮小することができるということです。これとその他の詳細については、ボリンジャーバンドの定義のセクションまたはトピックで学習します。
また、ボリンジャーバンドのいくつかのストラテジーを通じて、ボリンジャーバンドを表現し、取引に有益な方法で使用する方法についても学びます。これは、ボリンジャーバンドのストラテジーのセクションに記載されています。
次に、この記事の最も興味深い部分に移ります。アルゴリズム取引システムでこれらのストラテジーを正確かつ信頼できる方法で使用する方法です。これは、ボリンジャーバンドストラテジーの青写真とボリンジャーバンドストラテジーシステムの設計のセクションで学習します。- この記事のすべてのコードはMQL5で書かれ、MetaTrader 5で実行されます。
- 練習して学習を強化したい場合は、自分でコードを記述して実行することをお勧めします。
- コードを実行するにはMetaTrader 5ターミナルが必要であり、コードを書き込むにはMQL5のMetaEditorが必要です。次の図で説明します。
MetaTrader 5をダウンロードしてデバイスにインストールした後、MetaEditorをhttps://www.MetaTrader 5.com/ja/downloadのリンクからダウンロードします。その後、MetaTrader 5ウィンドウは次の図のようになります。
- 新しいファイルを開いてエキスパートアドバイザーを作成します
- 新しいファイルを開いてカスタムインジケータを作成します
- 新しいファイルを開いてスクリプトを作成します
詳細については、https://www.mql5.com/ja/articles/10293から私の以前の記事をご覧ください。
事あるごとに言っていますが、プログラミングやコーディングは、自動的に実行される正確なアクションで生活を簡単かつスムーズにすることができる素晴らしいツールです。重要な目的は、この種の分野に投資して、人生のさまざまな分野で望ましい目標を生み出すために適切な方法でそれを使用する方法を学ぶことです。
取引に関しては、好きなときにいつでもコンピュータに自分のやりたいことをするように指示し、コンピュータに反対されずに自分のやりたいことを正確に実行させながら、自分は他のことをやっていられることで、人生がいかに簡単で楽しいものになるかを想像する必要があります。 それは素晴らしいライフスタイルなので、自分でコーディングするにしても他の人に任せたりしても、このコーディングやプログラミングに適切な方法で興味を持ってもらうことが重要な目的になります。
免責条項
この記事のすべてのコンテンツは、教育を目的として作成されたものであり、他の目的のために作成されたものではありません。この記事の内容はいかなる種類の結果も保証するものではないため、この記事の内容に基づいて行うすべてのアクションは自己責任となります。
それでは、この興味深いトピックと指標について詳しく知るために、記事のセクションを見ていきましょう。
ボリンジャーバンドの定義
変動幅のアイデアの歴史は長く興味深いものであり、多くの方法で利用されています。変動幅は、主に、ある程度の傾向の上下にバンドを構築することに基づいています。
たとえば、それ自体またはエンベロープの割合だけ上下にシフトされた移動平均を使用できます。また、反転のポイントを検出するために価格の上下に2本の平行線があるチャネルがありますが、これらの方法はすべて固定されており、価格の動きに応じて反応しません。言い換えれば、それらは価格変動に伴って拡大または縮小しません。
ボリンジャーバンドは、その特定の計算のためにそれを行うことができます。この部分では、指標計算の詳細を説明します。
前の図でわかるように、2つのバンドが価格を囲んでいます。下のバンドは下から価格を囲み、上のバンドは上から価格を囲みます。したがって、ここで知っておく必要のある主なアイデアは、履歴からの変動幅に基づく方法がたくさんあり、最も一般的なのは割合のバンドであるということです。
変動幅のアイデアにも多くの進展があります。これらの開発の1つは、変動幅による取引に使用されるボリンジャーバンド指標で、計算によって拡張および縮小できることが前述の方法とは異なります。
ボリンジャーバンド指標は、1980年代初頭に、金融市場と取引の分野で人気のある専門家の1人であるジョン・ボリンジャーによって作成されました。彼はCFA(CFA協会認定証券アナリスト)およびCMT(CMT協会認定マーケットテクニシャン)です。
ボリンジャーバンド指標は人気のあるテクニカル指標で、ボラティリティを測定し、市況に応じて拡大および縮小し、株式、外国為替などのすべての金融市場で使用できます。では、ボリンジャーバンドの構築について説明しましょう。変動幅の概念の前に、中心傾向の測定から始めます。次に、この測定値の上下にバンドを作成します。ボリンジャーバンド指標の場合、中心傾向の測定値は単純移動平均であり、間隔は移動標準偏差のボラティリティの測定値によって決定されます。
ボリンジャーバンド指標については次のことが言えます。
- 平均値(移動平均)周辺のデータの分散を測定する
- ボラティリティ指標
- ボリンジャーバンドとエンベロープ、または任意の割合の変動幅方式の違いは、移動平均の上下に特定の割合の移動平均があるがボリンジャーバンドは移動平均の標準偏差であること
- ボラティリティが上がるとバンドは自動的に広がり、ボラティリティが下がるとバンドは縮むため、それらの動的な性質により、標準設定でさまざまな証券に使用できる
- 取引の開始点と終了点を決定するために使用される取引ツール
- バンドは、買われ過ぎや売られ過ぎの状態を判断するためによく使用される
- M-TopsとW-Bottomsを識別したり、トレンドの強さを判断したりするために使用できる
日番号 | 終値$ |
---|---|
1 | 20 |
2 | 30 |
3 | 35 |
4 | 30 |
5 | 40 |
6 | 45 |
7 | 50 |
8 | 55 |
9 | 40 |
10 | 45 |
11 | 50 |
12 | 35 |
13 | 40 |
14 | 50 |
15 | 60 |
16 | 65 |
17 | 70 |
18 | 60 |
19 | 70 |
20 | 75 |
設定の調整
ボリンジャーバンドの設定を他の方法で調整してストラテジーや取引計画に採用できるかどうかを尋ねられた場合、特にこれらの調整がテストされて良好な結果が得られた場合にはできると言えます。また、ボリンジャーが標準偏差乗数を微調整することを推奨していることも知っておく必要があります。それに、移動平均の期間を変更すると、標準偏差の計算に使用される期間に影響することを知っておく必要があります。ボリンジャーはまた、50期間の単純移動平均を使用する場合は標準偏差の乗数を2.1に増やし、10期間の単純移動平均を使用する場合は1.9に減らすことを提案しています。
1. 移動平均の期間を選択する期間
2. 上下のバンドの偏差パラメータを選択するための偏差
3. 変化とトレンドを伴うEURUSD クオート(定数)適用先: 適用されるパラメータの種類(終値、始値、高値、安値、中央値、標準価格、加重終値)を選択
4. スタイル: 指標のスタイル(指標の線の色、形状、幅)を選択
5. シフト: 指標にシフトを適用する値を設定
前に述べたように、トレーダーの入力とストラテジーに従ってこれらの設定を調整することができます。
これで、価格チャートにボリンジャーバンドの指標が表示され、次の図のように表示されます。
ボリンジャーバンドのストラテジー
ここでは、ボリンジャーバンドのストラテジーについて説明し、それを有益な方法で使用する方法を学びます。<分節10659¶>
ボリンジャーバンドは、さまざまな市況やさまざまな市場の動きで使用でき、上昇トレンド、下降トレンド、および横ばいで使用できます。あらゆる市場の状況で、使用できる多くのストラテジーがあるので、ここではそれらのいくつかに言及します。
- 上昇トレンド中
まず、上昇トレンド中に価格が平均(移動平均)を超えて移動することがわかるため、移動平均を使用して上昇トレンド中に価格がどのように移動するかを理解する必要があります。
上昇トレンドの間、ほとんどの場合、価格は移動平均と上位線の間を移動することがわかります。購入者からのコントロールがあるので、安値と高値がより高くなるためです。
- 価格が移動平均を上回るときに買います。ターゲットは上位線になります。
- 価格 > MA = 買、上位線 = ターゲット
- 下降トレンド中
まず、移動平均を使用して下降トレンド中に価格がどのように移動するかを理解する必要があります。価格が下降トレンド中に平均(移動平均)を下回ることがほとんどであるため、
下降トレンドの間、ほとんどの場合、価格は移動平均と低域の間を移動することがわかります。これは、販売者が市場を支配し、価格が下落するにつれて、高値と安値が下がることを意味します。
- 価格が移動平均を下回るとショートします。ターゲットは下位線になります。
- 価格 < MA = ショート、下位線 = ターゲット
- 横ばい
横ばいは上昇トレンドと下降トレンド以外の動きであることがわかるため、まず横ばいの価格がどのように動くかを理解する必要があります。
横ばいでは、買い手と売り手の一方からの市場の完全な制御がないため、買い手と売り手の間のバランスを示しています。次の図は、いくつかの横ばいの動きの例です。
前の図は横ばいの動きの例であり、私が述べた以上のものがありますが、横ばいの動きの概念は、上昇トレンドと下降トレンドを除くすべての動きです。
ここで、価格は移動平均を尊重せず、移動平均が上下に交差するため、横ばいの移動が移動平均でどのように機能するかを知る必要があります。次の図はその一例です。
- 下位線の価格 = 買、上位線の価格 = ターゲット
- 上位線の価格 = 買、下位線の価格 = ターゲット
- 下位線で買って、上位線で利益を得ることができます。
- 上位線で売って、下位線で利益を得ることができます。
ボリンジャーバンドストラテジーのシステム設計
この興味深いパートでは、ボリンジャーバンド指標に基づいてアルゴリズム取引システムをコーディングする方法を学習します。また、前述の3つの取引ストラテジー(上昇トレンドストラテジー、下降トレンドストラテジー、横ばいストラテジー)を作成する方法についても学習します。
シンプルな取引システムから高度な取引システムまで、好きなように取引システムを設計できます。たとえば、単純な概念に基づいて単純なシグナルを生成する単純な取引システムを作成および設計してから、このシグナルに従って行動するか、単純なシグナルを提供するだけでなく高度な取引システムを作成および設計することができます。 しかし、関連する概念の組み合わせに基づいて高度なシグナルを提供し、それを自動的に実行します。さまざまなアプローチがあります。この記事では、単純な取引システムを扱います。概念を学ぶためだけに教育目的で作成します。この知識に基づいて、同様のシステムを開発したり、独自の条件で独自の取引システムを設計したりすることができます。この記事がお役に立てば幸いです。また、取引や投資の目標を達成するのに役立つことを願っています。
まず、移動平均値、上位線値、下位線値の3つのコメントをチャートに表示できるようにする純粋なボリンジャーバンドコードを設計する方法を学習します。
これを行うためのコードは次のとおりです。
//+------------------------------------------------------------------+ //| Simple Bollinger Bands.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //create an array for several prices double MiddleBandArray[]; double UpperBandArray[]; double LowerBandArray[]; //sort the price array from the cuurent candle downwards ArraySetAsSeries(MiddleBandArray,true); ArraySetAsSeries(UpperBandArray,true); ArraySetAsSeries(LowerBandArray,true); //define Bollinger Bands int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE); //copy price info into the array CopyBuffer(BollingerBands,0,0,3,MiddleBandArray); CopyBuffer(BollingerBands,1,0,3,UpperBandArray); CopyBuffer(BollingerBands,2,0,3,LowerBandArray); //calcualte EA for the cuurent candle double MiddleBandValue=MiddleBandArray[0]; double UpperBandValue=UpperBandArray[0]; double LowerBandValue=LowerBandArray[0]; //comments Comment("MiddleBandValue: ",MiddleBandValue,"\n", "UpperBandValue: ",UpperBandValue,"\n","LowerBandValue: ",LowerBandValue,"\n"); } //+------------------------------------------------------------------+コードを記述してコンパイルした後、次の図のように、コードにエラーや警告がないことを確認します。
- 上昇トレンドのボリンジャーバンドストラテジーの青写真:
- 価格 > MA = 買、上位線 = 指値、または = シグナルなし
//+------------------------------------------------------------------+ //| Uptrend BB strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //define Ask, Bid double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); //create an array for several prices double MiddleBandArray[]; double UpperBandArray[]; double LowerBandArray[]; //sort the price array from the cuurent candle downwards ArraySetAsSeries(MiddleBandArray,true); ArraySetAsSeries(UpperBandArray,true); ArraySetAsSeries(LowerBandArray,true); //define Bollinger Bands int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE); //copy price info into the array CopyBuffer(BollingerBands,0,0,3,MiddleBandArray); CopyBuffer(BollingerBands,1,0,3,UpperBandArray); CopyBuffer(BollingerBands,2,0,3,LowerBandArray); //calcualte EA for the cuurent candle double MiddleBandValue=MiddleBandArray[0]; double UpperBandValue=UpperBandArray[0]; double LowerBandValue=LowerBandArray[0]; //giving buy signal when price > MA if ( (Ask>=MiddleBandArray[0]) && (Ask<UpperBandArray[0]) ) { Comment("BUY"); } //check if we have a take profit signal if ( (Bid>=UpperBandArray[0]) ) { Comment("TAKE PROFIT"); } //check if we have no signal if ( (Ask<MiddleBandArray[0]) ) { Comment("NO SIGNAL"); } } //+------------------------------------------------------------------+次のスクリーンショットでは、このストラテジーのシグナルを示しています。
- コードにエラーや警告がないことを確認する
- ファイルを検索する
- チャートに添付するファイルをドラッグアンドドロップまたはダブルクリックしてコードを実行する
- 下降トレンドボリンジャーバンドストラテジーの青写真:
- 価格 < MA = ショート、下位線 = ターゲット
//+------------------------------------------------------------------+ //| Downtrend BB strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //define Ask, Bid double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); //create an array for several prices double MiddleBandArray[]; double UpperBandArray[]; double LowerBandArray[]; //sort the price array from the cuurent candle downwards ArraySetAsSeries(MiddleBandArray,true); ArraySetAsSeries(UpperBandArray,true); ArraySetAsSeries(LowerBandArray,true); //define Bollinger Bands int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE); //copy price info into the array CopyBuffer(BollingerBands,0,0,3,MiddleBandArray); CopyBuffer(BollingerBands,1,0,3,UpperBandArray); CopyBuffer(BollingerBands,2,0,3,LowerBandArray); //calcualte EA for the cuurent candle double MiddleBandValue=MiddleBandArray[0]; double UpperBandValue=UpperBandArray[0]; double LowerBandValue=LowerBandArray[0]; //giving sell signal when price < MA if ( (Bid<=MiddleBandArray[0]) && (Bid>LowerBandArray[0]) ) { Comment("SELL"); } //check if we have a take profit signal if ( (Ask<=LowerBandArray[0]) ) { Comment("TAKE PROFIT"); } //check if we have no signal if ( (Bid>MiddleBandArray[0]) ) { Comment("NO SIGNAL"); } } //+------------------------------------------------------------------+以下のスクリーンショットは、このストラテジーによって生成されたシグナルを示しています。
- コードにエラーや警告がないことを確認する
- ファイルを検索する
- チャートに添付するファイルをドラッグアンドドロップまたはダブルクリックしてコードを実行する
- 横ばいボリンジャーバンドストラテジーの青写真:
- 下位線の価格 = 買、上位線の価格 = ターゲット
- 上位線の価格 = 買、下位線の価格 = ターゲット
A - 下位線に触れたときに生成される買いシグナル
//+------------------------------------------------------------------+ //| Buy sideways BB strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //define Ask, Bid double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); //create an array for several prices double MiddleBandArray[]; double UpperBandArray[]; double LowerBandArray[]; //sort the price array from the cuurent candle downwards ArraySetAsSeries(MiddleBandArray,true); ArraySetAsSeries(UpperBandArray,true); ArraySetAsSeries(LowerBandArray,true); //define Bollinger Bands int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE); //copy price info into the array CopyBuffer(BollingerBands,0,0,3,MiddleBandArray); CopyBuffer(BollingerBands,1,0,3,UpperBandArray); CopyBuffer(BollingerBands,2,0,3,LowerBandArray); //calcualte EA for the cuurent candle double MiddleBandValue=MiddleBandArray[0]; double UpperBandValue=UpperBandArray[0]; double LowerBandValue=LowerBandArray[0]; //giving buy signal when price > MA if ( (Ask<=LowerBandArray[0]) ) { Comment("BUY"); } //check if we have a take profit signal if ( (Bid>=UpperBandArray[0]) ) { Comment("TAKE PROFIT"); } } //+------------------------------------------------------------------+次は、このストラテジーによって生成されたシグナルです。
- コードにエラーや警告がないことを確認
- ファイルを検索する
- チャートに添付するファイルをドラッグアンドドロップまたはダブルクリックしてコードを実行する
これを行うためのコードは次のとおりです。B - 下位線に触れたときに生成される売りシグナル
//+------------------------------------------------------------------+ //| Sell sideways BB strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //define Ask, Bid double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); //create an array for several prices double MiddleBandArray[]; double UpperBandArray[]; double LowerBandArray[]; //sort the price array from the cuurent candle downwards ArraySetAsSeries(MiddleBandArray,true); ArraySetAsSeries(UpperBandArray,true); ArraySetAsSeries(LowerBandArray,true); //define Bollinger Bands int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE); //copy price info into the array CopyBuffer(BollingerBands,0,0,3,MiddleBandArray); CopyBuffer(BollingerBands,1,0,3,UpperBandArray); CopyBuffer(BollingerBands,2,0,3,LowerBandArray); //calcualte EA for the cuurent candle double MiddleBandValue=MiddleBandArray[0]; double UpperBandValue=UpperBandArray[0]; double LowerBandValue=LowerBandArray[0]; //giving sell signal when price < MA if ( (Bid>=UpperBandArray[0]) ) { Comment("SELL"); } //check if we have a take profit signal if ( (Ask<=LowerBandArray[0]) ) { Comment("TAKE PROFIT"); } } //+------------------------------------------------------------------+以下は、このストラテジーによって生成されるシグナルのスクリーンショットです。
- コードにエラーや警告がないことを確認
- ファイルを検索する
- チャートに添付するファイルをドラッグアンドドロップまたはダブルクリックしてコードを実行する
終わりに
変動幅の概念は、次の動きが現在の動きを利用して利益を得るという明確な期待を与えてくれる、非常に優れたものです。ボリンジャーバンドのような変動幅手法はたくさんあり、価格の動きに応じて拡大および縮小されすべての市場の状況やトレンドで使用できる、優れたツールまたは方法です。
前に述べたように、この記事では、ボリンジャーバンド指標の概念と、それを計算して理解を深める方法を共有しようとしました。次に、ボリンジャーバンド指標による簡単な取引ストラテジーについて説明し、これらの単純なストラテジーのための簡単な取引システムを設計する方法を学びました。
これで、自分の取引スタイルに適した独自のストラテジーを開発または設計することができます。この記事があなたとあなたの取引に役立つことを願っています。
参照資料
- ジョン・ボリンジャー「ボリンジャーバンドのボリンジャー」
- https://www.bollingerbands.com/about-us
- https://www.investopedia.com/trading/using-bollinger-bands-to-gauge-trends
- https://school.stockcharts.com/doku.php?id=technical_indicators:bollinger_bands
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/3039





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