Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1077

 

Quelle est la bonne façon de traiter l'erreur : array out of range in '... dans cette situation lorsque l'on passe en #property strict ?



int limit=rates_total-prev_calculated;

ArrayResize(?,?,?);


for(i=0; i<limit; i++)
 {
  if(Буфер[i]-Буфер[i+1] < 0.0)  Буф2[i]=Буфер[i];
 }
 

Faites-le comme ceci

int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;

Au lieu de 1, vous pouvez mettre n'importe quel chiffre sauf 0. Plus le chiffre est élevé, moins il y aura de barres comptées au démarrage de l'indicateur.

Et enlever

ArrayResize(?,?,?);

c'est absolument inutile.

 
AlexeyVik:

Faites-le comme ceci

Au lieu de 1, vous pouvez mettre n'importe quel chiffre sauf 0. Plus le chiffre est élevé, moins il y aura de barres comptées au démarrage de l'indicateur.

Et enlever

c'est absolument inutile.

Je comprends maintenant. Merci pour le conseil.
 
les gars, il y a une commande t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") ; comment puis-je définir non pas aujourd'hui 10:00, mais demain 10:00 ? indice svp !
 
kocunyc89 : il existe une commande t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");comment puis-je définir non pas aujourd'hui 10:00 mais demain 10:00 ? datetime dt=TimeLocal() ;
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60 ;

Alert("Now = ",dt, " Tomorrow at 10:00 = ",t1) ;

 
LRA:
kocunyc89 : il existe une commande t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");comment puis-je définir non pas aujourd'hui 10:00 mais demain 10:00 ? datetime dt=TimeLocal() ;
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60 ;

Alert("Now = ",dt, " Tomorrow at 10:00 = ",t1) ;

Merci beaucoup !
 
 if (Sob_01_0_1==1 && OrderSelect(ticket3_buy, SELECT_BY_TICKET)==true)
        {
         Alert("Sob_01_0_1=",Sob_01_0_1);
         Alert("здесь код перестает работать?"); 
                   
        if (OrderTakeProfit()>0 && OrderCloseTime()>0)
           {
           Alert("третий ордер на покупку закрыт, событие 011");
           bool close6=OrderClose(ticket3_sell, lot3, Ask, 20, clrRed);
                if (close6==true)
                   Alert("третий ордер на продажу закрыт");
                   else Alert("ошибка закрытия третьего ордера на продажу", GetLastError());
           bool close7=OrderClose(ticket2_sell, lot2, Ask, 20, clrRed);
                if (close7==true)
                   Alert("закрыт второй модифицированный ордер на продажу");
                   else Alert("ошибка закрытия второго модифицированного ордера на продажу ticket2_sell ", GetLastError());
               Sob_01_0_1++;
               Sob011++;
           }
         }
 
bobrush:
Bonsoir, pouvez-vous me dire quelle est l'erreur. Le code cesse de fonctionner aprèsAlert("ici le code cesse de fonctionner ?") ;. C'est-à-dire que lorsqueticket3_buy fermesur le profit, alors l'instruction if n'est pas exécutée.
 

Bonsoir à tous. Question d'un mannequin sur les fonctions iLowest et iHighest. Au début, je voulais utiliser ces fonctions pour trouver la rupture haut/bas dans mon EA et placer un ordre en attente. Tout fonctionne avec iLowest mais iHighest ne fixe pas les commandes. Cependant, c'est un mot, puisque j'ai déjà résolu ce problème d'une manière différente. Je dois maintenant supprimer un ordre en attente s'il a été annulé pour l'ouvrir à un nouveau prix. J'ai essayé d'utiliser à nouveau les fonctions ci-dessus. Il n'y a aucun problème avec iLowest et la suppression d'un ordre d' achat en attente; j'ai des problèmes avec iHighest qui supprime un ordre de vente - l'ordre est supprimé lorsqu'une condition n'a pas encore été remplie (le prix est inférieur au maximum), un nouvel ordre est placé, il est à nouveau supprimé et ainsi de suite. Si le prix a dépassé le maximum, il est supprimé et un nouveau n'est pas exécuté, mais dès que le prix actuel est passé sous le maximum précédent, le "sifflement" recommence.

Les conditions sont rédigées de la manière suivante

si(iHighest(NULL, 0, MODE_HIGH, 70, 2) < iHigh(NULL, 0, 1)

{

DeleteOrders(OP_SELLSTOP, Magic) ;

}

si(iLowhest(NULL, 0, MODE_HIGH, 70, 2) > iLow(NULL, 0, 1)

{

DeleteOrders(OP_BUYSTOP, Magic) ;

}

(La fonction de suppression est écrite séparément). Qu'est-ce que je fais mal, quelle est l'erreur ?

 
Désolé pour le dérangement, tout a été résolu. J'ai écrit la condition de suppression dans l'EA un peu différemment de ce que j'ai écrit sur le forum - il n'y avait pas de décalage par rapport à la barre actuelle.
Raison: