Ответить
21.09.2010, 17:12
Аватар для apelsinder
apelsinder apelsinder вне форума Новичок форума
Регистрация: 07.03.2009 / Сообщений: 37
Поблагодарили 13 раз(а) / Репутация: 12

По умолчанию помогите найти ошибку

нужно чтоб советник закрывал сделку при обратном сигнале
сейчас советник не закрывает сделки



if(total<1 && A<0 && B>0 && G<Bars)
{
Ticket = OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,0,Red);
G=Bars;
return(0);

//закрытие при обратном сигнале
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
if( total<1 && A>0 && B<0)
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);

return(0);
}
07.10.2010, 17:47
Регистрация: 05.08.2008 / Сообщений: 766
Поблагодарили 273 раз(а) / Репутация: 510
Вы пытаетесь закрыть не выбранный ордер, перед закрытием его нужно выбрать с помощью OrderSelect

Попробуйте так:

Код:
if(total<1 && A<0 && B>0 && G<Bars)
{
Ticket = OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,0,Red);
G=Bars;
} 


//закрытие при обратном сигнале
if(ChPos(1) && OrderSymbol()==Symbol())
{
if( total<1 && A>0 && B<0)
_OrderClose(0);
} 


 //проверяет есть ли открытые ордера
int ChPos(int type) 
{

   int i;bool col=false;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==EA_Magic){col=true;}
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==EA_Magic){col=true;}
       }
    }   
return(col);
}

//Закрывает позицю по типу
int _OrderClose(int type)
   {//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99
   
   int err;
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==EA_Magic)
         {
          err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
          if(err<0){Print("OrderClose()-  Ошибка закрытия OP_BUY.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
         }
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==EA_Magic)
         {
          err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
          if(err<0){Print("OrderClose()-  Ошибка закрытия OP_SELL.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
         }
        }
       }
   return(0);
   }
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в функции FXgorets Язык программирования MQL4 3 30.08.2010 23:41


Текущее время: 18:21. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO