ПРОБЛЕМЫ с Тестером

 

Голову уже сломал, не могу понять в чем проблема  условие такое 


  if( CheckOpen_Trades()==0 /*&& OrdersTotal()==0*/)
  {
   
  ////////////////////// TP1 SL1 ///////////////////////////////
  SetOrder(Symbol(), OP_BUYSTOP,LotSize,buyPrice,buyPrice-SL1*point(), buyPrice+TP1*point(),"_Buy_1",MagicNumber,exp);
  SetOrder(Symbol(), OP_BUYSTOP,LotSize,buyPrice,buyPrice-SL2*point(), buyPrice+TP2*point(),"_Buy_2",MagicNumber,exp);
}

Функция 

int CheckOpen_Trades() 
{
 int OpenTrades = 0;
 int total = OrdersTotal();
 for (int i = 0; i < total; i++)
  {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  {
  if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber/*&& OrderType() == Mode*/)
  if (OrderType() <= OP_SELLSTOP) OpenTrades++;
  }
  }
 return (OpenTrades); 
}
если нет выставленных ордеров и открытых поз то должны выставится два ордера но они ВЫСТАВЛЯЮТСЯ на все средства, куча ордеров ...

Если раскоментировать OrdersTotal()==0  тогда проблем никаких нет ...Причем самое интересное что функция посчета позиций и ордеров возвращает 0 (проверял через Print)..

Но не смотря на это выставляется куча ордеров...В чем тут загвоздка??

 

Проверьте сколько раз у Вас вызывается конструкция

if( CheckOpen_Trades()==0 /*&& OrdersTotal()==0*/)
  {
   
  ////////////////////// TP1 SL1 ///////////////////////////////
  SetOrder(Symbol(), OP_BUYSTOP,LotSize,buyPrice,buyPrice-SL1*point(), buyPrice+TP1*point(),"_Buy_1",MagicNumber,exp);
  SetOrder(Symbol(), OP_BUYSTOP,LotSize,buyPrice,buyPrice-SL2*point(), buyPrice+TP2*point(),"_Buy_2",MagicNumber,exp);
}
 
вызывается на каждом тике но ордера должны открытся когда их вообще нет...если просто вставить OrdersTotal()==0 все работает как надо
 

В том коде который Вы привели явная ошибка:

Вы проверяете ордера на OP_SELLSTOP а ордера выставляете OP_BUYSTOP

 
WitoHOH >>:

В том коде который Вы привели явная ошибка:

Вы проверяете ордера на OP_SELLSTOP а ордера выставляете OP_BUYSTOP

Нет там никакой Ошибки   if (OrderType() <= OP_SELLSTOP)  OpenTrades++;

Проверку можно было и не делать...но суть не в этом

 
nord >>:

Нет там никакой Ошибки if (OrderType() <= OP_SELLSTOP) OpenTrades++;

Проверьте SetOrder -- есть подозрение что вы выставляете не тот магик. Или распринтовкой все подряд.

 
TheXpert >>:

Проверьте SetOrder -- есть подозрение что вы выставляете не тот магик. Или распринтовкой все подряд.

БЛИН!!! РЕАЛЬНО СПАСИБО!!! точно!!...перепутал местами МАГИК и комент!!! 

вот блин по торопливости ...