//+------------------------------------------------------------------+ //| AOchartbars.mq4 | //| masemus | //| Gresik_JawaTimur_Indonesia | //+------------------------------------------------------------------+ #property copyright "masemus" #property link "Gresik_JawaTimur_Indonesia" #property indicator_chart_window //**************************************** //---- input parameters extern int FastMA = 5; extern int SlowMA = 34; extern int MA_Mode = MODE_SMA; extern int MA_PriceType = PRICE_MEDIAN; extern bool indicatorName = true; extern int BBperiode = 10; extern double StDv = 1; extern color Spread_clr = Aqua; extern color xCandle_clr = LimeGreen; extern color upBUY_clr = Blue; extern color dnSELL_clr = Red; extern color flatEXIT_clr = Silver; extern int Mywindow = 0; extern int Mycorner = 3; string ObjectID = "AOdb_"; double myPoint; //---- buffers double Bar1[], Bar2[], Bar3[], Bar4[], Bar5[], Bar6[]; //**************************************** //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(6); //---- AO SetIndexBuffer(0,Bar1); SetIndexBuffer(1,Bar2); SetIndexBuffer(2,Bar3); SetIndexBuffer(3,Bar4); SetIndexBuffer(4,Bar5); SetIndexBuffer(5,Bar6); myPoint = GetPoint(Symbol()); return(0); } //+------------------------------------------------------------------+ double MACD (int tf, int i = 0) {return(iMA(NULL,tf,FastMA,0,MA_Mode,MA_PriceType,i) -iMA(NULL,0,SlowMA,0,MA_Mode,MA_PriceType,i));} //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- // ObjectsDeleteAll(0,OBJ_LABEL); // ObjectsDeleteAll(Mywindow,OBJ_LABEL); delete_objects(); // Only delete objects created by this indicator //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i; int limit; limit = MathMax(Bars-1-IndicatorCounted(),1); //---- if(indicatorName){ DisplayObject("AOcbars_00", 1, "AO_BB_DashBoard", 8, "Trebuchet MS", Gray, 9, 9); } //***************************************************************************************************** // Try using Bar4 as a working buffer before setting candle colors for( i = limit; i>=0; i--) { Bar1[i] = MACD(1,i); } double avg_M1 = iMAOnArray(Bar1,0,BBperiode,0,MA_Mode,0); double sDev_M1 = iStdDevOnArray(Bar1,0,BBperiode,0,MA_Mode,0); double S_cM1 = Bar1[0]; double S_pM1 = Bar1[1]; for( i = limit; i>=0; i--) { Bar2[i] = MACD(5,i); } double avg_M5 = iMAOnArray(Bar2,0,BBperiode,0,MA_Mode,0); double sDev_M5 = iStdDevOnArray(Bar2,0,BBperiode,0,MA_Mode,0); double S_cM5 = Bar2[0]; double S_pM5 = Bar2[1]; for( i = limit; i>=0; i--) { Bar3[i] = MACD(15,i); } double avg_M15 = iMAOnArray(Bar3,0,BBperiode,0,MA_Mode,0); double sDev_M15 = iStdDevOnArray(Bar3,0,BBperiode,0,MA_Mode,0); double S_cM15 = Bar3[0]; double S_pM15 = Bar3[1]; for( i = limit; i>=0; i--) { Bar4[i] = MACD(30,i); } double avg_M30 = iMAOnArray(Bar4,0,BBperiode,0,MA_Mode,0); double sDev_M30 = iStdDevOnArray(Bar4,0,BBperiode,0,MA_Mode,0); double S_cM30 = Bar4[0]; double S_pM30 = Bar4[1]; for( i = limit; i>=0; i--) { Bar5[i] = MACD(60,i); } double S_cH1 = Bar5[0]; double S_pH1 = Bar5[1]; double avg_H1 = iMAOnArray(Bar5,0,BBperiode,0,MA_Mode,0); double sDev_H1 = iStdDevOnArray(Bar5,0,BBperiode,0,MA_Mode,0); for( i = limit; i>=0; i--) { Bar6[i] = MACD(240,i); } double S_cH4 = Bar6[0]; double S_pH4 = Bar6[1]; double avg_H4 = iMAOnArray(Bar6,0,BBperiode,0,MA_Mode,0); double sDev_H4 = iStdDevOnArray(Bar6,0,BBperiode,0,MA_Mode,0); string S_m1 = "", S_m5 = "", S_m15 = "", S_m30 = "", S_h1 = "", S_h4 = "", T_m1 = "", T_m5 = "", T_m15 = "", T_m30 = "", T_h1 = "", T_h4 = "", V_m1 = "", V_m5 = "", V_m15 = "", V_m30 = "", V_h1 = "", V_h4 = "", upBB_m1 = "", upBB_m5 = "", upBB_m15 = "", upBB_m30 = "", upBB_h1 = "", upBB_h4 = "", loBB_m1 = "", loBB_m5 = "", loBB_m15 = "", loBB_m30 = "", loBB_h1 = "", loBB_h4 = "", midBB_m1 = "", midBB_m5 = "", midBB_m15 = "", midBB_m30 = "", midBB_h1 = "", midBB_h4 = "", BS_m1 = "", BS_m5 = "", BS_m15 = "", BS_m30 = "", BS_h1 = "", BS_h4 = ""; color Sclr_m1, Sclr_m5, Sclr_m15, Sclr_m30, Sclr_h1, Sclr_h4, Tclr_m1, Tclr_m5, Tclr_m15, Tclr_m30, Tclr_h1, Tclr_h4, BSclr_m1, BSclr_m5, BSclr_m15, BSclr_m30, BSclr_h1, BSclr_h4; V_m1 = DoubleToStr(S_cM1,Digits+1); V_m5 = DoubleToStr(S_cM5,Digits+1); V_m15 = DoubleToStr(S_cM15,Digits+1); V_m30 = DoubleToStr(S_cM30,Digits+1); V_h1 = DoubleToStr(S_cH1,Digits+1); V_h4 = DoubleToStr(S_cH4,Digits+1); upBB_m1 = DoubleToStr((avg_M1 + (StDv * sDev_M1)), Digits+1); // Upperband upBB_m5 = DoubleToStr((avg_M5 + (StDv * sDev_M5)), Digits+1); // Upperband upBB_m15 = DoubleToStr((avg_M15 + (StDv * sDev_M15)), Digits+1); // Upperband upBB_m30 = DoubleToStr((avg_M30 + (StDv * sDev_M30)), Digits+1); // Upperband upBB_h1 = DoubleToStr((avg_H1 + (StDv * sDev_H1)), Digits+1); // Upperband upBB_h4 = DoubleToStr((avg_H4 + (StDv * sDev_H4)), Digits+1); // Upperband loBB_m1 = DoubleToStr((avg_M1 - (StDv * sDev_M1)), Digits+1); // Lowerband loBB_m5 = DoubleToStr((avg_M5 - (StDv * sDev_M5)), Digits+1); // Lowerband loBB_m15 = DoubleToStr((avg_M15 - (StDv * sDev_M15)), Digits+1); // Lowerband loBB_m30 = DoubleToStr((avg_M30 - (StDv * sDev_M30)), Digits+1); // Lowerband loBB_h1 = DoubleToStr((avg_H1 - (StDv * sDev_H1)), Digits+1); // Lowerband loBB_h4 = DoubleToStr((avg_H4 - (StDv * sDev_H4)), Digits+1); // Lowerband midBB_m1 = DoubleToStr(avg_M1, Digits+1) ; // Midleband midBB_m5 = DoubleToStr(avg_M5, Digits+1) ; // Midleband midBB_m15 = DoubleToStr(avg_M15, Digits+1) ; // Midleband midBB_m30 = DoubleToStr(avg_M30, Digits+1) ; // Midleband midBB_h1 = DoubleToStr(avg_H1, Digits+1) ; // Midleband midBB_h4 = DoubleToStr(avg_H4, Digits+1) ; // Midleband if (S_cM1 < S_pM1) { S_m1 = "n"; Sclr_m1 = dnSELL_clr; } if (S_cM1 > S_pM1) { S_m1 = "n"; Sclr_m1 = upBUY_clr; } if (S_cM1 == S_pM1) { S_m1 = "g"; Sclr_m1 = flatEXIT_clr; } if (S_cM1 < 0) { T_m1 = "6"; Tclr_m1 = dnSELL_clr; } if (S_cM1 > 0) { T_m1 = "5"; Tclr_m1 = upBUY_clr; } if (S_cM1 == 0) { T_m1 = "="; Tclr_m1 = flatEXIT_clr; } if (S_cM5 < S_pM5) { S_m5 = "n"; Sclr_m5 = dnSELL_clr; } if (S_cM5 > S_pM5) { S_m5 = "n"; Sclr_m5 = upBUY_clr; } if (S_cM5 == S_pM5) { S_m5 = "g"; Sclr_m5 = flatEXIT_clr; } if (S_cM5 < 0) { T_m5 = "6"; Tclr_m5 = dnSELL_clr; } if (S_cM5 > 0) { T_m5 = "5"; Tclr_m5 = upBUY_clr; } if (S_cM5 == 0) { T_m5 = "="; Tclr_m5 = flatEXIT_clr; } if (S_cM15 < S_pM15) { S_m15 = "n"; Sclr_m15 = dnSELL_clr; } if (S_cM15 > S_pM15) { S_m15 = "n"; Sclr_m15 = upBUY_clr; } if (S_cM15 == S_pM15) { S_m15 = "g"; Sclr_m15 = flatEXIT_clr; } if (S_cM15 < 0) { T_m15 = "6"; Tclr_m15 = dnSELL_clr; } if (S_cM15 > 0) { T_m15 = "5"; Tclr_m15 = upBUY_clr; } if (S_cM15 == 0) { T_m15 = "="; Tclr_m15 = flatEXIT_clr; } if (S_cM30 < S_pM30) { S_m30 = "n"; Sclr_m30 = dnSELL_clr; } if (S_cM30 > S_pM30) { S_m30 = "n"; Sclr_m30 = upBUY_clr; } if (S_cM30 == S_pM30) { S_m30 = "g"; Sclr_m30 = flatEXIT_clr; } if (S_cM30 < 0) { T_m30 = "6"; Tclr_m30 = dnSELL_clr; } if (S_cM30 > 0) { T_m30 = "5"; Tclr_m30 = upBUY_clr; } if (S_cM30 == 0) { T_m30 = "="; Tclr_m30 = flatEXIT_clr; } if (S_cH1 < S_pH1) { S_h1 = "n"; Sclr_h1 = dnSELL_clr; } if (S_cH1 > S_pH1) { S_h1 = "n"; Sclr_h1 = upBUY_clr; } if (S_cH1 == S_pH1) { S_h1 = "g"; Sclr_h1 = flatEXIT_clr; } if (S_cH1 < 0) { T_h1 = "6"; Tclr_h1 = dnSELL_clr; } if (S_cH1 > 0) { T_h1 = "5"; Tclr_h1 = upBUY_clr; } if (S_cH1 == 0) { T_h1 = "="; Tclr_h1 = flatEXIT_clr; } if (S_cH4 < S_pH4) { S_h4 = "n"; Sclr_h4 = dnSELL_clr; } if (S_cH4 > S_pH4) { S_h4 = "n"; Sclr_h4 = upBUY_clr; } if (S_cH4 == S_pH4) { S_h4 = "g"; Sclr_h4 = flatEXIT_clr; } if (S_cH4 < 0) { T_h4 = "6"; Tclr_h4 = dnSELL_clr; } if (S_cH4 > 0) { T_h4 = "5"; Tclr_h4 = upBUY_clr; } if (S_cH4 == 0) { T_h4 = "="; Tclr_h4 = flatEXIT_clr; } if ((S_cM1 < S_pM1)&&(V_m1 < loBB_m1)) { BS_m1 = "LowerBB"; BSclr_m1 = dnSELL_clr; } if ((S_cM1 > S_pM1)&&(V_m1 > upBB_m1)) { BS_m1 = "UpperBB"; BSclr_m1 = upBUY_clr; } if ((S_cM5 < S_pM5)&&(V_m5 < loBB_m5)) { BS_m5 = "LowerBB"; BSclr_m5 = dnSELL_clr; } if ((S_cM5 > S_pM5)&&(V_m5 > upBB_m5)) { BS_m5 = "UpperBB"; BSclr_m5 = upBUY_clr; } if ((S_cM15 < S_pM15)&&(V_m15 < loBB_m15)) { BS_m15 = "LowerBB"; BSclr_m15 = dnSELL_clr; } if ((S_cM15 > S_pM15)&&(V_m15 > upBB_m15)) { BS_m15 = "UpperBB"; BSclr_m15 = upBUY_clr; } if ((S_cM30 < S_pM30)&&(V_m30 < loBB_m30)) { BS_m30 = "LowerBB"; BSclr_m30 = dnSELL_clr; } if ((S_cM30 > S_pM30)&&(V_m30 > upBB_m30)) { BS_m30 = "UpperBB"; BSclr_m30 = upBUY_clr; } if ((S_cH1 < S_pH1)&&(V_h1 < loBB_h1)) { BS_h1 = "LowerBB"; BSclr_h1 = dnSELL_clr; } if ((S_cH1 > S_pH1)&&(V_h1 > upBB_h1)) { BS_h1 = "UpperBB"; BSclr_h1 = upBUY_clr; } if ((S_cH4 < S_pH4)&&(V_h4 < midBB_h4)) { BS_h4 = "LowerBB"; BSclr_h4 = dnSELL_clr; } if ((S_cH4 > S_pH4)&&(V_h4 > midBB_h4)) { BS_h4 = "UpperBB"; BSclr_h4 = upBUY_clr; } //***************************************************************************************************** string Teks="", Teks_Menit, Teks_Detik; double d_A, d_B; //Time for Next Candle d_B = (Time[4]-Time[5])-MathMod(CurTime(),Time[4]-Time[5]); d_A = d_B/60; d_B = (d_A-MathFloor(d_A))*60; d_A = MathFloor(d_A); Teks_Menit = DoubleToStr(d_A,0); Teks_Detik = DoubleToStr(d_B,0); Teks=Teks_Menit+":"+Teks_Detik; //Price double Price1 = iMA(Symbol(),0,1,0,MODE_EMA,PRICE_CLOSE,0); Teks=DoubleToStr(Price1,Digits); string HI="",LO="",SPREAD="",PIPS="",HILO="",Pips=""; color color_pip,color_av; double Open_Today = iOpen(NULL,1440,0); double CLOSE = iClose(NULL,1440,0); double SPRD = (Ask - Bid)/myPoint; double High_Today = iHigh(NULL,1440,0); double Low_Today = iLow(NULL,1440,0); PIPS = DoubleToStr((CLOSE-Open_Today)/myPoint,0); SPREAD = (DoubleToStr(SPRD,Digits-5)); HILO = DoubleToStr((High_Today-Low_Today)/myPoint,0); HI = (DoubleToStr(High_Today,Digits)); LO = (DoubleToStr(Low_Today,Digits)); //***************************************************************************************************** DisplayObject("AOcbars_01", Mycorner, Symbol(), 12, "Arial", Tclr_m15, 9, 135); DisplayObject("AOcbars_02", Mycorner,""+Teks+"", 18, "Arial Narrow", Sclr_m15, 40, 107); DisplayObject("AOcbars_03", Mycorner,""+SPREAD+"", 9, "Arial Bold", Spread_clr, 9, 110); DisplayObject("AOcbars_04", Mycorner,""+PIPS+"", 9, "Arial Bold", Sclr_h1, 40, 97); DisplayObject("AOcbars_05", Mycorner,""+HILO+"", 9, "Arial Bold", Tclr_h1, 9, 97); DisplayObject("AOcbars_06", Mycorner, Teks_Menit+":"+Teks_Detik, 9, "Arial Bold", xCandle_clr, 75, 97); DisplayObject("AOcbars_07", Mycorner, "-------------------------", 9, "Trebuchet MS", Gold, 9, 82); DisplayObject("AOcbars_08", Mycorner, T_m1, 16, "Webdings",Tclr_m1, 87, 15); DisplayObject("AOcbars_09", Mycorner, T_m5, 16, "Webdings",Tclr_m5, 87, 25); DisplayObject("AOcbars_10", Mycorner, T_m15, 16, "Webdings",Tclr_m15, 87, 35); DisplayObject("AOcbars_11", Mycorner, T_m30, 16, "Webdings",Tclr_m30, 87, 45); DisplayObject("AOcbars_12", Mycorner, T_h1, 16, "Webdings",Tclr_h1, 87, 55); DisplayObject("AOcbars_13", Mycorner, T_h4, 16, "Webdings",Tclr_h4, 87, 65); DisplayObject("AOcbars_14", Mycorner, S_m1, 5, "Webdings",Sclr_m1, 80, 23); DisplayObject("AOcbars_15", Mycorner, S_m5, 5, "Webdings",Sclr_m5, 80, 33); DisplayObject("AOcbars_16", Mycorner, S_m15, 5, "Webdings",Sclr_m15, 80, 43); DisplayObject("AOcbars_17", Mycorner, S_m30, 5, "Webdings",Sclr_m30, 80, 53); DisplayObject("AOcbars_18", Mycorner, S_h1, 5, "Webdings",Sclr_h1, 80, 63); DisplayObject("AOcbars_19", Mycorner, S_h4, 5, "Webdings",Sclr_h4, 80, 73); DisplayObject("AOcbars_20", Mycorner, "M1", 8, "Arial",flatEXIT_clr, 55, 20); DisplayObject("AOcbars_21", Mycorner, "M5", 8, "Arial",flatEXIT_clr, 55, 30); DisplayObject("AOcbars_22", Mycorner, "M15", 8, "Arial",flatEXIT_clr, 55, 40); DisplayObject("AOcbars_23", Mycorner, "M30", 8, "Arial",flatEXIT_clr, 55, 50); DisplayObject("AOcbars_24", Mycorner, "H1", 8, "Arial",flatEXIT_clr, 55, 60); DisplayObject("AOcbars_25", Mycorner, "H4", 8, "Arial",flatEXIT_clr, 55, 70); DisplayObject("AOcbars_26", Mycorner, BS_m1, 8, "Arial",BSclr_m1, 9, 20); DisplayObject("AOcbars_27", Mycorner, BS_m5, 8, "Arial",BSclr_m5, 9, 30); DisplayObject("AOcbars_28", Mycorner, BS_m15, 8, "Arial",BSclr_m15, 9, 40); DisplayObject("AOcbars_29", Mycorner, BS_m30, 8, "Arial",BSclr_m30, 9, 50); DisplayObject("AOcbars_30", Mycorner, BS_h1, 8, "Arial",BSclr_h1, 9, 60); DisplayObject("AOcbars_31", Mycorner,BS_h4, 8, "Arial",BSclr_h4, 9, 70); DisplayObject("AOcbars_32", Mycorner, "-------------------------", 9, "Trebuchet MS", Gold, 9, 5); //---- done return(0); } void DisplayObject(string mObject, int corner, string msg, int FontSize, string FontName, color mColor, int x_position, int y_position) { string myObject = ObjectID + mObject; if (ObjectFind( myObject) == -1 ){ ObjectCreate( myObject, OBJ_LABEL, Mywindow, 0, 0); } ObjectSet(myObject, OBJPROP_CORNER, corner); ObjectSet( myObject, OBJPROP_XDISTANCE, x_position); ObjectSet( myObject, OBJPROP_YDISTANCE, y_position); ObjectSetText( myObject,msg, FontSize,FontName,mColor); } void delete_objects() { int i, tot; string object_name; tot = ObjectsTotal(); for (i = tot; i>=0;i--) { object_name = ObjectName(i); if (StringFind(object_name, ObjectID) > -1 ) ObjectDelete(object_name); } } double GetPoint(string sym) { double _Point; int _Digits = MarketInfo(sym, MODE_DIGITS); if(_Digits < 4) _Point = 0.01; else _Point = 0.0001; return (_Point); } //+------------------------------------------------------------------+