forked from airat77786/MQL5Book
48 lines
2 KiB
MQL5
48 lines
2 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| Periods.mqh |
| |||
//| Copyright (c) 2021, Marketeer |
| |||
//| https://www.mql5.com/en/users/marketeer |
| |||
//+------------------------------------------------------------------+
| |||
| |||
#define PERIOD_PREFIX_LENGTH 7 // StringLen("PERIOD_")
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Convert timeframe to short name (without "PERIOD_" prefix) |
| |||
//+------------------------------------------------------------------+
| |||
string PeriodToString(const ENUM_TIMEFRAMES tf = PERIOD_CURRENT)
| |||
{
| |||
return StringSubstr(EnumToString(tf == PERIOD_CURRENT ? _Period : tf),
| |||
PERIOD_PREFIX_LENGTH);
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Convert a name of timeframe to its value as ENUM_TIMEFRAMES |
| |||
//| Both full form (as PERIOD_H4) and short form (H4) are supported |
| |||
//+------------------------------------------------------------------+
| |||
ENUM_TIMEFRAMES StringToPeriod(string name)
| |||
{
| |||
if(StringLen(name) < 2) return 0;
| |||
// if a full name is specified "PERIOD_TN", convert it to short form "TN"
| |||
if(StringLen(name) > PERIOD_PREFIX_LENGTH)
| |||
{
| |||
name = StringSubstr(name, PERIOD_PREFIX_LENGTH);
| |||
}
| |||
// convert trailing part of name with digits ("N") to number, skip "T"
| |||
const int count = (int)StringToInteger(StringSubstr(name, 1));
| |||
// clear possible error WRONG_STRING_PARAMETER(5040) from StringToInteger
| |||
ResetLastError();
| |||
switch(name[0])
| |||
{
| |||
case 'M':
| |||
if(!count) return PERIOD_MN1;
| |||
return (ENUM_TIMEFRAMES)count;
| |||
case 'H':
| |||
return (ENUM_TIMEFRAMES)(0x4000 + count);
| |||
case 'D':
| |||
return PERIOD_D1;
| |||
case 'W':
| |||
return PERIOD_W1;
| |||
}
| |||
return 0;
| |||
}
| |||
//+------------------------------------------------------------------+
|