Нужно в алерты вывести название периода.
Есть функция Period(), но она выводить период к количествах минут. А нужно название периода (М15).
Есть какое-то изящное решение, чтобы быстро преобразовать значение количества минут в название периода?
или только цикл свитч?
Есть функция автор KimIV.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает наименование таймфрейма | //+----------------------------------------------------------------------------+ //| Параметры: | //| TimeFrame - таймфрейм (количество секунд) (0 - текущий ТФ) | //+----------------------------------------------------------------------------+ string GetNameTF(int TimeFrame=0) { if (TimeFrame==0) TimeFrame=Period(); switch (TimeFrame) { case PERIOD_M1: return("M1"); case PERIOD_M5: return("M5"); case PERIOD_M15: return("M15"); case PERIOD_M30: return("M30"); case PERIOD_H1: return("H1"); case PERIOD_H4: return("H4"); case PERIOD_D1: return("Daily"); case PERIOD_W1: return("Weekly"); case PERIOD_MN1: return("Monthly"); default: return("Unknown Period"); } }
Есть функция автор KimIV.
спасибо.
все таки без свитча не обошлось.
все таки без свитча не обошлось.
void OnStart() { ENUM_TIMEFRAMES period[]={PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1}; for(int i=0;i<ArraySize(period);i++) printf("i = %d ( %s ) --> %s",i,EnumToString(period[i]),GetNameTF(period[i])); } //+------------------------------------------------------------------+ string GetNameTF(ENUM_TIMEFRAMES TimeFrame) { string res[]; if(StringSplit(EnumToString(TimeFrame),'_',res)!=2) return("Error"); return(res[1]); } //+------------------------------------------------------------------+
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 8 ( PERIOD_MN1 ) --> MN1
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 7 ( PERIOD_W1 ) --> W1
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 6 ( PERIOD_D1 ) --> D1
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 5 ( PERIOD_H4 ) --> H4
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 4 ( PERIOD_H1 ) --> H1
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 3 ( PERIOD_M30 ) --> M30
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 2 ( PERIOD_M15 ) --> M15
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 1 ( PERIOD_M5 ) --> M5
2019.08.06 09:12:33.022 tst EURUSD,H1: i = 0 ( PERIOD_M1 ) --> M1
спасибо.
все таки без свитча не обошлось.
StringSubstr(EnumToString(PERIOD_CURRENT),7);
StringSubstr(EnumToString(Period()),7)
StringSubstr(EnumToString(PERIOD_D1),7)
Надеюсь сможете из нескольких примеров понять как сделать нужное
StringSubstr(EnumToString((ENUM_TIMEFRAMES)Period()),7)
о, всё. нашли идеальное решение. )
'Period' - parameter for EnumToString must be an enumeration tst.mq4 29 36
спасибо.
все таки без свитча не обошлось.
Можно и без свитча, но будет дороже по времени исполнения:
ENUM_TIMEFRAMES eTF = PERIOD_M15; string sText = EnumToString(eTF); Print(StringSubstr(sText, StringFind(sText, "_") + 1));
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть функция Period(), но она выводить период к количествах минут. А нужно название периода (М15).
Есть какое-то изящное решение, чтобы быстро преобразовать значение количества минут в название периода?
или только цикл свитч?