TimeTradeServer аналог для МТ4 - страница 4

 

Тут правильно подметили, нужно знать серверное время в выходные. Потому что серверное время останавливается и выдает всегда пятницу.
Нужен способ определить, выходные дни для копировщиков без использования dll 

В МТ5 идеально работает TimeTradeServer добавили бы ее в мт4 и это разом бы решило проблемы с анализом времени. 

 
Alexandr Gavrilin:

Тут правильно подметили, нужно знать серверное время в выходные. Потому что серверное время останавливается и выдает всегда пятницу.
Нужен способ определить, выходные дни для копировщиков без использования dll 

В МТ5 идеально работает TimeTradeServer добавили бы ее в мт4 и это разом бы решило проблемы с анализом времени. 

Как функция OrderSend() наткнулась на ошибку "рынок закрыт" (есть какая-то такая), прекращаем все попытки торговых операций и ждем изменения цены, что будет означать, что рынок открылся.

 
Dmitry Fedoseev:

Как функция OrderSend() наткнулась на ошибку "рынок закрыт" (есть какая-то такая), прекращаем все попытки торговых операций и ждем изменения цены, что будет означать, что рынок открылся.

а "как не наткнулась", то вся история забита отложками)

 
fxsaber:

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

Идея основана на том, чтобы найти последнюю минуту котировок по наиболее распространенному символу (в данном случае EURUSD) и по ней вроде как вычислить смещение серверного времени от GMT. Но здесь столько "если", что, к сожалению, на решение проблемы не тянет.

Проверил на Alpari, не работает:


 
Ihor Herasko:

Проверил на Alpari, не работает:

Так будут данные для воспроизведения?

 
fxsaber:

Так будут данные для воспроизведения?

Я привел рисунок. Может его не видно?

 
Taras Slobodyanik:

а "как не наткнулась", то вся история забита отложками)

А поподробней можно?

 
Ihor Herasko:

Я привел рисунок.

Как по рисунку воспроизвести?

 
Ihor Herasko:

Идея основана на том, чтобы найти последнюю минуту котировок по наиболее распространенному символу (в данном случае EURUSD) и по ней вроде как вычислить смещение серверного времени от GMT. Но здесь столько "если", что, к сожалению, на решение проблемы не тянет.

Проверил на Alpari, не работает:


надо искать не последюю (23:59) минутку на EURUSD, а ночь на золоте. Золото торгуется строго по амстердаму, валюты по времени сервера. Отсюда найти GMT смещение сервера
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql4, тонкости и приёмы работы

Ivan Titov, 2019.08.12 16:19

Хотите сказать, что если у не форекс-символов история будет доступна, то работать не будет?

Также вот пример для форекса на Alpari-Demo EURUSD,H1 в тестере:

Для 2019.02.19 14:00:00 возвращает 2019.02.19 11:00:00

Для 2019.06.19 14:00:00-возвращает 2019.06.19 11:00:00

Хотя зимой должно быть GMT+2, а летом GMT+3 (EET).

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
int TimeServerGMTOffset( const bool SummerTime = false )
{
  const datetime Sunday = GetTimeDayOfWeek();
  
  return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - SummerTime - 2) * HOUR);
}

Такое изменение внести и будет пахать. Определение лета и зимы не делал, кто-нибудь справится.