Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А какая практическая необходимость во всех этих проверках?
Зачем проверять, например, разрешено ли эксперту торговать? На кого расчёт? На пользователя-дауна? Флаг разрешения торговли ставится в терминале один раз и всё. Зачем это на каждом тике проверять? Или же проверять каждые n-секунд? Советнику больше делать нечего?
Зачем проверять, открыт ли рынок? Рынок открывается когда хочет? Или какой-то инструмент сегодня торгуется с 16-ти часов, а завтра с 14-ти и такой бардак творится постоянно? Зачем при известном и никогда не меняющемся расписании торгов каждый тик или каждые n-секунд проверять открыт ли рынок?
А этот забавный совет с отправкой торгового запроса чтобы понять открыт ли рынок? Для любителей посмеяться? Или для довольного пользователя?
Нет тика -- нет торговли.
А какая практическая необходимость во всех этих проверках?
Зачем проверять, например, разрешено ли эксперту торговать? На кого расчёт? На пользователя-дауна? Флаг разрешения торговли ставится в терминале один раз и всё. Зачем это на каждом тике проверять? Или же проверять каждые n-секунд? Советнику больше делать нечего?
Зачем проверять, открыт ли рынок? Рынок открывается когда хочет? Или какой-то инструмент сегодня торгуется с 16-ти часов, а завтра с 14-ти и такой бардак творится постоянно? Зачем при известном и никогда не меняющемся расписании торгов каждый тик или каждые n-секунд проверять открыт ли рынок?
А этот прикол с отправкой торгового запроса чтобы понять открыт ли рынок?
Нет тика -- нет торговли.
Задачи разные бывают. За всех не скажу, но у меня стояла задача из одного советника открывать ордера по разным инструментам, и у некоторых были разные торговые сессии (речь идёт о возможности работы с любым набором инструментов, доступных для счёта).
Поэтому все проверки делались не в OnTick, а в OnTimer. Свой вариант описал на предыдущей странице. Хотя в принципе он является своего рода проверкой "нет тика -- нет торговли".
... Рынок открывается когда хочет? Или какой-то инструмент сегодня торгуется с 16-ти часов, а завтра с 14-ти и такой бардак творится постоянно?
...
Случается... Праздники там разные... В разных странах. Вот недавнее "день амер президента", например. Форекс работал, но золото и серебро - нет.
А если, кроме форекса, есть возможность пользовать ещё и фьючерсы, то здесь случается и раннее закрытие сессий, и отключения на случай превышения лимита, и прочие подвохи.
Вот еще вариант для четверки:
изумительный вариант -- главное запустить советник до открытия рынков -- и если не выключать, не перегружать, не менять таймфрейм -- то советник так ничего и не отработает, потому что флаг всегда будет в состоянии "нет"
p.s. забавная ветка на советы
p.s.2. Особенно странно когда утверждают, что на закрытом рынке
MarketInfo(Symbol(), MODE_BID)
даёт НОЛЬ.
Проверка задержки между тиками, и на основании этого делать вывод о закрытии торгов -- плохое решение.
Проверка задержки между тиками, и на основании этого делать вывод о закрытии торгов -- плохое решение.
1) если отвечать не на вопрос "закрыты ли торги", а на вопрос "возможно ли открыть сделку по данной цене" (в текущих условиях);
2) заранее знать, что если котировка старше xx минут, то сервер на попытку открытия ордера гарантированно вернёт off quotes;
тогда вполне сносно. ИМХО, конечно.
Тут велось обсуждение данного вопроса для MT5.
Правильным вариантом для себя считаю использование функции SymbolInfoSessionTrade() для определения доступности торгов.
Перевел советника в режим работы OnTimer() теперь когда рынок закрыт он этого не понимает и пытается торговать, в общем обращается к серверу и естественно получает ошибки и забивает логи журнала. GetLastError() = Рынок закрыт. Какие ещё условия проверки на выходной день или закрытый рынок можно придумать ?
Duration = (задайте значение сами в миллисекундах. например, 6 часов = 1000*60*60*6)
if(GetLastError()==132(рынок закрыт) ) Sleep (Duration);
Когда то делал эксперименты с SymbolInfoSessionTrade() и Quote, и оказалось что данные из этих функций лишь приблизительно соответствуют действительности, а в некоторых случаях не соответствуют.
Возможно, комбинация нескольких проверок даст однозначный ответ на вопрос закончилась ли торговля?
Ого сколько тектса.
MarketInfo(Symbol(),MODE_TRADEALLOWED)