Как выключить таймер когда рынок закрыт? - страница 2

 
Edgar:

Я изучил старую ветку того обсуждения. Там народ старался придумать совершенный и универсальный способ определения закрытия рынка, совершенно не заботясь эффективностью и экономией. А ведь это предлагается делать на каждом тике!

Я замерил - один только вызов IsTradeAllowed(_Symbol, time) в 2.5 раза дольше, чем вычисление, что сейчас N часов субботы. Стандартное расписание мы знаем, а исключения (праздники) мы заметим по ошибке "market closed" и установим флаг. Этот флаг сбросим в OnTick().

Это не работает.

 

Что именно не работает? И у кого? Не хочу тянуть за язык. Но у меня описанная стратегия работает давно. Со времён, когда пришлось очень ужиматься в рамки недорогого и ограниченного в ресурсах VPS.

На нагрузку на VPS это, конечно, прямого влияния не оказывает, но занимать слабые ресурсы в выходные жалко.

 
Edgar:

Что именно не работает? И у кого? Не хочу тянуть за язык. Но у меня описанная стратегия работает давно. Со времён, когда пришлось очень ужиматься в рамки недорогого и ограниченного в ресурсах VPS.

На нагрузку на VPS это, конечно, прямого влияния не оказывает, но занимать слабые ресурсы в выходные жалко.

Вот:

Вторая форма вызова возвращает информацию о возможности торговли для заданного символа в указанное время.

bool  IsTradeAllowed(
  const string symbol       // символ
  datetime     tested_time  // время
   );

Хотя да, в вашем случае нужны только выходные, так что она вам подойдёт, но если нужно узнать в будние дни, то она не работает

 
Наверное, я плохо объясняю (да, я не разжёвываю). Но я как раз против использования IsTradeAllowed и др. (что предлагалось в старом обсуждении), потому что обращения к терминалу, а тем более к серверу - дорогая операция.
 
Edgar:
Наверное, я плохо объясняю (да, я не разжёвываю). Но я как раз против использования IsTradeAllowed и др. (что предлагалось в старом обсуждении), потому что обращения к терминалу, а тем более к серверу - дорогая операция.

А разве нельзя ее допустим запускать периодически и узнать будет ли разрешена торговля через час/сутки/неделю?
Ну можно посмотреть вот в сторону SymbolInfoSessionTrade

 

Зачем? Заложите в эксперт знание, что рынок открыт (к примеру, для большинства символов форекса) с понедельника с 0X:00 до субботы 0Y:00 (в зависимости от летнего/зимнего времени и брокера). Для простоты можно взять с запасом в час, чтобы не учитывать эти моменты. Ну, проработает он лишний час...

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

 
Vitaly Muzichenko:

Универсальных решений нет и это все знают, даже разработчики.

Это как один из вариантов:


Да ладно... Давно уже придумали как выкрутиться

https://www.mql5.com/ru/forum/5831/page6#comment_6531956

Как узнать, что по выходным нет торговли?
Как узнать, что по выходным нет торговли?
  • 2013.02.11
  • www.mql5.com
Пытаюсь дать понять советнику, что по выходным дням торговать не нужно :).
 
Edgar:

Зачем? Заложите в эксперт знание, что рынок открыт (к примеру, для большинства символов форекса) с понедельника с 0X:00 до субботы 0Y:00 (в зависимости от летнего/зимнего времени и брокера). Для простоты можно взять с запасом в час, чтобы не учитывать эти моменты. Ну, проработает он лишний час...

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

Иногда это критично, и даже 5 минут критично. Нет свойства узнать, что рынок закрыт 1,5,10 и тд. минут назад

Это самое оптимальное:

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

Как выключить таймер когда рынок закрыт?

Taras Slobodyanik, 2019.01.23 15:50

а как узнать что рынок закрылся?)
насколько помню в МТ4 нет универсального решения чтобы определять закрыт или открыт рынок.

пс. когда-то делал синхронизацию времени (локального и серверного), и если тиков нет больше 30-60 сек, то считаем что рынок закрылся...

 
Renat Akhtyamov:
https://www.mql5.com/ru/forum/5831/page6#comment_6531956

Это очень дорогое решение, и оно не решает задачу, если рынок закрыт в связи с праздником, или другим событием, данные берутся со спецификации контрактов с "Обзора рынка"

 
Vitaly Muzichenko:

Это очень дорогое решение, и оно не решает задачу, если рынок закрыт в связи с праздником, или другим событием, данные берутся со спецификации контрактов с "Обзора рынка"

да бесплатно ;)

как раз все решает, пользуюсь уже давно

например, рубль не торгуется со стольки то до стольки то в отличии от остальных пар, так и будет по нему отказ в это время, причем автоматически

вот упёртый дядя, лишь бы обхаять

возьми да и попробуй сначала