_Period not work in MQL5
Hello friends
It seems new version of MQL5 have problem to get the value of Period, I have tried both " Period() , _Period " But the out come is wrong
I write this simple code, and change time frame to check the result, But the out come is Wrong !!!
I use MQL5 version 3030
That's right, there are no mistakes. ENUM_TIMEFRAMES is an enumeration.
Example:
//+------------------------------------------------------------------+ //| ENUM_TIMEFRAMES.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.002" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- ENUM_TIMEFRAMES timeframes_array[22]= { PERIOD_CURRENT, PERIOD_M1,PERIOD_M2,PERIOD_M3, PERIOD_M4,PERIOD_M5,PERIOD_M6, PERIOD_M10,PERIOD_M12,PERIOD_M15, PERIOD_M20,PERIOD_M30,PERIOD_H1, PERIOD_H2,PERIOD_H3,PERIOD_H4, PERIOD_H6,PERIOD_H8,PERIOD_H12, PERIOD_D1,PERIOD_W1,PERIOD_MN1 }; string descriptions_array[22]= { "Current timeframe", "1 minute","2 minutes","3 minutes", "4 minutes","5 minutes","6 minutes", "10 minutes","12 minutes","15 minutes", "20 minutes","30 minutes","1 hour", "2 hours","3 hours","4 hours", "6 hours","8 hours","12 hours", "1 day","1 week","1 month" }; int size=ArraySize(timeframes_array); for(int i=0; i<size; i++) Print(i,": \"",EnumToString(timeframes_array[i]),"\" '",timeframes_array[i],"' \"",descriptions_array[i],"\""); } //+------------------------------------------------------------------+
Thanks Vladimir.
Period () shows exactly the current timeframe. There are no digits '1', '2' ... instead there are ENTRY ITEMS: 'PERIOD_M1', 'PERIOD_M2', 'PERIOD_M3' ...
Read the help: ENUM_TIMEFRAMES enumeration
ENUM_TIMEFRAMES
| ID | Description |
| PERIOD_CURRENT | Current timeframe |
| PERIOD_M1 | 1 minute |
| PERIOD_M2 | 2 minutes |
| PERIOD_M3 | 3 minutes |
| PERIOD_M4 | 4 minutes |
| PERIOD_M5 | 5 minutes |
| PERIOD_M6 | 6 minutes |
| PERIOD_M10 | 10 minutes |
| PERIOD_M12 | 12 minutes |
| PERIOD_M15 | 15 minutes |
| PERIOD_M20 | 20 minutes |
| PERIOD_M30 | 30 minutes |
| PERIOD_H1 | 1 hour |
| PERIOD_H2 | 2 hours |
| PERIOD_H3 | 3 hours |
| PERIOD_H4 | 4 hours |
| PERIOD_H6 | 6 hours |
| PERIOD_H8 | 8 hours |
| PERIOD_H12 | 12 hours |
| PERIOD_D1 | 1 day |
| PERIOD_W1 | 1 week |
| PERIOD_MN1 | 1 month |
- www.mql5.com
- Seyed Hadi Ghoreishimedyseh #: But I want to get current chart Time frame value . The only way is Period(). But it do not show correct result. how can I get Current chart Time frame value ?
ENUM_TIMEFRAMES tf = ENUM_TIMEFRAMES(_Period);
- Seyed Hadi Ghoreishimedyseh: But the out come is wrongIt does not “come out wrong.” It is not a “wrong value.” It is an enumeration; its value is irrelevant. Its value is not in minutes; use PeriodSeconds(tf)/60 if you want that.
Thanks Vladimir.
Just create your own function like:
int eTF2minTF( const ENUM_TIMEFRAMES tf ) { switch(tf) { case PERIOD_CURRENT: return(0); case PERIOD_M1: return(1); case PERIOD_M2: return(2); case PERIOD_M3: return(3); case PERIOD_M4: return(4); case PERIOD_M5: return(5); case PERIOD_M6: return(6); case PERIOD_M10: return(10); case PERIOD_M12: return(12); case PERIOD_M15: return(15); case PERIOD_M20: return(20); case PERIOD_M30: return(30); case PERIOD_H1: return(60); case PERIOD_H2: return(120); case PERIOD_H3: return(180); case PERIOD_H4: return(240); case PERIOD_H6: return(360); case PERIOD_H8: return(480); case PERIOD_H12: return(720); case PERIOD_D1: return(1440); case PERIOD_W1: return(10080); case PERIOD_MN1: return(43200); } return(-1); } int min = eTF2minTF(_Period);
Sir,
is it possible to use higher TF for calculating in a specific timeframe?
for example : use M15 data on M1 TF.
Something Like This :
input ENUM_TIMEFRAMES tf1 = 15; // Time Frame (15) ENUM_TIMEFRAMES(_Period) = tf1;
Thnaks
Hello friends
It seems new version of MQL5 have problem to get the value of Period, I have tried both " Period() , _Period " But the out come is wrong
I write this simple code, and change time frame to check the result, But the out come is Wrong !!!
I use MQL5 version 3030