Можно или нет установить несколько советников в один торговый терминал (на один счет), но на разные валютные пары?
Да
При моем опыте получалась что, торговый поток занят (IsTradeAllowed) одним из советников другие просто не могут открыть позицию.
Что делают когда есть очередь? Занимают её. Если поток занят, подождите пока освободится. Или переходите на МТ5, там проблем с очередью не должно быть.
С помощью какой функции? (Если поток занят, подождите пока освободится)
Пробовал так:
int start() { if(!IsTradeAllowed()) Print("торговый поток занят,жду"); // бесконечный цикл while(true) if(IsTradeAllowed()) { break; }
С помощью какой функции? (Если поток занят, подождите пока освободится)
Пробовал так:
Это слишком жёстко. А в таком варианте возможно требуется что-то типа RefreshRates внутри цикла +sleep. Сто лет уже как с МТ4 слез, не помню точно, в общем обновлять окружение.
Самым правильным будет уход на следующий тик, т.е. return вместо Print и проверка условий на следующем тике. К тому же, это освободит поток.
Да вроде на четвёрке тоже добавляли количество одновременных запросов в потоке.
В МТ4 можно одновременно до 16 сделок проводить (12 одновременно из разных экспертов), так что trade context busy получить очень сложно.
В МТ5 гораздо больше сделок, особенно с учетом асинхронного режима.
IsTradeAllowed к потоку не имеет никакого отношения. IsTradeContextBusy
Блин, попутал. Вопрос сбил с толку ))
Я так понимаю автор имел ввиду IsTradeContextBusy
Блин, попутал. Вопрос сбил с толку ))
Я так понимаю автор имел ввиду IsTradeContextBusy
Справочник MQL4
IsTradeAllowed
Возвращает информацию о возможности торговли при помощи экспертов.
bool IsTradeAllowed(); |
Вторая форма вызова возвращает информацию о возможности торговли для заданного символа в указанное время.
bool IsTradeAllowed( const string symbol // символ datetime tested_time // время ); |
Параметры
[in] Символ.
tested_time
[in] Время.
Возвращаемое значение
Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.
IsTradeContextBusy
Возвращает информацию о состоянии потока выполнения торговых операций.
bool IsTradeContextBusy(); |
Возвращаемое значение
Возвращает true, если поток для выполнения торговых операций занят, иначе возвращает false.
Пример:
if(IsTradeContextBusy()) Print("Торговый поток занят. Подождите"); |
Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Можно или нет установить несколько советников в один торговый терминал (на один счет), но на разные валютные пары? соответственно чтобы они корректно работали. При моем опыте получалась что, торговый поток (IsTradeAllowed()) занят одним из советников другие просто не могут открыть позицию.