Советник + несколько пар - страница 2

 
Vinin писал(а) >>

Примерно. Но если будешь закрывать позиции, то лучше делать на уменьшение цикл.

Не только закрывать, но и модифицировать.. Вариант на уменьшение

for (int i=OrdersTotal()-1;i>=0;i--)          //Цикл по всем ордерам,..
  {                                           //отражённым в терминале
      if(OrderSelect(i,SELECT_BY_POS)==true)          
        {
          if(OrderSymbol()==Symbol())
            {
              if (OrderType()==OP_BUY)
               {
                 ... 
               }  
              else
               {
                 ...
               }

            }
        } 
  }                                         //Конец тела цикла

Или так:

int start() 
  {
  int i;
  for (i=OrdersTotal()-1;i>=0;i--)
    {
    if (CheckOrder(i))
    {
    
      ...                  // обработка ордера
    
    }
  }


bool CheckOrder(int lnPos)
  {
  if (!OrderSelect(lnPos,SELECT_BY_POS))           return(false);
  if (!(OrderSymbol()==Symbol()))                  return(false);
  return(true);
  }
 
Вопрос закрыт?
 
Vinin писал(а) >>
Вопрос закрыт?

Последний вариант с логической функцией интересен.. Правильно или нет?

MagicNumber убрал, т.к. ТФ не меняю..

 
А мне кажется, это тот случай, когда пригодилась бы автогенерация Magic на основании символа и ТФ.
 
У меня советник привязан к определенному ТФ, при смене ТФ ничего не меняется и следит именно за нужным..
 

помогите скодом, хочу нанесколько пар ...если так то открывает до бесконечности.если с ОрдерсТотал то одну на весь терминал.


for (int i=1; i<=OrdersTotal(); i++)          //Цикл по всем ордерам,..

  {                                           //отражённым в терминале

      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий         

        {

          if(OrderSymbol()==Symbol())

            {

                 

            }

        } 

  }    

  if (OrderType()==OP_BUY)

  

 // total=OrdersTotal();

  // if(total<1)

      //--- check for long position (BUY) possibility

      // if(MaPrevious>MaPrevious1&&open1>close1&& MacdCurrent<0 

      // && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious ) 

        

        {

         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point ,Ask+TakeProfit*Point,"macd sample",Magic,0,Green);

         if(ticket>0)

           {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

               Print("BUY order opened : ",OrderOpenPrice());

           }

         else

            Print("Error opening BUY order : ",GetLastError());

         return;

        }

      //--- check for short position (SELL) possibility

     if(MaPrevious<MaPrevious6) 

     

        {

         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"macd sample",Magic,0,Red);

         if(ticket>0)

           {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

               Print("SELL order opened : ",OrderOpenPrice());

           }

         else

            Print("Error opening SELL order : ",GetLastError());

        }

        {

//----


}

      //--- exit from the "no opened orders" block

      return;

 
если нужен весь код
Файлы: