Часы реального времени MQL4 (секунда за секундой)

 

Насколько я понимаю, функция Start() работает тик за тиком.

Есть ли способ использовать данные из компьютерных часов в реальном времени и обновлять их каждую секунду? Не тик за тиком, а каждую секунду?

Если да, пожалуйста, помогите мне.

спасибо

 

объяснить

 

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(), это все равно будет тик за тиком!

 

вам понадобится что-то вроде этой функции запуска. Цикл будет выполняться при первом тике. после этого он будет тик независимым

while(true){
 updateWatch();
 Sleep(1000);
} 
 

zzuegg; это будет бесконечный цикл и ограничит индикатор metatrader выполнением одной вещи... подсчета.

Поэтому если вы решите использовать функцию sleep в сочетании с TimeCurrenet, вызываемой из функции добавления секунды каждые Sleep(1000), эта программа не сможет делать ничего другого.

Она будет только считать...., поэтому вы ограничите себя одной функцией.

 

и да, metatrader не любит бесконечные циклы; он рушится, как я испытал сейчас lol он должен иметь перерыв где-то :)

 

Вы не ограничены одной функцией. Вы можете делать все, что хотите, внутри цикла. Вам может понадобиться несколько пересчетов, чтобы гарантировать время выполнения 1 сек. но в целом это работает.

Я никогда не делал этого с индикаторами, но в советниках это работает.

Другой вариант - использовать внешнюю программу для отправки фальшивых тиков на терминал с интервалом в 1 секунду. Этим вы гарантируете, что функция start будет вызываться хотя бы раз в секунду. В сочетании с моим кодом из Custom Timeframe Candles вы должны получить результат.

 
while( !(IsTesting() || IsStopped()) ){
    updateWatch();
    RefreshRates();
    if (...)  doTrading();
    Sleep(1000);
} 


и да, metatrader не любит бесконечные циклы; он разбивается, как я испытал сейчас lol он должен иметь перерыв где-то :)
Нет бесконечных циклов в индикаторах. Для скриптов и советников это нормально, если вы сначала обновите внутренние компоненты (как в приведенном выше примере).
 

Используйте MQL5

Причина обращения: