Нужен скрипт

 

Помогите найти скрипт, который закрывает все открытые позиции и отложенники при срабатывании ТП (например есть два отложенника и две открытые позиции, и когда по одному из них сработает ТП, то скрипт должен закрыть все ордера). Заранее благодарен!

 
Попробуй
Файлы:
 
nikat97 писал(а) >>
Попробуй


Но ведь этот скрипт закрывает ордера не по ТП.
 
Скрипт запускается вручную. А вам нужен советник который будет следить за позициями этого символа.Такой вы не найдёте . Просто задача нестандартная, врядли кому нибудь это могло бы понадобиться.
 

Кто возьмётся написать такой советник за 3$ ?

 
ASWQ >>:

НИКто НЕвозьмётся написать такой советник за 3$!!!

)))

 
bool Play=true;
int r,ret,Orders_B=0,Orders_S=0;
int init()
{
      for( r=0;r<OrdersTotal();r++) //  
      {
      if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES)==false)    continue;
      if(OrderSymbol()==Symbol())
      {
      if (OrderType()==OP_BUY) Orders_B++;
      if (OrderType()==OP_SELL) Orders_S++;
      }}
}
int start()
{
if (Play==false) 
{
Comment("Ничего не ждём");
return(0);
}
Comment("Ждём закрытия");
int B=0,S=0;
//Проверим что имеем
      for( r=0;r<OrdersTotal();r++) //  
      {
      if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES)==false)    continue;
      if(OrderSymbol()==Symbol())
      {
      if (OrderType()==OP_BUY) B++;
      if (OrderType()==OP_SELL) S++;
      }}
if (Orders_B>B) CloseALL();
if (Orders_S>S) CloseALL();
}

//----------------  Функция -----------------------------------------
int Ord_Tot_Sym()
{
int O_T=0;
      for(int rr=0;rr<OrdersTotal();rr++) //  
      {
      if(OrderSelect(rr,SELECT_BY_POS,MODE_TRADES)==false)    continue;
      if(OrderSymbol()==Symbol())
      {
   O_T++;    
      }}
      if (O_T>0) return(1);
      else return(0);
}

     

//-------------- CloseAll --------------------------   
int CloseALL()
{
int ic;
 while (Ord_Tot_Sym()>0) 
 {
 RefreshRates();
                  for(ic=OrdersTotal()-1;ic>=0;ic--)
                   {
                  if(OrderSelect(ic,SELECT_BY_POS,MODE_TRADES)==false) continue;
                  if (OrderSymbol()==Symbol())
                  {
                  if (OrderType()==OP_BUY)
                  {
                  //RefreshRates();
                  ret=OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);
                  if (IsTradeAllowed()) continue;
                  else Sleep(1000);
                  }
                                    
                  if (OrderType()==OP_SELL)
                  {
                  //RefreshRates();
                  ret=OrderClose(OrderTicket(),OrderLots(),Ask,0,CLR_NONE);
                  if (IsTradeAllowed()) continue;
                  else Sleep(1000);
                  }}}
//--------- Закрыли все позиции теперь закроем все ордера ------------------------                    
                  for(ic=OrdersTotal()-1;ic>=0;ic--)
                   {
                  if(OrderSelect(ic,SELECT_BY_POS,MODE_TRADES)==false) continue;
                  if (OrderSymbol()==Symbol())
                  {
                  if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP ||
                     OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
                  ret=OrderDelete(OrderTicket());
                  }}
      PlaySound("MsgBell.wav" );
      Play=false;
      }
   return(0);
  }
Попробуйте
 

Не работает (сработал ТП и ничего не закрылось, советник улыбается), может что-то я не так сделал?

Файлы:
999.mq4  4 kb
 
Вы должны его установить после того как все ордера и позиции есть. Если после установки вы добавите позицию,то ничего не произойдёт. Так было в 1 посте.
А что у вас?
 

Понял, сейчас попробую.

 
Я только что пробовал всё работает.
Причина обращения: