ラベル ボリンジャーバンド の投稿を表示しています。 すべての投稿を表示
ラベル ボリンジャーバンド の投稿を表示しています。 すべての投稿を表示

2012年6月5日火曜日

FXのチャート分析ソフトMT4でボリンジャーバンドの1σ、2σ、3σを一度に表示するには

ボリンジャーバンドは、+1σと-1σの間で推移するのがおよそ68%、+2σと-2σの間で推移するのがおよそ95%、そして、+3σと-3σの間で推移するのがおよそ98%といわれています。

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)には、インディケーターとしてボリンジャーバンドが用意されています。


上の図は、チャート画面にボリンジャーバンドを描画したものです。

しかし、σ(シグマ)は1つしか設定できません。そこで、MT4に実装されているボリンジャーバンドのインディケーター(bands.mq4)を改良して1σ、2σ、3σを一度に表示できるようにしました。

次のプログラムを「bands123.mq4」のファイル名で保存します。保存先は、MT4のインストールされているフォルダの「experts」フォルダ内の「indicators」を指定します。

「bands123.mq4」
//+------------------------------------------------------------------+
//| bands123.mq4 |
//| sample |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "sample"
#property link "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 LightSeaGreen
#property indicator_color2 Blue
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_color6 Yellow
#property indicator_color7 Yellow
//---- indicator parameters
extern int BandsPeriod=20;
extern int BandsShift=0;
extern double BandsDeviations1=1.0;
extern double BandsDeviations2=2.0;
extern double BandsDeviations3=3.0;
//---- buffers
double MovingBuffer[];
double UpperBuffer1[];
double LowerBuffer1[];
double UpperBuffer2[];
double LowerBuffer2[];
double UpperBuffer3[];
double LowerBuffer3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MovingBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpperBuffer1);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LowerBuffer1);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,UpperBuffer2);
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4,LowerBuffer2);
SetIndexStyle(5,DRAW_LINE);
SetIndexBuffer(5,UpperBuffer3);
SetIndexStyle(6,DRAW_LINE);
SetIndexBuffer(6,LowerBuffer3);
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift);
SetIndexDrawBegin(1,BandsPeriod+BandsShift);
SetIndexDrawBegin(2,BandsPeriod+BandsShift);
SetIndexDrawBegin(3,BandsPeriod+BandsShift);
SetIndexDrawBegin(4,BandsPeriod+BandsShift);
SetIndexDrawBegin(5,BandsPeriod+BandsShift);
SetIndexDrawBegin(6,BandsPeriod+BandsShift);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Bollinger Bands |
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
double deviation;
double sum,oldval,newres;
//----
if(Bars<=BandsPeriod) return(0); //---- initial zero if(counted_bars<1) for(i=1;i<=BandsPeriod;i++) { MovingBuffer[Bars-i]=EMPTY_VALUE; UpperBuffer1[Bars-i]=EMPTY_VALUE; LowerBuffer1[Bars-i]=EMPTY_VALUE; UpperBuffer2[Bars-i]=EMPTY_VALUE; LowerBuffer2[Bars-i]=EMPTY_VALUE; UpperBuffer3[Bars-i]=EMPTY_VALUE; LowerBuffer3[Bars-i]=EMPTY_VALUE; } //---- int limit=Bars-counted_bars; if(counted_bars>0) limit++;
for(i=0; iBandsPeriod-1) i=Bars-counted_bars-1;
while(i>=0)
{
sum=0.0;
k=i+BandsPeriod-1;
oldval=MovingBuffer[i];
while(k>=i)
{
newres=Close[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations1*MathSqrt(sum/BandsPeriod);
UpperBuffer1[i]=oldval+deviation;
LowerBuffer1[i]=oldval-deviation;
deviation=BandsDeviations2*MathSqrt(sum/BandsPeriod);
UpperBuffer2[i]=oldval+deviation;
LowerBuffer2[i]=oldval-deviation;
deviation=BandsDeviations3*MathSqrt(sum/BandsPeriod);
UpperBuffer3[i]=oldval+deviation;
LowerBuffer3[i]=oldval-deviation;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+


上の図は、チャートにボリンジャーバンドの+1σ、-1σ、+2σ、-2σ、+3σ、-3σを描画したものです。なお、σの値や線の色、計算期間はパラメータにより変更できます。

2012年5月21日月曜日

FXのボリンジャーバンドとは

FX(外国為替証拠金取引)のボリンジャーバンド(略称、ボリバン)とは、現在の為替レートが高値圏にあるか安値圏にあるかを判断するためのテクニカル指標です。また、ボリンジャーバンドはトレンドの転換点を見つけることもできます。ボリンジャーバンドは、英語ではBollinger bandsといいます。

ボリンジャーバンドは移動平均線を応用したテクニカル指標です。

ボリンジャーバンドの計算方法は、まず、移動平均線の値を求めます。n日間の移動平均線の数値は、当日を含めた過去n日間の終値の平均値です。

次に、+1σ、-1σ、+2σ、-2σの値を求めます。σはシグマと呼びます。

+1σ・・・移動平均線の数値+標準偏差
-1σ・・・移動平均線の数値-標準偏差
+2σ・・・移動平均線の数値+標準偏差×2
-2σ・・・移動平均線の数値-標準偏差×2

標準偏差は、次の計算式で求めることができます。

a・・・(n日間の終値の2乗の合計)×n
b・・・n日間の終値の合計の2乗
c・・・n×(n-1)
標準偏差・・・((a-b)÷c)の平方根

▼ボリンジャーバンドの見方

下のチャートは、為替レートのチャートにボリンジャーバンドを描画したものです。5本の線は、上から+2σ、+1σ、移動平均線、-1σ、-2σです。


ローソク足が+1σと+2σとの間を推移している時は上昇トレンドにあります。そして、+2σを超えた時は高値圏にあると判断し、売りポイントになります。チャート画面の黄色の丸で囲んだ部分です。

ローソク足が-1σと-2σとの間を推移している時は下降トレンドにあります。そして、-2σを超えた時は安値圏にあると判断し、買いポイントになります。チャート画面の緑色の丸で囲んだ部分です。

ちなみに、+1σと-1σとの間で推移する確率は約68%といわれています。また、+2σと-2σとの間で推移する確率は約95%といわれています。つまり、+2σ、-2σを超えて推移する確率はわずか5%しかありません。

▼ボリンジャーバンドの応用

ボリンジャーバンドでは、計算する期間の設定を変更できます。また、σを+3、-3などにも設定変更できます。値動きの大きい通貨ペアや、値動きの激しい時間帯には計算期間やσの値を設定変更してみるのもよいでしょう。