[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 568

 
Catrock >>:

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

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

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

Grazie) Ma non ha risolto la situazione.

Ecco la situazione: avevo un ordine pendente di tipo 5(Sell Stop) e poi il prezzo lo ha raggiunto ed è diventato un ordine a mercato. Il tipo di ordine è cambiato? Cioè il 5 è cambiato nelle sue proprietà?

Quando inserisco la combinazione di cui sopra, le "Azioni" cambiano ancora le caratteristiche dell'ordine aperto ma non dovrebbero. Per questo vorrei che fosse una condizione in modo che le azioni siano applicate solo agli ordini in sospeso.

         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();
 
se il sellstop viene eseguito, diventa di tipo 1 e cessa di essere un ordine pendente e diventa un ordine a mercato.
 

Non riesco a capirlo.

Ho messo il tempo nell'array, ma la stampante stampa 0 =(

for (i=0; i<=10; i++)
   {
     datetime Array[i] = iTime(NULL,0,i);
     Print("Время: ",Array[i]);
   }
La stampa emette degli zeri... Cosa c'è che non va?
 
Allora sono bloccato)) Quando eseguo Expert Advisor nel tester con la visualizzazione, l'ordine di mercato cambia ancora, non capisco perché... Ho fatto un grande codice, apparentemente c'è un errore algoritmico da qualche parte.
 
Noterday >>:

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

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

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

l'array deve essere dichiarato fuori dal ciclo e la dimensione deve essere fissa (o un'indicazione che si tratta di un array indicatore)

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


}
 
Catrock >>:
Тогда я застрял)) Запускаю эксперт в тестере с визуализацией, рыночный ордер все равно меняется, непонятно почему.. Нагородил большой код, видимо ошибка где то алгоритмическая.
cosa sta cambiando esattamente nell'ordine di mercato? Sii più chiaro su ciò che vuoi ottenere.
 
Techno >>:

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

ancora non funziona.... Come fa iTime a scrivere il tempo in un array? In secondi dal 1970 o "yyyy:mm:dd hh:mm"
 
Noterday >>:
всё равно не работает.... как iTime записывает время в массив? В секундах о 1970 или "yyyy:mm:dd hh:mm"
con questo design, sì, in pochi secondi. Per me funziona tutto. Compila e controlla solo questa parte del codice.
 

In un ordine a mercato a questo punto, i livelli di take profit e stop loss cambiano. Non dovrebbero.

Solo gli ordini pendenti possono essere cambiati nel mio sistema. Se l'ordine diventa un ordine a mercato, i cambiamenti non sono consentiti. L'Expert Advisor utilizza un ordine in totale.

Motivazione: