Мультиваютный эксперт

 
Всем доброе время суток! Подскажите пожалуйста, как сделать чтобы в советники условие if(OrdersTotal()<1) проверялось только по определённой валютной паре, допустим EURUSD? Никак не могу разобраться...
 
myforexwork:
Всем доброе время суток! Подскажите пожалуйста, как сделать чтобы в советники условие if(OrdersTotal()<1) проверялось только по определённой валютной паре, допустим EURUSD? Никак не могу разобраться...


Никак.

Надо перебирать открытые ордера и проверять OrderSymbol()

 
PapaYozh:


Никак.

Надо перебирать открытые ордера и проверять OrderSymbol()

Благодарю за столь быстрый ответ:)

for(int i= OrdersTotal()-1; i>= 0 ; i--){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)

if(OrderSymbol() == Symbol())

Что то типа того? Помогите разобраться, что дальше? Т.е. мне надо, чтобы была проверка есть ли открытый ордер по данному символу, если нет, то разрешить открывать ордер.

 
myforexwork:

Благодарю за столь быстрый ответ:)

for(int i= OrdersTotal()-1; i>= 0 ; i--){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)

if(OrderSymbol() == Symbol())

Что то типа того? Помогите разобраться, что дальше? Т.е. мне надо, чтобы была проверка есть ли открытый ордер по данному символу, если нет, то разрешить открывать ордер.


bool fl=false;
for( int i= OrdersTotal()-1; i>=0; i-- )
{
  if ( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) )
    if( OrderSymbol() == Symbol() )
    {
      fl=true;
      break;
    }
}

if ( !fl )
{ // нет ни открытых, ни отложенных по текущему символу ордеров
  // ...
}
 
PapaYozh Спасибо! Сейчас попробую:)
 
Ммм..Теперь возник ещё один вопрос... Возможно ли открывать сделки с одной программы по нескольким валютным парам?
 
myforexwork:
Ммм..Теперь возник ещё один вопрос... Возможно ли открывать сделки с одной программы по нескольким валютным парам?
Возможно, но не в тестере.
 
Reshetov:
Возможно, но не в тестере.

Т.е. если в тестере выдаёт ошибку unknown symbol name AUDUSD допустим, можно не обращать внимание, если код верный, по сути сделки открываться будут? Спасибо.
 

myforexwork:
Всем доброе время суток! Подскажите пожалуйста, как сделать чтобы в советники условие if(OrdersTotal()<1) проверялось только по определённой валютной паре, допустим EURUSD? Никак не могу разобраться...

... Возможно ли открывать сделки с одной программы по нескольким валютным парам?


Всё же можно. Без всяких if(OrdersTotal()<1)

А Используя, к примеру функции И.Кима https://www.mql5.com/ru/forum/131859

Напр. https://www.mql5.com/ru/forum/131859/page3#434221 (располагаем код этой функции вне функции СТАРТ):

А далее, по каждой паре для открытия позиций в коде сначала задаем условие:

if (NumberOfPositions(EURUSD,OP_SELL,MagicNumber)<1 ) {//если нет поз.селл EURUSD

открываем ........

 
myforexwork:

Т.е. если в тестере выдаёт ошибку unknown symbol name AUDUSD допустим, можно не обращать внимание, если код верный, по сути сделки открываться будут? Спасибо.

Да - в тестере МТ4 будет открываться только текущий, заданный символ. Но в онлайне - при правильно написанном коде - все валютные пары, предусмотренные кодом советника.
 
leonid553:

Да - в тестере МТ4 будет открываться только текущий, заданный символ. Но в онлайне - при правильно написанном коде - все валютные пары, предусмотренные кодом советника.

Спасибо большое за помощь leonid553! Полезная информация! Буду разбираться:)
Причина обращения: