How to get access to the Open/High/Close/Low candles of Other Timeframes from Inside the OnCalculate() method of indicator
- They work fine.
On MT4: Unless the current chart is that specific symbol(s)/TF(s) referenced, you must handle 4066/4073 errors before accessing candle/indicator values.
Download history in MQL4 EA - Forex Calendar - MQL4 programming forum - Page 3 #26.4 2019.05.20On MT5: Unless the current chart is that specific pair/TF, you must synchronize the terminal Data from the Server before accessing candle/indicator values.
Error 4806 while using CopyBuffer() - Expert Advisors and Automated Trading - MQL5 programming forum #10 2020.12.15
Is it mystical?! It is! - Withdraw - Technical Indicators - MQL5 programming forum 2019.05.31
Timeseries and Indicators Access / Data Access - Reference on algorithmic/automated trading language for MetaTrader 5
Synchronize Server Data with Terminal Data - Symbols - General - MQL5 programming forum #2 2018.07.17
SymbolInfoInteger doesn't work - Symbols - General - MQL5 programming forum 2019.09.03
OnCalculate during weekend MT5 - General - MQL5 programming forum -
int OnInit() { OpenBuffer[0] = iOpen(NULL, inputTimeframe , 0); OpenBuffer[1] = iOpen(NULL, inputTimeframe , 1); OpenBuffer[2] = iOpen(NULL, inputTimeframe , 2); }
Don't try to use any price or server related functions in OnInit (or on load), as there may be no connection/chart yet:
- Terminal starts.
- Indicators/EAs are loaded. Static and globally declared variables are initialized. (Do not depend on a specific order.)
- OnInit is called.
- For indicators OnCalculate is called with any existing history.
- Human may have to enter password, connection to server begins.
- New history is received, OnCalculate called again.
- New tick is received, OnCalculate/OnTick is called. Now TickValue, TimeCurrent, account information and prices are valid.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Imagine the input timeframe for the indicator is PERIOD_H4 and indicator is placed on the M15 timeframe.
Inside the OnCalculate() I'd need to access the Open/High/Close/Low candles of the input timeframe which is H4 but apparently inside OnCalculate() we only have access to the current timeframe so the iOpen(), iClose(), iLow(), iHigh() of other timeframes don't work.
How can we access to buffer accessing these values from other timeframes and how to refresh/update the offer?