目次
作成したもの
ボリンジャーバンド(Bollinger Band)の上下のバンドの傾きを把握したいために作成したインジケーターです。
上下のバンドは、赤色、青色、白色の3色で塗分けています。
中央の線(平均移動線)は、赤色、青色の2色で塗分けています。
※MT4が1度に使える色の数が8つまでという縛りがあるためです。
正の傾きで赤くなります。
負の傾きで青くなります。
上下のバンドに関しては、一定以上の傾きがない場合は白色にしています。
色の変わるロジックは以下のサイトを参考に作成しました。
https://fai-fx.hatenadiary.org/entry/20100721/1279644067
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 White #property indicator_color2 DeepSkyBlue #property indicator_color3 Red #property indicator_color4 White #property indicator_color5 DeepSkyBlue #property indicator_color6 Red #property indicator_color7 DeepSkyBlue #property indicator_color8 Red #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 #property indicator_width4 2 #property indicator_width5 2 #property indicator_width6 2 #property indicator_width7 2 #property indicator_width8 2 // 指標バッファ double BufUpperUp[]; double BufUpperDown[]; double BufUpperMain[]; double BufLowerUp[]; double BufLowerDown[]; double BufLowerMain[]; double BufMiddleUp[]; double BufMiddleDown[]; // 外部パラメータ extern int BandsPeriod=21; extern int BandsDeviation=2; extern ENUM_APPLIED_PRICE applied_price=PRICE_OPEN; extern double limitSlope=5.0; // 初期化関数 int init() { // 指標バッファの割り当て SetIndexBuffer(0,BufUpperMain); SetIndexBuffer(1,BufUpperUp); SetIndexBuffer(2,BufUpperDown); SetIndexBuffer(3,BufLowerMain); SetIndexBuffer(4,BufLowerUp); SetIndexBuffer(5,BufLowerDown); SetIndexBuffer(6,BufMiddleUp); SetIndexBuffer(7,BufMiddleDown); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE); SetIndexStyle(3,DRAW_LINE); SetIndexStyle(4,DRAW_LINE); SetIndexStyle(5,DRAW_LINE); SetIndexStyle(6,DRAW_LINE); SetIndexStyle(7,DRAW_LINE); return(0); } // スタート関数 int start() { int limit=Bars-IndicatorCounted(); for(int i=limit-1; i>=0; i--) { double upperBandSlope=(iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_UPPER,i) -iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_UPPER,i+1))/Point; double lowerBandSlope=(iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_LOWER,i) -iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_LOWER,i+1))/Point; double middleBandSlope=(iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_MAIN,i) -iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_MAIN,i+1))/Point; BufUpperMain[i]=iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_UPPER,i); BufLowerMain[i]=iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_LOWER,i); double BufMiddleMain=iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_MAIN,i); double BufMiddleMain_Before=iBands(NULL,0,BandsPeriod,BandsDeviation,0,applied_price,MODE_MAIN,i+1); if(upperBandSlope>=limitSlope) { BufUpperUp[i]=BufUpperMain[i]; BufUpperDown[i]=EMPTY_VALUE; } else if(upperBandSlope<=-limitSlope) { BufUpperUp[i]=EMPTY_VALUE; BufUpperDown[i]=BufUpperMain[i]; } else { BufUpperUp[i]=EMPTY_VALUE; BufUpperDown[i]=EMPTY_VALUE; } if(lowerBandSlope>=limitSlope) { BufLowerUp[i]=BufLowerMain[i]; BufLowerDown[i]=EMPTY_VALUE; } else if(lowerBandSlope<=-limitSlope) { BufLowerUp[i]=EMPTY_VALUE; BufLowerDown[i]=BufLowerMain[i]; } else { BufLowerUp[i]=EMPTY_VALUE; BufLowerDown[i]=EMPTY_VALUE; } if(middleBandSlope>=0) { BufMiddleUp[i]=BufMiddleMain; BufMiddleDown[i]=EMPTY_VALUE; } else { BufMiddleUp[i]=EMPTY_VALUE; BufMiddleDown[i]=BufMiddleMain; } // 下記2行は補間のため。 if(BufMiddleUp[i]!=EMPTY_VALUE && BufMiddleUp[i+1]==EMPTY_VALUE) BufMiddleUp[i+1]=BufMiddleMain_Before; if(BufMiddleDown[i]!=EMPTY_VALUE && BufMiddleDown[i+1]==EMPTY_VALUE) BufMiddleDown[i+1]=BufMiddleMain_Before; } return(0); } //+------------------------------------------------------------------+ |
使用想定
上下のバンドの傾きの色が変われば、現在の状況を視覚的にとらえやすくなります。
(1) トレンドの開始
【上のバンドの傾きが正、下のバンド傾きが負の場合】
上下のバンドが広がっている場合(エクスパンション状態)、新たなトレンドが形成されます。
特に、ボリンジャーバンドの2σラインにタッチして、バンドウォークする際に、バンドが広がります。
(2) トレンドの持続
【上下のバンドの傾きが共に正または負の場合】
上下のバンドの傾きが共に正であれば、上昇トレンドです。
逆に、上下のバンドの傾きが共に負であれば、下降トレンドです。
(3) トレンドの終結
【上のバンドの傾きが負。下のバンド傾きが正の場合】
上下のバンドが閉じている場合、トレンドが終わる兆候となります。
特に、2σラインのバンドウォークが終わり、平均移動線に戻る際に、バンドは収束します。
バンドが閉じた後は、以下の3パターンのどれかになります。
(a)レンジ
(b)今までとは逆方向にトレンドが形成される
(c)今までと同じ方向にトレンドが再度形成される
※(c)の場合、「トレンドの終結」というよりは「一時的な戻り」と解釈されます。
(4) レンジ
【上下のバンドの傾きが共に平らな場合】
上下のバンド幅が変わらない場合、レンジの状態となります。
ボラティリティ(Volatility)が小さい状態であることが多いです。
いつか、レンジが終わり、トレンドが開始します。
バンドの状況をまとめると、以下のような表になります。
下のバンド(↓)\上のバンド(→) | 上昇 | 変化なし | 下降 |
上昇 | 上昇トレンド | (弱い)収縮 | 収縮 |
変化なし | (弱い)膨張 | レンジ | (弱い)収縮 |
下降 | 膨張 | (弱い)膨張 | 下降トレンド |
開発経緯
自分が初めて買った情報商材で紹介されている手法は、ボリンジャーバンドを使用していたので、自分なりに状況を把握できるように作成しました。
ちなみに、自分が初めて買った情報商材は、ビクトリーメソッドと呼ばれる商材です(以下にリンク張っておきます)。
あなたがFXで一番知りたかったこと。先進FXビクトリーメソッド【アドバンス】完全版
~FXを始めてみませんか?~
XMは、口座を開設するだけで、3000円のボーナスが無料でもらえます。
資金はないけど、FXを試しに挑戦してみたい方でも大丈夫です。
(サイト主もXMを使用しています)