При установки советника мы можем запретить ему торговать в бай или селл на первой вкладке. А какой функцией или командой советник может получить эту информацию? На деле функция OrderSend если торговля в этом направлении запрещена не возвращает -1, а функция GetLastError в свою очередь 0. И советник который предполагает одновременную торговлю в обе стороны всегда, на каждом тике безуспешно пытается выставить ордер, что неразумно. Так вот как советнику узнать разрешил ли человек торговать в настройках ему в том или ином направлении?
Ага! А так же как бы советнику узнать - нажата ли кнопка советники? А то он будет на каждом тике пытаться открывать ордера в любую сторону при отжатой кнопке, что неразумно.
При установки советника мы можем запретить ему торговать в бай или селл на первой вкладке. А какой функцией или командой советник может получить эту информацию? На деле функция OrderSend если торговля в этом направлении запрещена не возвращает -1, а функция GetLastError в свою очередь 0. И советник который предполагает одновременную торговлю в обе стороны всегда, на каждом тике безуспешно пытается выставить ордер, что неразумно. Так вот как советнику узнать разрешил ли человек торговать в настройках ему в том или ином направлении?
Вставте в советник GetLastError с анализом кода ошибки:
ERR_LONGS_NOT_ALLOWED 4110 Длинные позиции не разрешены. Необходимо проверить свойства эксперта.
ERR_SHORTS_NOT_ALLOWED 4111 Короткие позиции не разрешены. Необходимо проверить свойства эксперта.
Ага! А так же как бы советнику узнать - нажата ли кнопка советники? А то он будет на каждом тике пытаться открывать ордера в любую сторону при отжатой кнопке, что неразумно.
Вставте в советник GetLastError с анализом кода ошибки:
ERR_LONGS_NOT_ALLOWED 4110 Длинные позиции не разрешены. Необходимо проверить свойства эксперта.
ERR_SHORTS_NOT_ALLOWED 4111 Короткие позиции не разрешены. Необходимо проверить свойства эксперта.
IsTradeAllowed()
Банки, и некоторые другие, запрещают торговлю советниками. Или брокер может персонально запретить, если советник его задолбет пипсовкой. Вот как раз об этом IsTradeAllowed() и дает знать советнику, при нажатой кнопке "Советники".
Ладно, не буду намеками :)))
Скажу проще:
Что такое советник? Это программа. Программа для чего? Для терминала. Вы программируете, а терминал выполняет.
Как Вы считаете - если вы запретили открытие позиции на уровне терминала, нужно ли еще и программно (в коде советника) давать (или проверять) эту команду терминалу?
Ладно, не буду намеками :)))
Скажу проще:
Что такое советник? Это программа. Программа для чего? Для терминала. Вы программируете, а терминал выполняет.
Как Вы считаете - если вы запретили открытие позиции на уровне терминала, нужно ли еще и программно (в коде советника) давать (или проверять) эту команду терминалу?
При установки советника мы можем запретить ему торговать в бай или селл на первой вкладке. А какой функцией или командой советник может получить эту информацию? На деле функция OrderSend если торговля в этом направлении запрещена не возвращает -1, а функция GetLastError в свою очередь 0. И советник который предполагает одновременную торговлю в обе стороны всегда, на каждом тике безуспешно пытается выставить ордер, что неразумно. Так вот как советнику узнать разрешил ли человек торговать в настройках ему в том или ином направлении?
Всё очень просто
extern bool NewBuy = true; // Новая торговля BUY (разрешена = true /запрещена = false)
extern bool NewSell = true; // Новая торговля SELL (разрешена.........../запрещена...........)
затем далее в программе проверяем разрешено ли торговать в определённом направлении
if (NewBuy ......) открываем бай если есть соответствие условию...
if (NewSell......) или открываем селл...
Всё очень просто
extern bool NewBuy = true; // Новая торговля BUY (разрешена = true /запрещена = false)
extern bool NewSell = true; // Новая торговля SELL (разрешена.........../запрещена...........)
затем далее в программе проверяем разрешено ли торговать в определённом направлении
if (NewBuy ......) открываем бай если есть соответствие условию...
if (NewSell......) или открываем селл...
как обойти я знаю, мне нужно конкретное решение как узнать в первом меню можно ли покупать и продавать, любым способом.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
При установки советника мы можем запретить ему торговать в бай или селл на первой вкладке. А какой функцией или командой советник может получить эту информацию? На деле функция OrderSend если торговля в этом направлении запрещена не возвращает -1, а функция GetLastError в свою очередь 0. И советник который предполагает одновременную торговлю в обе стороны всегда, на каждом тике безуспешно пытается выставить ордер, что неразумно. Так вот как советнику узнать разрешил ли человек торговать в настройках ему в том или ином направлении?
По сабжу никак, такого функционала в mt4 нет.
Предлагается 2 пути:
1) собственные настройки extern о направлении торговли
2) при возникновении первой ошибки 4110 или 4111 менять параметры советника так чтобы более не было попыток открыть ордер в этом направлении.
Всем спасибо.