//+------------------------------------------------------------------+ //| MeuRenkoIndicator.mq5 | //| Copyright 2023, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 input int RenkoBlockSize = 10; //--- buffers double RenkoUpBuffer[]; double RenkoDownBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0, RenkoUpBuffer, INDICATOR_DATA); SetIndexBuffer(1, RenkoDownBuffer, INDICATOR_DATA); 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[]) { int start = prev_calculated; int limit = rates_total - 1; if (start < 0) start = 0; if (limit <= 0) return 0; ArraySetAsSeries(RenkoUpBuffer, true); ArraySetAsSeries(RenkoDownBuffer, true); double boxSize = RenkoBlockSize * Point(); // Corrigir o ponto e vĂ­rgula aqui for (int i = start; i <= limit; i++) { double prevClose = i == 0 ? open[i] : close[i - 1]; double brickValue = MathAbs(close[i] - prevClose); if (brickValue >= boxSize) { int bricks = (int)(brickValue / boxSize); double brickDirection = close[i] > prevClose ? 1.0 : -1.0; for (int j = 0; j < bricks; j++) { if (brickDirection == 1.0) { RenkoUpBuffer[i + j] = prevClose + (j + 1) * boxSize; RenkoDownBuffer[i + j] = EMPTY_VALUE; } else { RenkoDownBuffer[i + j] = prevClose - (j + 1) * boxSize; RenkoUpBuffer[i + j] = EMPTY_VALUE; } } } else { RenkoUpBuffer[i] = EMPTY_VALUE; RenkoDownBuffer[i] = EMPTY_VALUE; } } return(rates_total); } //+------------------------------------------------------------------+