Как правильно выяснить, что рынок закрыт? (mql4) - страница 5

 

Я так и не выяснил как из "DayOfWeek" получить адекватную информацию. Она выдаёт верное значение в день запуска робота и в каких-то случаях ещё (иногда). Как мне показалось при открытии ордеров. Если ничего не открывать, то выдавать будет погоду.

Я решил вопрос так:

...
int realDay=DayOfWeek();
int curHour=TimeHour(TimeLocal());
   while(!IsStopped())
      {
      if (TimeHour(TimeLocal())<curHour) realDay++; 
      curHour=TimeHour(TimeLocal());
      if (realDay==7) realDay=0;        
...     

 Но ещё не проверял ))) должно работать

 
winsight:

Я так и не выяснил как из "DayOfWeek" получить адекватную информацию. Она выдаёт верное значение в день запуска робота и в каких-то случаях ещё (иногда). Как мне показалось при открытии ордеров. Если ничего не открывать, то выдавать будет погоду.

Я решил вопрос так:

 Но ещё не проверял ))) должно работать

Проще - используйте TimeDayOfWeek:

int dayOfWeek = TimeDayOfWeek(TimeCurrent());
 
Ihor Herasko:
Так Вы получите только состояние разрешения торгов по инструменту. Если инструмент торгуемый, то в любой день недели получите по нему true.

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));

false

 
Vasyl Nosal:

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));

false

Моя версия такова:

   Alert("Trade allowed by MarketInfo: ", bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));
   Alert("Trade allowed by IsTradeAllowed: ", bool(IsTradeAllowed()));
   Alert("Trade allowed by IsTradeAllowed 2-nd version: ", bool(IsTradeAllowed(Symbol(), TimeLocal())));

Результат:

2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by MarketInfo: true

На моем компьютере время GMT+2. 

Поэтому непонятно, как Вам удалось получить по первому варианту false. Возможно, Вы взяли инструмент, который не торгуется в принципе.

Выводы получаем такие:

  1. Первый и второй варианты индентичны по сути. Они указывают только на тот факт, что автоторговля по инструменту разрешена и свободен торговый поток .
  2. Третий вариант - это как раз то, что нужно. Он дает возможность узнать разрешение на торговлю по инструменту с учетом его рабочего расписания.
 
Ihor Herasko:

Моя версия такова:

Результат:

На моем компьютере время GMT+2. 

Поэтому непонятно, как Вам удалось получить по первому варианту false. Возможно, Вы взяли инструмент, который не торгуется в принципе.

Выводы получаем такие:

  1. Первый и второй варианты индентичны по сути. Они указывают только на тот факт, что автоторговля по инструменту разрешена и свободен торговый поток .
  2. Третий вариант - это как раз то, что нужно. Он дает возможность узнать разрешение на торговлю по инструменту с учетом его рабочего расписания.
EURUSD fxOpen
 
Vasyl Nosal:
EURUSD fxOpen

Действительно, у этого брокера результат работы скрипта, приведенного выше, такой:

2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by MarketInfo: false

Стал проверять других брокеров. Брокер G**X:

2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by MarketInfo: true

Брокер A***i:

2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by MarketInfo: true

Брокер I***a F***x:

2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by MarketInfo: false

Первый мой тест сегодня был на A*****l M*****s.

Таким образом,  получаем, что далеко не у всех брокеров правильно работает IsTradeAllowed (первая версия) и MODE_TRADEALLOWED. А вот вторая версия IsTradeAllowed работает везде корректно. Значит лучше всего именно ею и пользоваться.

 
Ihor Herasko:

Действительно, у этого брокера результат работы скрипта, приведенного выше, такой:

Стал проверять других брокеров. Брокер G**X:

Брокер A***i:

Брокер I***a F***x:

Первый мой тест сегодня был на A*****l M*****s.

Таким образом,  получаем, что далеко не у всех брокеров правильно работает IsTradeAllowed (первая версия) и MODE_TRADEALLOWED. А вот вторая версия IsTradeAllowed работает везде корректно. Значит лучше всего именно ею и пользоваться.

А сегодня 

 IsTradeAllowed(Symbol(), TimeCurrent())

показывает тру

 

Кстати почему у вас Локальное время

 
Vasyl Nosal:

А сегодня 

 IsTradeAllowed(Symbol(), TimeCurrent())

показывает тру

 

Кстати почему у вас Локальное время? 

Сегодня праздничный выходной поэтому и тру.
 
Alexey Busygin:
Сегодня праздничный выходной поэтому и тру.
Факт в том что ни одна функция по узнаванию не работает на 100%.
 
Vasyl Nosal:
Факт в том что ни одна функция по узнаванию не работает на 100%.
В некоторых случая, ответ должен исходить, от сервера ДЦ! А ДЦ об этом не очень то заботятся. по этому и работает все кое как.