как из iTime вернуть дату в формате 2017-*сегодня*-00:00 ???????
Так ведь все Вы правильно делаете. Если нужно время открытия найденного бара H4, то всего лишь:
iTime(Symbol(), PERIOD_H4, shift);
В данном случае оно будет совпадать со временем some_time. Если же нужно получить в текстовом виде, то:
TimeToString(iTime(Symbol(), PERIOD_H4, shift));
или напрямую:
Print(iTime(Symbol(), PERIOD_H4, shift));
Так ведь все Вы правильно делаете. Если нужно время открытия найденного бара H4, то всего лишь:
В данном случае оно будет совпадать со временем some_time. Если же нужно получить в текстовом виде, то:
или напрямую:
отбой похоже, все действительно правильно
я таймфрейм переключил, и не по той свече сверяюсь :)))))))))))
только почемуто ошибку 4066 возвращает, хотя данные верные дает в алерты
только почемуто ошибку 4066 возвращает, хотя данные верные дает в алерты
Перед тем как обращаться к таймфрейму, отличному от текущего, делаю так:
bool IsTFReady(ENUM_TIMEFRAMES eTF) { iTime(Symbol(), eTF, 1); return GetLastError() == ERR_NO_ERROR; } OnTick() { if (!IsTFReady(PERIOD...)) return; .... }
Перед тем как обращаться к таймфрейму, отличному от текущего, делаю так:
типа подергать другой таймфрейм на предмет его готовности?
а можете полность дать это кусок кода для проверки таймфрейма D1 из-под таймфрейма H4 ?
(стоим на рабочем Н4, пингуем D1)
я увы...невеликий программист...в институте...лет 20 назад ...программировал последний раз :))))
восстанавливаю забытые связи в мозгу между BEGIN и END :)))))
Можно конечно перейти на D1, потом обратно, и запускать скрипт :) тогда без 4066 обходится
типа подергать другой таймфрейм на предмет его готовности?
а можете полность дать это кусок кода для проверки таймфрейма D1 ?
ОК, допишу три литеры )))
bool IsTFReady(ENUM_TIMEFRAMES eTF) { iTime(Symbol(), eTF, 1); return GetLastError() == ERR_NO_ERROR; } OnTick() { if (!IsTFReady(PERIOD_D1)) return; .... }
Просто в МТ4, в отличие от МТ5, нет прямых способов для определения готовности данных другого ТФ. Вот и используется косвенный способ. Хотя, правды ради, те средства, которые есть в МТ5, тоже не всегда срабатывают и приходится костыли изобретать.
ОК, допишу три литеры )))
Просто в МТ4, в отличие от МТ5, нет прямых способов для определения готовности данных другого ТФ. Вот и используется косвенный способ. Хотя, правды ради, те средства, которые есть в МТ5, тоже не всегда срабатывают и приходится костыли изобретать.
ругается компилятор на OnTick
ругается компилятор на OnTick
Капец, да/нет?
Так тоже ругается?
void OnTick()
Подскажите бестолковому...
Как реализовать задачу получения iLow и iHigh первой на дню !! 4часовой !! свечи на текущей паревроде как так должно быть -
datetime some_time= iTime(NULL, PERIOD_D1, 0);
int shift=iBarShift(NULL,PERIOD_H4,some_time);
double LowLine= (iLow(0,PERIOD_H4,shift)-200*Point); // Нижняя линия = минимум -200ps
double HighLine=(iHigh(0,PERIOD_H4,shift)-200*Point); // Верхняя линия = максимум + 200pps
Первая должна возвратить ДАТУ-ВРЕМЯ начала сегодняшнего дня
Вторая - взять НОМЕР первого 4часового бара по этой дате
Но datetime возвращает не дату-время, а тоже номер бара....
как из iTime вернуть дату в формате 2017-*сегодня*-00:00 ???????
с одной стороны вроде работает, но учтите что так в понедельник some_time попадает на полночь суббота-вскр.
как вариант чтобы получить время начала текущего календарного дня, можно "datetime now=TimeCurrent(); some_time=now-TimeHour(now)*60*60-TimeMinute(now)*60-TimeSeconds(now);" а совсем корректно получить структуру MqlDateTime и крутить с ней: "MqlDateTime dt; datetime now=TimeCurrent(dt); dt.hour=dt.min=dt.sec=0; some_time=StructToTime(dt);"
без воид-а -
'OnTick' - declaration without type
с воидом еще хуже, все красно, особенно ругается на многоточие в конце :))) на каждую точку
void start() у меня правда есть далее по тексту
без воид-а -
'OnTick' - declaration without type
с воидом еще хуже, все красно, особенно ругается на многоточие в конце :))) на каждую точку
Вместо многоточия нужно вставить свой код)))
void start() у меня правда есть далее по тексту
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите бестолковому...
Как реализовать задачу получения iLow и iHigh первой на дню !! 4часовой !! свечи на текущей паревроде как так должно быть -
datetime some_time= iTime(NULL, PERIOD_D1, 0);
int shift=iBarShift(NULL,PERIOD_H4,some_time);
double LowLine= (iLow(0,PERIOD_H4,shift)-200*Point); // Нижняя линия = минимум -200ps
double HighLine=(iHigh(0,PERIOD_H4,shift)-200*Point); // Верхняя линия = максимум + 200pps
Первая должна возвратить ДАТУ-ВРЕМЯ начала сегодняшнего дня
Вторая - взять НОМЕР первого 4часового бара по этой дате
Но datetime возвращает не дату-время, а тоже номер бара....
как из iTime вернуть дату в формате 2017-*сегодня*-00:00 ???????