Я так и не выяснил как из "DayOfWeek" получить адекватную информацию. Она выдаёт верное значение в день запуска робота и в каких-то случаях ещё (иногда). Как мне показалось при открытии ордеров. Если ничего не открывать, то выдавать будет погоду.
Я решил вопрос так:
...
int realDay=DayOfWeek();
int curHour=TimeHour(TimeLocal());
while(!IsStopped())
{
if (TimeHour(TimeLocal())<curHour) realDay++;
curHour=TimeHour(TimeLocal());
if (realDay==7) realDay=0;
...
Я так и не выяснил как из "DayOfWeek" получить адекватную информацию. Она выдаёт верное значение в день запуска робота и в каких-то случаях ещё (иногда). Как мне показалось при открытии ордеров. Если ничего не открывать, то выдавать будет погоду.
Ihor Herasko: Так Вы получите только состояние разрешения торгов по инструменту. Если инструмент торгуемый, то в любой день недели получите по нему true.
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.2016:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2016:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed: true2015.12.2016:41:21.196 Test EURUSD,H1: Alert: Trade allowed by MarketInfo: true
На моем компьютере время GMT+2.
Поэтому непонятно, как Вам удалось получить по первому варианту false. Возможно, Вы взяли инструмент, который не торгуется в принципе.
Выводы получаем такие:
Первый и второй варианты индентичны по сути. Они указывают только на тот факт, что автоторговля по инструменту разрешена и свободен торговый поток .
Третий вариант - это как раз то, что нужно. Он дает возможность узнать разрешение на торговлю по инструменту с учетом его рабочего расписания.
Действительно, у этого брокера результат работы скрипта, приведенного выше, такой:
2015.12.2017:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed: false2015.12.2017:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by MarketInfo: false
Стал проверять других брокеров. Брокер G**X:
2015.12.2017:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed: false2015.12.2017:18:14.339 Test EURUSD,M314: Alert: Trade allowed by MarketInfo: true
Брокер A***i:
2015.12.2017:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed: true2015.12.2017:20:40.372 Test EURUSD,M15: Alert: Trade allowed by MarketInfo: true
Брокер I***a F***x:
2015.12.2017:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed: false2015.12.2017:21:38.663 test GBPUSD,H1: Alert: Trade allowed by MarketInfo: false
Первый мой тест сегодня был на A*****l M*****s.
Таким образом, получаем, что далеко не у всех брокеров правильно работает IsTradeAllowed (первая версия) и MODE_TRADEALLOWED. А вот вторая версия IsTradeAllowed работает везде корректно. Значит лучше всего именно ею и пользоваться.
Действительно, у этого брокера результат работы скрипта, приведенного выше, такой:
Стал проверять других брокеров. Брокер G**X:
Брокер A***i:
Брокер I***a F***x:
Первый мой тест сегодня был на A*****l M*****s.
Таким образом, получаем, что далеко не у всех брокеров правильно работает IsTradeAllowed (первая версия) и MODE_TRADEALLOWED. А вот вторая версия IsTradeAllowed работает везде корректно. Значит лучше всего именно ею и пользоваться.
Я так и не выяснил как из "DayOfWeek" получить адекватную информацию. Она выдаёт верное значение в день запуска робота и в каких-то случаях ещё (иногда). Как мне показалось при открытии ордеров. Если ничего не открывать, то выдавать будет погоду.
Я решил вопрос так:
Но ещё не проверял ))) должно работать
Я так и не выяснил как из "DayOfWeek" получить адекватную информацию. Она выдаёт верное значение в день запуска робота и в каких-то случаях ещё (иногда). Как мне показалось при открытии ордеров. Если ничего не открывать, то выдавать будет погоду.
Я решил вопрос так:
Но ещё не проверял ))) должно работать
Проще - используйте TimeDayOfWeek:
Так Вы получите только состояние разрешения торгов по инструменту. Если инструмент торгуемый, то в любой день недели получите по нему true.
Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));
false
Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));
false
Моя версия такова:
Результат:
На моем компьютере время GMT+2.
Поэтому непонятно, как Вам удалось получить по первому варианту false. Возможно, Вы взяли инструмент, который не торгуется в принципе.
Выводы получаем такие:
Моя версия такова:
Результат:
На моем компьютере время GMT+2.
Поэтому непонятно, как Вам удалось получить по первому варианту false. Возможно, Вы взяли инструмент, который не торгуется в принципе.
Выводы получаем такие:
EURUSD fxOpen
Действительно, у этого брокера результат работы скрипта, приведенного выше, такой:
Стал проверять других брокеров. Брокер G**X:
Брокер A***i:
Брокер I***a F***x:
Первый мой тест сегодня был на A*****l M*****s.
Таким образом, получаем, что далеко не у всех брокеров правильно работает IsTradeAllowed (первая версия) и MODE_TRADEALLOWED. А вот вторая версия IsTradeAllowed работает везде корректно. Значит лучше всего именно ею и пользоваться.
Действительно, у этого брокера результат работы скрипта, приведенного выше, такой:
Стал проверять других брокеров. Брокер G**X:
Брокер A***i:
Брокер I***a F***x:
Первый мой тест сегодня был на A*****l M*****s.
Таким образом, получаем, что далеко не у всех брокеров правильно работает IsTradeAllowed (первая версия) и MODE_TRADEALLOWED. А вот вторая версия IsTradeAllowed работает везде корректно. Значит лучше всего именно ею и пользоваться.
А сегодня
IsTradeAllowed(Symbol(), TimeCurrent())
показывает тру
Кстати почему у вас Локальное время?
А сегодня
IsTradeAllowed(Symbol(), TimeCurrent())
показывает тру
Кстати почему у вас Локальное время?
Сегодня праздничный выходной поэтому и тру.
Факт в том что ни одна функция по узнаванию не работает на 100%.