#property link "wiedstone@yahoo.com" #property indicator_chart_window #property indicator_buffers 5 #property indicator_color1 Yellow #property indicator_color2 Yellow #property indicator_color3 Yellow #property indicator_color4 DimGray #property indicator_color5 DimGray int periode = 20; extern int BandsShift = 0; extern double BandsDeviations = 1.0; extern int MA_Mode = MODE_SMA; extern int Applied_Price = PRICE_MEDIAN; double indexbuffer_0[]; double indexbuffer_1[]; double indexbuffer_2[]; double indexbuffer_3[]; double indexbuffer_4[]; int init() { SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1); SetIndexBuffer(0, indexbuffer_0); SetIndexStyle(1, DRAW_LINE, STYLE_DOT); SetIndexBuffer(1, indexbuffer_1); SetIndexStyle(2, DRAW_LINE, STYLE_DOT); SetIndexBuffer(2, indexbuffer_2); SetIndexStyle(3, DRAW_LINE, STYLE_DOT); SetIndexBuffer(3, indexbuffer_3); SetIndexStyle(4, DRAW_LINE, STYLE_DOT); SetIndexBuffer(4, indexbuffer_4); SetIndexDrawBegin(0, periode + BandsShift); SetIndexDrawBegin(1, periode + BandsShift); SetIndexDrawBegin(2, periode + BandsShift); SetIndexDrawBegin(3, periode + BandsShift); SetIndexDrawBegin(4, periode + BandsShift); getPeriod(); return (0); } int start() { int candle; double SD1; double SD2; double SD3; double poin; double angka_MA; double setelah_shift; int bar_hitung = IndicatorCounted(); if (Bars <= periode) return (0); if (bar_hitung < 1) { for (int geser = 1; geser <= periode; geser++) { indexbuffer_0[Bars - geser] = EMPTY_VALUE; indexbuffer_1[Bars - geser] = EMPTY_VALUE; indexbuffer_2[Bars - geser] = EMPTY_VALUE; } } int jml_bars = Bars - bar_hitung; if (bar_hitung > 0) jml_bars++; for (geser = 0; geser < jml_bars; geser++) indexbuffer_0[geser] = iMA(NULL, 0, periode, BandsShift, MA_Mode, Applied_Price, geser); geser = Bars - periode + 1; if (bar_hitung > periode - 1) geser = Bars - bar_hitung - 1; while (geser >= 0) { poin = 0.0; candle = geser + periode - 1; angka_MA = indexbuffer_0[geser]; while (candle >= geser) { setelah_shift = Close[candle] - angka_MA; poin += setelah_shift * setelah_shift; candle--; } SD1 = 1.0 * MathSqrt(poin / periode); SD2 = 2.0 * MathSqrt(poin / periode); SD3 = 3.0 * MathSqrt(poin / periode); indexbuffer_1[geser] = angka_MA + SD1; indexbuffer_2[geser] = angka_MA - SD1; indexbuffer_3[geser] = angka_MA + SD2; indexbuffer_4[geser] = angka_MA - SD2; geser--; } return (0); } void getPeriod() { switch (Period()) { case PERIOD_M1: periode = 480; return; case PERIOD_M5: periode = 96; return; case PERIOD_M15: periode = 32; return; case PERIOD_M30: periode = 16; return; case PERIOD_H1: periode = 8; return; case PERIOD_H4: periode = 2; return; case PERIOD_D1: periode = 0; return; case PERIOD_W1: periode = 0; return; case PERIOD_MN1: periode = 0; return; } }