Download MetaTrader 5

Bar position over multiple time frames

To add comments, please log in or register
aqz
10
aqz  

Hi guys, I've been searching the forum and trying to pull apart scripts on the web. Documentation has only gotten me so far. I'm trying to get the current and previous position of M15, then zooming out to see what bar it resides inside of H1 and H4.

Live trading I believe this will either be 0 or 1, but for back testing the result will vary. 

Could someone help me understand a couple of things:

//+----------------------------------------------------------------------------------------------------------------------------+
//| 1.  The following script does a close job, but it's a little janky. M1 and M5 don't seem to be correct 

//+----------------------------------------------------------------------------------------------------------------------------+  

datetime some_time=D'2017.02.17 16:00';     // Hardcoded datetime
datetime server_time=TimeCurrent();            // Server Time
datetime local_time=TimeLocal();                 // Local Machine Time
datetime NewTime = server_time - 960;        // Server Time Minus 16 Minutes

// The following seems to be nearly correct
  int      shift_m1=iBarShift(Symbol(),PERIOD_M1, NewTime);
  int      shift_m15=iBarShift(Symbol(),PERIOD_M15, NewTime);
  int      shift_h1=iBarShift(Symbol(),PERIOD_H1, NewTime);
  int      shift_h4=iBarShift(Symbol(),PERIOD_H4, NewTime);

// Output: 

AUDUSD,M15: H4 Current Candle Position = 0 Candle 1 = 1 Candle 2 = 2 @ 2017.02.23 10:34:23
AUDUSD,M15: H1 Current Candle Position = 0 Candle 1 = 1 Candle 2 = 2 @ 2017.02.23 10:34:23
AUDUSD,M15: M15 Current Candle Position = 1 Candle 1 = 2 Candle 2 = 3 @ 2017.02.23 10:34:23
AUDUSD,M15: M5 Current Candle Position = 2 Candle 1 = 3 Candle 2 = 4 @ 2017.02.23 10:34:23
AUDUSD,M15: M1 Current Candle Position = 10 Candle 1 = 11 Candle 2 = 12 @ 2017.02.23 10:34:23

//+---------------------------------------------------------------------------------------------------------------+
//| 2. Would it be better (possible) to try and build an array that blocked the day into brackets? 
//+---------------------------------------------------------------------------------------------------------------+ 

ie.

H4   x 6   = 24H
H1   x 24 = 24H
M15 x 96 = 24H

Then so how checking if the candle resided in the previous bracket. I'm just ad lib-ing here. It's just an idea and I haven't quite got the construct down, but it's the only other way I can think of testing it.

 Any suggestions would be appreciated.

 Thank you, 

honest_knave
Moderator
2326
honest_knave  
aqz:

Hi guys, I've been searching the forum and trying to pull apart scripts on the web. Documentation has only gotten me so far. I'm trying to get the current and previous position of M15, then zooming out to see what bar it resides inside of H1 and H4.

Live trading I believe this will either be 0 or 1, but for back testing the result will vary. 

The results will be the same live or backtesting:

  • The current M15 bar will always be within the current H1 / H4 bars.
  • The previous M15 bar may be within the current or the previous H1 / H4 bar.

datetime some_time=D'2017.02.17 16:00';     // Hardcoded datetime
datetime server_time=TimeCurrent();            // Server Time
datetime local_time=TimeLocal();                 // Local Machine Time
datetime NewTime = server_time - 960;        // Server Time Minus 16 Minutes

// The following seems to be nearly correct
  int      shift_m1=iBarShift(Symbol(),PERIOD_M1, NewTime);
  int      shift_m15=iBarShift(Symbol(),PERIOD_M15, NewTime);
  int      shift_h1=iBarShift(Symbol(),PERIOD_H1, NewTime);
  int      shift_h4=iBarShift(Symbol(),PERIOD_H4, NewTime);

Subtracting 16 minutes from TimeCurrent() isn't a good option.

To get the current M15 bar's opening time, use:

datetime M15_time = iTime(_Symbol, PERIOD_M15, 0);

To get the previous M15 bar's opening time, use:

datetime M15_time = iTime(_Symbol, PERIOD_M15, 1);

-------

Please use the SRC button when you post your code - I've modified your post. 

aqz
10
aqz  

Thanks so much for your help. That makes a lot more sense to set the time before trying to find the bar.

 Will be sure to use the SRC button next time, sorry, first post.

 Thanks again. 

honest_knave
Moderator
2326
honest_knave  
aqz:

Thanks so much for your help. That makes a lot more sense to set the time before trying to find the bar.

 Will be sure to use the SRC button next time, sorry, first post.

 Thanks again. 

To add comments, please log in or register