Download MetaTrader 5

Watch how to download trading robots for free

Interesting script?
So post a link to it -
let others appraise it

You liked the script? Try it in the MetaTrader 5 terminal

2013.10.25 10:21

iBarShift - library for MetaTrader 5

| English Русский 中文 Español Deutsch 日本語 Português

votes: 41
ibarshift.mqh (3.24 KB)view

There are a lot of users who searched for iBarShift function like in MQL4.

But this function is not included in MQL5, mainly because MQL5 provides all necessary basic, low-level, functions to process such operation in a library.

As an alternative, several programmers provided their MQL5 version. I found 4 different versions from circlesquares, komposter (from Codebase), dc2008 (from famous article Migrating from mql4 to mql5) or marketeer (Russian forum).

What I discovered, remarkably, is that all four versions are bugged, in the sense they don't reproduce exactly the MQL4 iBarShift(). Indeed, when the datetime given as input parameter, don't match with the opening of a candle, all versions return a wrong value.

So I decided to make some tests about accuracy and speed of these various functions, and of course to develop my version. You can find attached both the library with this new version, and a little script used to benchmark the functions.

Results of the iBarShift benchmark for the 5 versions.

As a side note, iBarShift() isn't always the best way to realize some task in MQL5. Depending of your algorithm, there can be better method.

Edit: 2014.10.03. Version 1.02 posted (fixed a bug if requested time is superior to last bar start time).

Price_Channel_Trend Price_Channel_Trend

Trend indicator, based on crossover of pivot level and its median.

ChandeQStick ChandeQStick

The QStick indicator is a simple n-period moving average of the price difference.

Any Pair Stochastic Any Pair Stochastic

This indicator is useful for correlation analysis and also for cross pair analysis.

Donchian Channel Donchian Channel

Donchian Channel is a volatility indicator based on the calculation of the current price range with the recent highest and lowest prices.