[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 459

 
Maximov7:

Вот еще такой вопрос.... есть открытый ордер допустим такой:

OrderSend("EURUSD",OP_BUY,0.1,C1,10,Bid-0.0017-0.0017,Ask+0.0017);

как открыть другой ордер при условии(if) что этот закроется по тейкпрофиту????


книжку читали??? (хотяб ради прикола)
 
3 раза перечитал.....и все таки?
 
Maximov7:
3 раза перечитал.....и все таки?


В цикле по истории закрытых ордеров находите "этот" ордер, далее проверяете закрылся ли он по ТР, если да, то открываете "другой". Все.

Подробнее смотрите здесь - выбираете нужные Вам ф-ии, подключаете в Вашу прогу и все.

 
Большое спасибо!
 
Maximov7:
Большое спасибо!

Пользуйтесь в радость.
 

Добрый вечер!

Поглядите пожалуйста код:

for(i=1;i<=OrdersTotal();i++) // перебора ордеров для трала

{

if (OrderSelect(i-1,SELECT_BY_POS)==true)

{

if (OrderSymbol()!=Instr)

continue;

if(OrderType()==0)

{

if ((Bid-(OrderOpenPrice()+TralingStop*Point))>0)

return(55);}

if(OrderType()==1)

{

if ((Ask-(OrderOpenPrice()-TralingStop*Point))<0)

return(55);

}

}

Не пойму в чем проблема, Алертом внутри тестирую, после Instr уже нигде не срабатывает

 
demlin:

Добрый вечер!

Поглядите пожалуйста код:

for(i=1;i<=OrdersTotal();i++) // перебора ордеров для трала

{

if (OrderSelect(i-1,SELECT_BY_POS)==true)

{

if (OrderSymbol()!=Instr)

continue;

if(OrderType()==0)

{

if ((Bid-(OrderOpenPrice()+TralingStop*Point))>0)

return(55);}

if(OrderType()==1)

{

if ((Ask-(OrderOpenPrice()-TralingStop*Point))<0)

return(55);

}

}

Не пойму в чем проблема, Алертом внутри тестирую, после Instr уже нигде не срабатывает


Выше кода такая есть строчка?
string Instr;
Вы код вставьте по нормальному - через SRC в редакторе... :-)))
 
Roman.:

Выше кода такая есть строчка? Вы код вставьте по нормальному - через SRC в редакторе... :-)))
Да Instr есть, извиняюсь не знаю, что такое SRC
 
demlin:
Да Instr есть, извиняюсь не знаю, что такое SRC

Когда вставляете код в Ваш пост нажмите CTRL+ALT+M - потом туда (в окошко) ставите код (через буфер CTRL+C - копировать, CTRL+V- вставить), далее внизу окна нажимаете кнопку "вставить".
 
demlin:

Добрый вечер!

Поглядите пожалуйста код:

for(i=1;i<=OrdersTotal();i++) // перебора ордеров для трала

{

if (OrderSelect(i-1,SELECT_BY_POS)==true)

{

if (OrderSymbol()!=Instr)

continue;

if(OrderType()==0)

{

if ((Bid-(OrderOpenPrice()+TralingStop*Point))>0)

return(55);}

if(OrderType()==1)

{

if ((Ask-(OrderOpenPrice()-TralingStop*Point))<0)

return(55);

}

}

Не пойму в чем проблема, Алертом внутри тестирую, после Instr уже нигде не срабатывает


Попробуйте такой вариант - так у меня организована подобная конструкция.


// ------------------------------------------------Ищем наш ордер---------------------------------

int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();
                                      
                                  
                    
                                if (orderType == OP_BUY) 
                                     {
                                       //здесь трал покупки
                                     }
            
                                if (orderType == OP_SELL) 
                                      {
                                        //здесь трал продажи
                                      }   
                            
                    }
        
   }
Причина обращения: