[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 568

 
Catrock >>:

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

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

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

Merci) Mais cela n'a pas résolu la situation.

Voici la situation : j'avais un ordre en attente de type 5(Sell Stop), puis le prix l'a atteint et il est devenu un ordre au marché. Le type de commande a-t-il changé ? C'est-à-dire que les propriétés du 5 ont-elles changé ?

Lorsque j'insère la combinaison susmentionnée, les "actions" modifient toujours les caractéristiques de l'ordre ouvert, alors qu'elles ne devraient pas le faire. C'est pourquoi je voudrais en faire une condition pour que les actions ne soient appliquées qu'aux ordres en cours.

         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();
 
si le sellstop est exécuté, il devient de type 1 et cesse d'être un ordre en attente pour devenir un ordre au marché.
 

Je n'arrive pas à comprendre.

J'ai mis l'heure dans le tableau, mais l'imprimante imprime 0 =(

for (i=0; i<=10; i++)
   {
     datetime Array[i] = iTime(NULL,0,i);
     Print("Время: ",Array[i]);
   }
L'impression produit des zéros... Qu'est-ce qu'il y a ?
 
Alors je suis coincé)) Lorsque j'exécute Expert Advisor dans le testeur avec visualisation, l'ordre de marché change toujours, je ne comprends pas pourquoi... J'ai fait un gros code, apparemment il y a une erreur algorithmique quelque part.
 
Noterday >>:

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

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

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

le tableau doit être déclaré en dehors de la boucle et sa taille doit être fixe (ou une indication qu'il s'agit d'un tableau indicateur)

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


}
 
Catrock >>:
Тогда я застрял)) Запускаю эксперт в тестере с визуализацией, рыночный ордер все равно меняется, непонятно почему.. Нагородил большой код, видимо ошибка где то алгоритмическая.
qu'est-ce qui change exactement dans l'ordre du marché ? Soyez plus clair sur ce que vous voulez atteindre.
 
Techno >>:

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

ne fonctionne toujours pas.... Comment iTime écrit-il l'heure dans un tableau ? En secondes à partir de 1970 ou "yyyyy:mm:dd hh:mm".
 
Noterday >>:
всё равно не работает.... как iTime записывает время в массив? В секундах о 1970 или "yyyy:mm:dd hh:mm"
avec ce design, oui, en quelques secondes. Tout fonctionne pour moi. Compilez et vérifiez seulement cette partie du code.
 

Dans un ordre au marché, à ce stade, les niveaux de take profit et de stop loss changent. Ils ne devraient pas.

Seuls les ordres en cours peuvent être modifiés dans mon système. Si l'ordre devient un ordre au marché, les modifications ne sont pas autorisées. Le conseiller expert utilise un ordre au total.