Mon compte
Déjà membre ? S'identifier
Non inscrit ? S'inscrire
 
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre lvl 5 aupa est sur la route de la réputation...
    Date d'inscription
    March 2010
    Messages
    7
    Pouvoir de réputation
    4

    Pb EA boucle for Pb EA boucle for

    Bonjour,

    Je suis en train de créer mon EA et j'ai quelque soucis avec l'execution de celui ci.

    Je stock dans un tableau à 2 dimensions les x dernières valeurs d'un indicateur. Ainsi je peux en parcourant le tableau identifier un changement de tendance et vérifier que celle-ci est confirmé.

    Mon problème est que lorsque je l'execute en back test ou en démo, les "Print" (exemple de résultat ci-dessous") sont parfois incohérent. Comme si l'execution de ma boucle "for" était interrompu puis reprise un peu n'importe quand. Pendant un temps tout est correct puis tout devient incohérent je ne sais pas pourquoi.

    Merci pour votre aide.

    Code:
    double stTampon[19][2];
    int NbEntree = 20; 
    double tendance = 0;
    bool tendanceChange = false;
    double superTrend = 0;
    int cptTemps = 0;
    
    ...
    int init()
    {
    int countElement = ArrayResize(stTampon, NbEntree );
       if (countElement < 0)
          Print("Erreur redimensionnement");
       Print("init");
       return(0);
    }
    
    int start()
    {
    tendance = 0;
    
    //indicateur programme
       superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,0,0);
       if (superTrend > 10000)
       {
          superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,1,0);
          tendance = 0; //"tendance descendante";
       }
       else
       {
          superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,0,0);
          tendance = 1; //"tendance montante";
       }
    
       Print("Couleur tendance : " + tendance);
       
    //initialisation du tableau avec les valeurs de l'indicateur
       if (cptTemps < NbEntree)
       {
          stTampon[cptTemps][0] = superTrend;
          stTampon[cptTemps][1] = tendance;
          cptTemps++;
       }
       
    //on décale les valeurs du tableau et 
    //on met la dernière valeur de l'indicateur dans la dernière entré du tableau
       if (cptTemps == NbEntree)
       {
          for(int cpt=0; cpt<NbEntree; cpt++)
          {
             if (cpt<NbEntree- 1)
             {
                stTampon[cpt][0] = stTampon[cpt+1][0];
                stTampon[cpt][1] = stTampon[cpt+1][1];
                Print("stTampon " + cpt + " : " + stTampon[cpt][0] + " stTampon : "  + (cpt) + " : " + stTampon[cpt][1]);
             }
             else
             {
                stTampon[cpt][0] = superTrend;
                stTampon[cpt][1] = tendance;
                Print("stTampon " + cpt + " : " + stTampon[cpt][0] + " stTampon : "  + (cpt) + " : " + stTampon[cpt][1]);
             }
          }
          Print("On sort de la boucle");
       }
       if (superTrendChange(stTampon)==true)                    // si la tendance change alors superTrendChange = vrai
          tendanceChange = superTrendChange(stTampon);
          
       Print("tendanceChange : " + tendanceChange);
       
       Print("tendance confirmé : " + superTrendChange(stTampon));  
       
       if (tendanceChange==true && superTrendChange(stTampon)==false) // si la tendance est confirmé superTrendChange = faux et tendanceChange = vrai
       {
          CheckForClose();
          if (MathAbs(CalculateCurrentOrders())<3)
             CheckForOpen();
             
          Print("Couleur tendance 1 : " + tendance);
          tendanceChange = false;
       }
    }
    ...
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: stTampon 3 : 1.35677000 stTampon : 3 : 1.00000000
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: stTampon 2 : 1.35677000 stTampon : 2 : 1.00000000
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: stTampon 1 : 1.35677000 stTampon : 1 : 1.00000000
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: stTampon 0 : 1.35677000 stTampon : 0 : 1.00000000
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: Couleur tendance : 1.00000000
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: SuperTrend 0 : 1.35677000
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: tendance confirmé : 1
    2010.05.05 14:16:56 2010.04.12 00:04 Aupa_v10 EURUSD,M15: tendanceChange : 1
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 11 : 1.35677000 stTampon : 11 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 10 : 1.35677000 stTampon : 10 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 9 : 1.35677000 stTampon : 9 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 8 : 1.35677000 stTampon : 8 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 7 : 1.35677000 stTampon : 7 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 6 : 1.35677000 stTampon : 6 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 5 : 1.35677000 stTampon : 5 : 1.00000000
    2010.05.05 14:16:55 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 4 : 1.35677000 stTampon : 4 : 1.00000000
    2010.05.05 14:16:54 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 19 : 1.35677000 stTampon : 19 : 1.00000000
    2010.05.05 14:16:54 2010.04.12 00:03 Aupa_v10 EURUSD,M15: stTampon 18 : 1.35677000 stTampon : 18 : 1.00000000
    ...

  2. #2
    Membre lvl 5 aupa est sur la route de la réputation...
    Date d'inscription
    March 2010
    Messages
    7
    Pouvoir de réputation
    4

    Je suis vraiment bloquée ... Je suis vraiment bloquée ...

    Je suis vraiment bloquée à cause de ça. Pourriez-vous m'aider s'il vous plait.

  3. #3
    Membre lvl 5 lmyyyks est sur la route de la réputation...
    Date d'inscription
    May 2010
    Localisation
    Sydney
    Messages
    12
    Pouvoir de réputation
    4

    excuse-moi pour mon mauvais francais

    Code:
    int init()
    {
    int countElement = ArrayResize(stTampon, NbEntree );
       if (countElement < 0)
          Print("Erreur redimensionnement");
       Print("init");
       return(0);
    }
    
    int start()
    {
    tendance = 0;
    
    //indicateur programme
       superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,0,0);
       if (superTrend > 10000)
       {
          superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,1,0);
          tendance = 0; //"tendance descendante";
       }
       else
       {
          superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,0,0);
          tendance = 1; //"tendance montante";
       }
    
       Print("Couleur tendance : " + tendance);
       
    //initialisation du tableau avec les valeurs de l'indicateur
       if (cptTemps < NbEntree)
       {
          stTampon[cptTemps][0] = superTrend;
          stTampon[cptTemps][1] = tendance;
          cptTemps++;
       }
       
    //on décale les valeurs du tableau et 
    //on met la dernière valeur de l'indicateur dans la dernière entré du tableau
       if (cptTemps == NbEntree)
       {
          for(int cpt=0; cpt<NbEntree; cpt++)
          {
             if (cpt<NbEntree- 1)
             {
                stTampon[cpt][0] = stTampon[cpt+1][0];
                stTampon[cpt][1] = stTampon[cpt+1][1];
                Print("stTampon " + cpt + " : " + stTampon[cpt][0] + " stTampon : "  + (cpt) + " : " + stTampon[cpt][1]);
             }
             else
             {
                stTampon[cpt][0] = superTrend;
                stTampon[cpt][1] = tendance;
                Print("stTampon " + cpt + " : " + stTampon[cpt][0] + " stTampon : "  + (cpt) + " : " + stTampon[cpt][1]);
             }
          }
          Print("On sort de la boucle");
       }
       if (superTrendChange(stTampon)==true)                    // si la tendance change alors superTrendChange = vrai
          tendanceChange = superTrendChange(stTampon);
          
       Print("tendanceChange : " + tendanceChange);
       
       Print("tendance confirmé : " + superTrendChange(stTampon));  
       
       if (tendanceChange==true && superTrendChange(stTampon)==false) // si la tendance est confirmé superTrendChange = faux et tendanceChange = vrai
       {
          CheckForClose();
          if (MathAbs(CalculateCurrentOrders())<3)
             CheckForOpen();
             
          Print("Couleur tendance 1 : " + tendance);
          tendanceChange = false;
       }
    }
    je ne suis pas sur ce que tu veux faire, mais il me semble que ton code a des problemes logiques. Essaies de comprends le code ci-dessous, si c'est exactement ce que tu veux l'EA a faire, remplace la partie en rouge avec lui.
    Code:
    //indicateur programme
    for(cptTemps = 0;cptTemps < NbEntree; cptTemps++)
    {
       superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,0,cptTemps);
       if (superTrend > 10000)
       {
          superTrend = iCustom(Symbol(),0,"SuperTrend",NbDePeriodes,Multiplier,1,cptTemps);
          tendance = 0; //"tendance descendante";
       }
       else tendance = 1; //"tendance montante";
    
       Print("Couleur tendance : " + tendance);
       
       stTampon[cptTemps][0] = superTrend;
       stTampon[cptTemps][1] = tendance;
       }

  4. #4
    Membre lvl 25 pontch est sur la route de la réputation...
    Date d'inscription
    May 2010
    Messages
    46
    Pouvoir de réputation
    4

    J'ai un EA qui utilise un tableau similaire et j'avais eu aussi pas mal de probleme, de memoire la 2eme dimension commence a 1 et pas a zero ca pourrait un probleme que tu rencontre tab[1][0] donne rien par ex par contre tab[1][1] fonctionne.

    PAs sur a 100% vu que j'ai pas mon code en face de moi mais bon

    NB: pas sur du tout que la 2eme colomne commence a un mais ca avait resolu mon probleme en tout cas de ne plus utiliser zero.

Discussions similaires

  1. Vivendi boucle un emprunt obligataire de 1,2 milliard d'euros
    Par AFP dans le forum Actualité Forex
    Réponses: 0
    Dernier message: 24/11/2009, 20h50

Ajouter aux Favoris | Plan du site | Archives | Forex | Contact