мейджики нужны если на одном символе несколько совтников, а
если на символ по одному, то достаточно сравнивать Symbol() и OrderSymbol(). Ну и каждый советник должен свои ордера считать - если Symbol()==OrderSymbol()
и если мейджики используются то приподсчете ордеров и их проверять.
ок... как насчёт OrdersTotal()? Как бы так, чтобы ограничивался одним ордером на пару, а не
одним ордером вообще?
CTPAYC:
ок... как насчёт OrdersTotal()? Как бы так, чтобы ограничивался одним ордером на пару, а не одним ордером вообще?
Ответ - выше =)ок... как насчёт OrdersTotal()? Как бы так, чтобы ограничивался одним ордером на пару, а не одним ордером вообще?
В цикле проверять все ордера, и если есть ордер с OrderSymbol() == Symbol(), считать что открытая позиция есть. Иначе - считать, что нету.
Примерно так:
int _OrdersTotal = OrdersTotal(), _GetLastError = 0; for ( int z = _OrdersTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS ) ) { _GetLastError = GetLastError(); Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError ); continue; } if ( OrderSymbol() == Symbol() ) { return(-1); } }
Концепция торговли одним экспертом на разных парах во имя снижения рисков себя не оправдала, ибо в подавляющем большинстве случаев они движутся параллельно :о(
Если надо торговать одним экспертом на одной паре, но на разных тайм-фреймах? Мейджики? Или можно что-нибудь другое посравнивать?
Все просто.
Symbol() - разделяет торгуемые символы.
Для дополнительного разделения ордеров в рамках одного или нескольких экспертов можно использовать Magic.
Так что таймфрейм можно просто вписывать вместо параметра Magic.
Тогда узнать, есть ли такой ордер с таким символом и относящийся к такому то таймфрейму можно так
int GetOrder(string symbol, int period) {int cnt = OrdersTotal(); for (int i=0; i < cnt; i++) {if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != symbol) continue; if (OrderMagicNumber() != period) continue;return (OrderSymbol());}return (-1); }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что нужно знать и на что обращать внимание, для того, чтобы торговать на одном счёте, одним экспертом, запущеным на нескольких парах.
Например эксперт открывает только одну позицию посредством проверки if(OrdersTotal()<1). Это значит, что он откроет только одну позицию на ВСЕ пары?
Как корректно использовать мейджики для такой торговли?
Спасибо.