объяснить
MQL4 использует TimeLocal(); TimeCurrent(), которые основаны на тике за тиком даже iTime.....
Что я действительно хочу, так это иметь возможность отображать на моем графике часы реального времени, которые будут обновляться каждую секунду, возможно, используя часы моего компьютера или удаленного сервера.
TimeCurrent() не основана на тиках.
Но функция запуска основана на тиках. Вы можете использовать бесконечный цикл в комбинации с sleep. Здесь на mql4.com опубликована статья с описанием преимуществ и решений.
Поскольку весь mt4 основан на тиках, мне не нравится реализовывать логику, чувствительную ко времени. В прошлом я объединил эти два варианта в своих индикаторах пользовательского таймфрейма. Это простая работа, но вы можете получить представление. Если вы хотите, чтобы часы обновлялись каждую секунду, то моя работа для вас бесполезна. https://www.mql5.com/en/code/10080
//z
Идея заключается в том, чтобы заставить часы обновляться каждую секунду, а не просто вызывать функции в Start() вашей программы, т.е.
if(TimeCurrent()>(t+TimeInSeconds))
Из вашего объяснения следует, что я могу использовать цикл while в функции init(), а затем, когда я вызову его в функции start(), это все равно будет тик за тиком!
zzuegg; это будет бесконечный цикл и ограничит индикатор metatrader выполнением одной вещи... подсчета.
Поэтому если вы решите использовать функцию sleep в сочетании с TimeCurrenet, вызываемой из функции добавления секунды каждые Sleep(1000), эта программа не сможет делать ничего другого.
Она будет только считать...., поэтому вы ограничите себя одной функцией.
и да, metatrader не любит бесконечные циклы; он рушится, как я испытал сейчас lol он должен иметь перерыв где-то :)
Вы не ограничены одной функцией. Вы можете делать все, что хотите, внутри цикла. Вам может понадобиться несколько пересчетов, чтобы гарантировать время выполнения 1 сек. но в целом это работает.
Я никогда не делал этого с индикаторами, но в советниках это работает.
Другой вариант - использовать внешнюю программу для отправки фальшивых тиков на терминал с интервалом в 1 секунду. Этим вы гарантируете, что функция start будет вызываться хотя бы раз в секунду. В сочетании с моим кодом из Custom Timeframe Candles вы должны получить результат.
while( !(IsTesting() || IsStopped()) ){ updateWatch(); RefreshRates(); if (...) doTrading(); Sleep(1000); }
Используйте MQL5
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Насколько я понимаю, функция Start() работает тик за тиком.
Есть ли способ использовать данные из компьютерных часов в реальном времени и обновлять их каждую секунду? Не тик за тиком, а каждую секунду?
Если да, пожалуйста, помогите мне.
спасибо