//| taopaindiline.mq4 |
//| Copyright (c) 2012, taopai FX |
//| http://ameblo.jp/taopaipai-fx/ |
//+------------------------------------------------------------------+
#property copyright "Copyright (c) 2011, taopai FX"
#property link "http://ameblo.jp/taopaipai-fx/ "
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 DarkGray
#property indicator_color2 DarkGray
#property indicator_color3 DarkGray
#property indicator_color4 DarkGray
#property indicator_color5 DarkGray
#property indicator_color6 DarkGray
#property indicator_color7 DarkGray
#property indicator_color8 DarkGray
//指標バッファ
double BufMA[];
double BufUpper1[];
double BufLower1[];
double BufUpper2[];
double BufLower2[];
double BufUpper3[];
double BufLower3[];
//パラメーター 【基準0.5/1.2/1.8】
extern int BandsPeriod = 200;
extern double BandsDeviations1 = 0.5;
extern double BandsDeviations2 = 1.2;
extern double BandsDeviations3 = 1.8;
//+------------------------------------------------------------------+
//| 初期化関数 |
//+------------------------------------------------------------------+
int init()
{
//指標バッファの割り当て
SetIndexBuffer(0,BufMA);
SetIndexBuffer(1,BufUpper1);
SetIndexBuffer(2,BufLower1);
SetIndexBuffer(3,BufUpper2);
SetIndexBuffer(4,BufLower2);
SetIndexBuffer(5,BufUpper3);
SetIndexBuffer(6,BufLower3);
//指標ラベルの設定
SetIndexLabel(0, "SMA("+BandsPeriod+")");
SetIndexLabel(1, "Upper("+DoubleToStr(BandsDeviations1,1)+")");
SetIndexLabel(1, "Lower("+DoubleToStr(BandsDeviations1,1)+")");
SetIndexLabel(2, "Upper("+DoubleToStr(BandsDeviations2,2)+")");
SetIndexLabel(2, "Lower("+DoubleToStr(BandsDeviations2,2)+")");
SetIndexLabel(3, "Upper("+DoubleToStr(BandsDeviations3,3)+")");
SetIndexLabel(3, "Lower("+DoubleToStr(BandsDeviations3,3)+")");
return(0);
}
//+------------------------------------------------------------------+
//| 指標処理関数 |
//+------------------------------------------------------------------+
int start()
{
int limit = Bars-IndicatorCounted();
if(limit == Bars) limit -= BandsPeriod-1;
for(int i=limit-1; i>=0; i--)
{
BufMA[i] = iMA(NULL,0,BandsPeriod,0,MODE_SMA,PRICE_CLOSE,i); //平均
double sum=0.0;
for(int k=0; k
double newres = Close[i+k]-BufMA[i]; //終値と平均の差
sum += newres*newres; //newresの2乗和
}
double deviation = MathSqrt(sum/BandsPeriod); //標準偏差の計算
BufUpper1[i] = BufMA[i]+BandsDeviations1*deviation; //上のライン
BufLower1[i] = BufMA[i]-BandsDeviations1*deviation; //下のライン
BufUpper2[i] = BufMA[i]+BandsDeviations2*deviation;
BufLower2[i] = BufMA[i]-BandsDeviations2*deviation;
BufUpper3[i] = BufMA[i]+BandsDeviations3*deviation;
BufLower3[i] = BufMA[i]-BandsDeviations3*deviation;
} return(0);
}
//+------------------------------------------------------------------+

