[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 568

 
Catrock >>:

Скажите пожалуйста, как реализовать условие.-

If( есть отложенные ордера) то делаем то и то ;

 for(int i=0; i<OrdersTotal();i++)
  {
  OrderSelect(i,SELECT_BY_POS);
  if(OrderType()==2||3||4||5) // Есть ли отложники?
   {
   // Действия
   }
  }
 

Спасибо) Правда ситуацию этим не решил. еще вопрос.

 Ситуация: Стоял отложенный ордер типа 5 (Sell Stop) далее цена его достигла и он стал рыночным. Изменился ли тип ордера? Т.е изменилась ли 5 в его характеристиках? 

Когда вставляю комбинацию вышеприведенную, то "Действия" все равно меняют характеристики открытого ордера, а не должны. Из за этого я и хочу сделать условия, чтобы действия применялись только к отложенным ордерам.

 

         if(OrdersTotal())                                              // Если стоят ордера в списке
         {
             OrderSelect(0, SELECT_BY_POS);                             // Выбираем первый
             if(OrderType()==(2||3||4||5))                              // Если он не открытый то можем модифицировать
             {
               Alert("Что то делаю с ордером =)");
               if (PricePointNew>PricePointOld)
               OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
                else Print("OrderModify 1 вернул ошибку - ",GetLastError());
            
               if (PricePointNew<PricePointOld)
               OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
               else Print("OrderModify 2 вернул ошибку - ",GetLastError());
            
               if(PriсeStopNew>PriсeStopOld && (PriсeStopNew-PriсeStopNew)<(Stop*0.0001))
               OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
               else Print("OrderModify 3 вернул ошибку - ",GetLastError());
         
             if(PriсeStopNew<PriсeStopOld)
             OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
             else Print("OrderModify 4 вернул ошибку - ",GetLastError());         
            }
         }
         else                               // Если нет ордеров, то ставим
         {
            f = OrderSend(Symbol(), 5, 0.01,(PricePointNew-5*Point*10) , 1,(PriсeStopNew+8*Point*10) ,(PricePointNew-Profit*Point*10));
            OrderSelect( 0, SELECT_BY_POS);
            Ticket =  OrderTicket();
 
если селлстоп выполняется, у него становится тип 1 и он перестает быть отложником, становится рыночным.
 

Не могу понять

Загоняю в массив время, а принтом выводится 0 =(

for (i=0; i<=10; i++)
   {
     datetime Array[i] = iTime(NULL,0,i);
     Print("Время: ",Array[i]);
   }
Принт выводит нули... Что не так?
 
Тогда я застрял)) Запускаю эксперт в тестере с визуализацией, рыночный ордер все равно меняется, непонятно почему.. Нагородил большой код, видимо ошибка где то алгоритмическая.
 
Noterday >>:

Не могу понять

Загоняю в массив время, а принтом выводится 0 =(

Принт выводит нули... Что не так?

массив нужно объявлять вне цикла и размер должен быть фиксированный(либо указание что речь о индикаторном массиве)

datetime Array[10];
int start() 
{
for (int i=0; i<=10; i++)
   {
     Array[i] = iTime(NULL,0,i);
     Print("Время: ",Array[i]);
   }


}
 
Catrock >>:
Тогда я застрял)) Запускаю эксперт в тестере с визуализацией, рыночный ордер все равно меняется, непонятно почему.. Нагородил большой код, видимо ошибка где то алгоритмическая.
что именно меняется в рыночном ордере?? Скажи яснее чего ты хочешь добиться.
 
Techno >>:

массив надо объявлять вне цикла и размер должен быть фиксированный(либо указание что речь о индикаторном массиве)

всё равно не работает.... как iTime записывает время в массив? В секундах от 1970 или "yyyy:mm:dd hh:mm"
 
Noterday >>:
всё равно не работает.... как iTime записывает время в массив? В секундах о 1970 или "yyyy:mm:dd hh:mm"
при такой конструкции да, в секундах. У меня все работает. Скомпилируй и проверь только эту часть кода.
 

В рыночном ордере на данный момент, меняется уровни тейкпрофита и стоп лосса. А не должны.

Возможность изменения имеется в системе моей только для отложенных ордеров. Если ордер становиться рыночным, изменения не допускаются. Всего в эксперте используется один ордер.

Причина обращения: