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

 
Craft:

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


Comme on vous l'a déjà dit

   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);

iMAOnArray est exécuté en dehors de la boucle (comme il se doit). Par conséquent, i+2 = PériodeB + 2. Pour ArrayResize(c1b,PeriodB) ;

Et en fait... remplacez votre "i+" par 0,2,3.

 
SergNF:


Comme il vous a déjà été écrit

iMAOnArray est exécuté en dehors de la boucle (comme il se doit). Par conséquent, i+2 = PériodeB + 2. Pour ArrayResize(c1b,PeriodB) ;

Et en fait... Remplacez votre "i+" par 0,2,3.


Merci, j'ai fait tout ce que vous m'avez dit, mais maintenant pourquoi les commandes ne sont-elles pas passées ?

Je l'ai essayé avec et sans normalisation.

   double c1b[];
   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,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   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,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);

 //if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
 if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          // 
      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))
if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 
gordeef:

Désolé, je n'ai pas répondu tout de suite, mon ordinateur portable est complètement mort. J'espère que ma dent ne me fera plus mal, c'est une chose effrayante. J'avoue, je blâmais Babon, il fonctionne bien, mais le défaut indicateur NMAZZ, je ne me souviens pas où je l'ai téléchargé, mais sur un graphique il fonctionne encore, mais je l'ai mis sur trois graphiques (5M, 30M, 4H) et tous, 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 concernant le renversement ou la correction, oui vous avez raison, c'est toujours un renversement mais si à 30M, 1H et 4H le bâton change de couleur, si ce n'est pas un renversement, alors la correction est certaine et nous pouvons faire quelques profits.
Oui... Une dent douloureuse fait des merveilles... Où que vous alliez avec ça... :) Si vous aimez un indicateur et que vous voulez travailler avec lui - soit iCustom, soit dans le code du conseiller expert, je pense. Mais en ce qui concerne le TP de tendance, faites attention, vous pouvez l'acheter à la fin du mouvement, c'est-à-dire avant le retournement. Alors l'élan sera suspendu en l'air (comme moi hier avec une mauvaise dent... :))). Je travaille sur la définition de l'épuisement de la tendance en ce moment, j'espère pouvoir partager les résultats.
 
Craft:


Merci, j'ai fait tout ce que vous avez dit, mais maintenant pourquoi les commandes ne sont-elles pas passées ?

J'ai essayé à la fois avec et sans normalisation.


Dans ce cas, il suffit d'un "unpriming" après les deux "if" pour voir si l'erreur se trouve dans ce bloc ou pas (y compris Opn_B et Cls_S). Une ligne et vous saurez tout.

Je ne sais pas, peut-être que vous les réaffectez (Opn_B et Cls_S) après coup ou que vous utilisez des variables complètement différentes à l'ouverture.

 
artmedia70:
Oui... Une mauvaise dent peut faire des merveilles... Où que vous alliez avec ça... :)

Vous n'avez pas essayé de traitement. Ils disent que ça marche.
 
Vinin:

Avez-vous essayé un traitement ? Ils disent que ça aide.
Oh, oui ! On vit et on apprend... ;) Seulement la nuit, nous ne pouvons pas trouver de dentistes à Zakolyuchinsk... J'ai dû utiliser des remèdes populaires...
 

Les gars, je comprends que les miracles n'arrivent pas, mais je ne peux pas gagner... Je regarde déjà sous la table pour voir si Hottabych est assis là... :)

J'ai essayé d'afficher certaines données EA dans la fenêtre de l'indicateur et j'ai décidé d'afficher les tendances dans la même fenêtre. Je calcule les tendances avec ma fonction, qui renvoie des valeurs int -1, 0 et +1. Par conséquent, la tendance à la baisse = 1, le plat = 0, la tendance à la hausse = 1. J'ai remarqué que les flèches apparaissent comme elles le souhaitent, mais pas dans le sens des tendances sur les différents TF. J'ai donc commenté les flèches pendant un long moment et les ai remplacées par la sortie de la valeur renvoyée par la fonction trend. A deux endroits du code, j'ai placé la sortie de l'état retourné par cette fonction. Elle renvoie son état correctement ; dans le coin supérieur gauche du graphique, les valeurs de la fonction sont affichées directement après l'appel de cette fonction. En dessous, dans la fenêtre de l'indicateur, les valeurs de la fonction sont également affichées. Les chiffres sont corrects, mais la quatrième valeur de la fonction, qui par définition ne renvoie que trois chiffres, est prise quelque part... Donc, à cette quatrième valeur, la fenêtre de l'indicateur affiche le message "Fuck you"... Eh bien, je l'ai déjà écrit moi-même sous le coup de la colère... :)

Aidez-moi à comprendre quel est le problème ? Je ne veux pas croire en Hassan Obdurahman ibn Hottab... :) :)

   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

Ici, j'ai déjà essayé de vérifier les quatre états, pas seulement -1, 1 et else...

Et c'est ce que ça donne pour moi - autre chose...

trM15 est une variable, à laquelle est attribuée une valeur renvoyée par la fonction de tendance.

Dans l'image, vous pouvez voir que les valeurs sont retournées correctement, mais que l'"inscription amusante" est imprimée, ce qui n'est le cas que si else

J'ai déjà la tête dans les nuages...

 
artmedia70:

Les gars, je comprends que les miracles n'arrivent pas, mais je ne peux pas gagner... Je regarde déjà sous la table pour voir si Hottabych est assis là... :)

J'ai essayé d'afficher certaines données EA dans la fenêtre de l'indicateur et j'ai décidé d'afficher les tendances dans la même fenêtre. Je calcule les tendances avec ma fonction, qui renvoie des valeurs int -1, 0 et +1. Par conséquent, la tendance à la baisse = 1, le plat = 0, la tendance à la hausse = 1. J'ai remarqué que les flèches apparaissent comme elles le souhaitent, mais pas dans le sens des tendances sur les différents TF. J'ai donc commenté les flèches pendant un long moment et les ai remplacées par la sortie de la valeur renvoyée par la fonction trend. A deux endroits du code, j'ai placé la sortie de l'état retourné par cette fonction. Elle renvoie son état correctement ; dans le coin supérieur gauche du graphique, les valeurs de la fonction sont affichées directement après l'appel de cette fonction. En dessous, dans la fenêtre de l'indicateur, les valeurs de la fonction sont également affichées. Les chiffres sont corrects, mais la quatrième valeur de la fonction, qui par définition ne renvoie que trois chiffres, est prise quelque part... Ainsi, à cette quatrième valeur, la fenêtre de l'indicateur affiche le message "Fuck you"... Eh bien, je l'ai déjà écrit moi-même sous le coup de la colère... :)

Aidez-moi à comprendre quel est le problème ? Je ne veux pas croire en Hasan Obdurahman ibn Hottab... :) :)

Ici, j'ai déjà essayé de vérifier les quatre états, pas seulement -1, 1 et else...

Et c'est ce que ça donne pour moi - autre chose...

trM15 est une variable, à laquelle est attribuée une valeur renvoyée par la fonction de tendance.

Dans l'image, vous pouvez voir que les valeurs sont retournées correctement, tandis que l'"inscription amusante" est affichée que seulement si else

J'ai déjà la tête dans les nuages...



C'est vrai.

ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

Vous pouvez essayer cette variante

 
Vinin:


C'est vrai.

Vous pouvez essayer ceci

OK. Merci, Victor. Jusqu'à présent, cela fonctionne correctement. Jusqu'à présent, car je ne l'ai pas suivi depuis longtemps, mais je n'ai JAMAIS eu de sortie Trend Up pour moi auparavant. C'est maintenant :


Je savais qu'il y avait toujours un sorcier plus puissant pour un aspirant sorcier... :)

Bien sûr, c'est une blague, mais... Victor, je ne veux pas seulement copier la bonne solution, mais trouver et comprendre où se situe le problème, quelle est la raison du comportement d'un code aussi incompréhensible ?

 
artmedia70:
Oui... Une mauvaise dent peut faire des merveilles... Où que vous alliez avec ça... :) Si vous aimez un indicateur et que vous voulez travailler avec lui - soit iCustom soit un code EA, je pense. Mais en ce qui concerne le TP de tendance, faites attention, vous pouvez l'acheter à la fin du mouvement, c'est-à-dire avant le retournement. Alors l'élan sera suspendu en l'air (comme moi hier avec une mauvaise dent... :))). Je travaille sur la définition de l'épuisement de la tendance en ce moment, j'espère pouvoir partager les résultats.

Ouais, j'essaie d'être prudent sur les renversements et les corrections comme c'est le cas. Mais concernant l'épuisement de la tendance, cela m'intéresse aussi, j'ai parcouru le forum et regardé la CodeBase mais je n'ai pas rencontré d'indices sur ce thème. Il sera intéressant de lire vos résultats. Je veux demander quelque chose d'autre, ils m'ont envoyé un EA qui contrôle mes pertes et profits, comme dans l'image cela devrait fonctionner, mais la question est, il a un profit de 15 points et je vois que le prix peut aller plus loin.
Raison: