I am trying to make a Indicator based on the strategy which i shared on this platform here : https://www.earnforex.com/forum/thr...-reversal-strategy-with-an-80-win-rate.51781/
My Indicator doing great job by creating Arrows and Vertical line for Signal when matching the conditions but the problem is it not showing RSI, Bollinger Bands and MA in Chart.
Currently it showing like this :

I want like this :

My Code :
My Indicator doing great job by creating Arrows and Vertical line for Signal when matching the conditions but the problem is it not showing RSI, Bollinger Bands and MA in Chart.
Currently it showing like this :

I want like this :

My Code :
MQL4:
//+------------------------------------------------------------------+ //| Custom Indicator based on RSI, Moving Average, and Bollinger Bands | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Lime // Green UP Arrow for Buy Signal #property indicator_color2 Red // Red DOWN Arrow for Sell Signal // Indicator Buffers double BuySignal[]; double SellSignal[]; // Input Parameters extern string __RSI_Indicator__ = "***RSI Indicator Settings***"; extern ENUM_APPLIED_PRICE RSI_AppliedPrice = PRICE_CLOSE; extern int RSI_Period = 14; extern int RSI_UpLevel = 80; extern int RSI_BelowLevel = 20; extern string __BollingerBands_Indicator__ = "***Bollinger Bands Indicator Settings***"; extern ENUM_APPLIED_PRICE BollingerBands_AppliedPrice = PRICE_CLOSE; extern int BollingerBands_Period = 20; extern double BollingerBands_deviation = 2.0; extern int BollingerBands_BandShift = 0; extern string __MovingAverage_Indicator__ = "***Moving Average Indicator Settings***"; extern ENUM_MA_METHOD MovingAverage_Method = MODE_EMA; extern ENUM_APPLIED_PRICE MovingAverage_AppliedPrice = PRICE_CLOSE; extern int MovingAverage_Period = 200; extern int MovingAverage_MAShift = 0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0, BuySignal); SetIndexBuffer(1, SellSignal); SetIndexStyle(0, DRAW_ARROW, 2, 2); SetIndexStyle(1, DRAW_ARROW, 2, 2); SetIndexArrow(0, 233); // Green Up Arrow SetIndexArrow(1, 234); // Red Down Arrow return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if (rates_total < BollingerBands_Period || rates_total < RSI_Period || rates_total < MovingAverage_Period) return 0; for (int i = prev_calculated; i < rates_total - 1; i++) { double rsi = iRSI(NULL, 0, RSI_Period, RSI_AppliedPrice, i); double ma = iMA(NULL, 0, MovingAverage_Period, MovingAverage_MAShift, MovingAverage_Method, MovingAverage_AppliedPrice, i); double bbUpper = iBands(NULL, 0, BollingerBands_Period, BollingerBands_deviation, BollingerBands_BandShift, BollingerBands_AppliedPrice, MODE_UPPER, i); double bbLower = iBands(NULL, 0, BollingerBands_Period, BollingerBands_deviation, BollingerBands_BandShift, BollingerBands_AppliedPrice, MODE_LOWER, i); double ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK); double bid = SymbolInfoDouble(Symbol(), SYMBOL_BID); // Sell Condition if (rsi > RSI_UpLevel && bid > bbUpper && ask < ma) { SellSignal[i] = high[i] + Point * 20; ObjectCreate(0, "SellLine" + IntegerToString(i), OBJ_VLINE, 0, time[i], 0); ObjectSetInteger(0, "SellLine" + IntegerToString(i), OBJPROP_COLOR, Red); } else { SellSignal[i] = EMPTY_VALUE; } // Buy Condition if (rsi < RSI_BelowLevel && ask < bbLower && bid > ma) { BuySignal[i] = low[i] - Point * 20; // Place Green Arrow below candle low ObjectCreate(0, "BuyLine" + IntegerToString(i), OBJ_VLINE, 0, time[i], 0); ObjectSetInteger(0, "BuyLine" + IntegerToString(i), OBJPROP_COLOR, Lime); } else { BuySignal[i] = EMPTY_VALUE; } } return rates_total; }