[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 640

 

Je n'arrive pas à comprendre ce qui ne va pas avec les tableaux (la condition est simple - acheter/vendre après le prochain pic du CCI lissé) :

La stratégie se compile sans erreur et n'écrit rien dans le journal au démarrage, mais aucun ordre n'est placé.

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 


double c1s[] ;
ArrayResize(c1b,PeriodS)

Vous déclarez un tableau et en modifiez un autre.

 
Roger:


double c1s[] ;
ArrayResize(c1b,PeriodS)

Vous déclarez un tableau et en modifiez un autre.


Merci, qu'est-ce qui ne va pas d'autre - ça n'a pas aidé.
 

Le tableau commence avec un élément zéro, donc l'expression

pour(i=1;i<=PériodeS;i++)

saute le zéro et n'écrit rien au dernier.

plus loin, seule cette expression sera exécutée dans la boucle

c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i) ;

le reste n'a pas de sens, après la boucle i est égal au maximum et donc toutes les valeurs seront nulles.

 
Craft:

ce qui ne va pas


comparer des doubles sans normalisation est incorrect... Essayez comme ça :

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

 
DDFedor:


comparer des doubles sans normalisation est incorrect... Essayez de cette façon :


Merci pour l'aide, les gars, mais ça ne marche toujours pas.
 
Roger:

Le tableau commence avec un élément zéro, donc l'expression

pour(i=1;i<=PériodeS;i++)

saute le zéro et n'écrit rien au dernier.

plus loin, seule cette expression sera exécutée dans la boucle

c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i) ;

le reste n'a pas de sens, après la boucle i est égal au maximum et donc toutes les valeurs seront nulles.


Que dois-je faire alors ? J'ai essayé for(i=0;i<=PeriodS;i++) - cela n'a pas fonctionné.
 
Craft:

Et alors ?

Mettez des imprimantes sur chaque variable à chaque point de code et regardez dans les journaux pour voir ce qui se passe à chaque étape.
 

Bonjour, Puis-je vous poser une question de débutant ? Lorsque j'ouvre une démo, le Conseiller Expert ouvre un ordre lorsque j'écris symbol() dans la fonction d'ouverture mais lorsque je le change en un symbole, par exemple EURUSD, j'obtiens un code d'erreur 133 et lorsque j'essaie de le vérifier - if (MarketInfo(Symbol(),MODE_TRADEALLOWED)==true)
{Alert(" !");}else{Alert(" ?");} - Il émet " !", c'est-à-dire que la transaction est autorisée... et simultanément 133. Quel est le problème ? Aucun EA n'ouvre une transaction si j'indique un certain symbole dans la fonction d'ouverture... J'ai tout essayé.

Merci d'avance. je suis ici pour ne pas encombrer le forum ;))

 
artmedia70:
Qui dit que ce sont des revirements et non des corrections ?

Désolé, je n'ai pas répondu tout de suite, mon ordinateur portable est complètement mort. J'espère que la dent ne fera plus mal, c'est une chose effrayante. Ma confession, je blâme le Babon, il fonctionne bien et l'indicateur NMAZZ est à blâmer, je ne me souviens pas où je l'ai téléchargé, mais il fonctionne toujours sur un graphique, mais je l'ai mis sur trois graphiques (5M, 30M, 4H) et c'est tout, l'ordinateur a gelé complètement, ou plutôt le terminal. J'ai commencé à supprimer les indicateurs des graphiques un par un et j'ai trouvé ce bug. Je ne sais pas ce qui ne va pas avec cet indicateur, mais au début, il fonctionnait bien. Et à propos du renversement ou de la correction, oui vous avez raison, c'est toujours sans équivoque un renversement, mais si à 30M, 1H et 4H le bâton change de couleur, alors si ce n'est pas un renversement, c'est une correction sans équivoque et vous pouvez gagner quelques bénéfices.