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

 
ALXIMIKS:
Regardez cet article, ce n'est pas aussi simple que ça en a l'air, et c'est généralement très utile.

J'ai jeté un coup d'œil. il me faudra une semaine pour l'étudier en détail. mais le pire, c'est que je n'ai pas trouvé d'endroits qui seraient liés à ma tâche. je ne colore pas les indicateurs, et je ne les modifie en aucune façon. je veux juste trouver les hauts et les bas sur les n-dernières barres. il y a un soupçon de similarité dans RSI_Extremums_Sample.mq4 mais je ne peux pas faire ce code. il y a beaucoup de choses inutiles, l'indicateur tire.... et je n'en ai pas besoin...
 
lottamer:

je l'ai regardé. il me faudra une semaine pour l'étudier en détail. mais le pire, c'est que je n'ai pas trouvé d'endroits qui seraient pertinents pour ma tâche. je ne colore pas les indicateurs, et je ne les modifie en aucune façon. je veux juste trouver les maxima et minima sur les n dernières barres. il y a un soupçon de similarité dans RSI_Extremums_Sample.mq4 mais je ne peux pas gérer ce code. c'est trop inutile, l'indicateur REWRITES.... et je n'en ai pas besoin...


3173
artmedia70 27.10.2013 15:42 #
Forexman77:

Est-il possible, avec la fonction " ArrayMaximum ", de calculer le maximum le plus proche d'un indicateur personnalisé ?

Ou ai-je besoin d'autres fonctions pour cela ?

J'ai essayé de cette façon :

Et rien ne sort. Gourous, pouvez-vous me dire comment faire ?

   for (i=2; i<nBars; i++) {                    
      double a=iCustom(NULL, 0, "EMAF",0,0,i+1);
      double b=iCustom(NULL, 0, "EMAF",0,0,i);
      double c=iCustom(NULL, 0, "EMAF",0,0,i-1);
      if ((a-b)*(b-c)<0) {
         if (b<c) {                                
            // Нашли донышко
            }
         if (b>c) {                           
            // Нашли пичок
            }
         }
      }   
Pour effectuer une recherche dans l'EA. PAS dans un indicateur.

 
lottamer:

La seule chose que je ne comprends pas est comment calculer les extrema de l'indicateur MACD, par exemple, au lieu des extrema du prix sur n périodes ?

Je pense que je dois changer HIGH et LOW en MACD dans le bloc clé... Mais je ne comprends pas comment... toutes mes tentatives pour faire l'idiot se sont soldées par un échec.

Je comprends que je dois créer un tableau MACD...

double MACDBuffer[] ;

J'ai également vu une telle chaîne dans d'autres conseillers experts.

mais je ne peux pas mesurer l'un sur l'autre...

Veuillez me conseiller sur la manière de procéder.


Article.
 

J'ai trouvé quelque chose de similaire dans le livre de Kim

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax(double& x[]) {
  if (ArraySize(x)>0) return(x[ArrayMaximum(x)]);
  else {
    Print("ArrayMax(): Массив пуст!");
    return(0);
  }
}

question : comment créer un tableau de valeurs d'indicateurs ?

 
lottamer:

J'ai trouvé quelque chose de similaire dans le livre de Kim

Question : comment créer un tableau de valeurs d'indicateurs ?

J'ai relu ce qui était demandé, je me suis trompé au début (

pour obtenir un tampon de données d'indicateur, vous pouvez

1) Exécuter une boucle en collectant les valeurs iMACD dans le tampon.

2) prenez le code source du MACD, il y a un tampon à cet endroit.

int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
   return(0);
  }
 
ALXIMIKS:

relire ce qui a été demandé, je me suis trompé au début(

Pour obtenir un tampon avec les données d'un indicateur vous pouvez :

1) Exécuter une boucle en collectant les valeurs iMACD dans le tampon.

2) prendre le code source du MACD où se trouve le tampon.


Comment visualiser le tampon, sinon je ne comprends pas ce qu'il faut en faire.....

Print(MACDBuffer[1]) ; ? ? il imprime zéro... pourquoi ? en théorie ce devrait être la valeur de la 1ère barre....

et autre chose... Pourquoi calculer le MACD en utilisant le MA alors qu'il existe une fonction directe iMACD ?

 
lottamer:


et comment visualiser le tampon sinon je ne comprends pas ce qu'il faut en faire....

Print(MACDBuffer[1]) ; ? ? il imprime zéro...pourquoi ? ce devrait être la valeur de la 1ère barre....

et autre chose... Pourquoi calculer le MACD en utilisant le MA, alors qu'il existe une fonction directe iMACD ?


Veuillez me dire ce dont vous avez besoin,

mais il devrait être plus clair, pour que même une personne muette puisse le comprendre.

 
ALXIMIKS:


Dites-moi ce que vous voulez,

mais d'une manière claire, pour que même l'idiot comprenne.

Je dois déterminer les valeurs minimales (comme sur l'image) et maximales de l'indicateur MACD pour un nombre donné de barres. (20 dans ce cas).

J'ai trouvé le code qui fait cela pour le prix, et j'ai bêtement essayé de remplacer HIGH LOW par MACD. mais rien ne fonctionne.....



 
artmedia70:
C'est le travail des DCs de donner une bonne histoire. Ils sont paresseux et blâment toujours les MCs.


Merci !
 
lottamer:

Je dois déterminer la valeur minimale (comme indiqué dans l'image) et maximale de l'indicateur MACD pour un nombre donné de barres. (20 dans ce cas).

J'ai trouvé un code qui fait cela pour le prix, et j'ai bêtement essayé de remplacer HIGH LOW par MACD. mais rien ne fonctionne.....

Insérer à la fin du MACD personnalisé.
   int max,min,maxlast,minlast;
   max = ArrayMaximum(MacdBuffer,20,1);
   min = ArrayMinimum(MacdBuffer,20,1);
   if (max!=maxlast){
      ObjectDelete  ("highline");   
      ObjectCreate  ("highline",1,WindowOnDropped( ) ,0,MacdBuffer[max],0,0);
   }
   if (min!=minlast){
      ObjectDelete  ("lowline");   
      ObjectCreate  ("lowline",1,WindowOnDropped( ) ,0,MacdBuffer[min],0,0);
   }

PS. bien que cela soit plus correct et meilleur :

   int max,min;
   static double maxlast,minlast;
   max = ArrayMaximum(MacdBuffer,20,1);
   min = ArrayMinimum(MacdBuffer,20,1);
   if (MacdBuffer[max]!=maxlast){
      maxlast=MacdBuffer[max];
      ObjectDelete  ("highline");   
      ObjectCreate ("highline",1,WindowOnDropped( ) ,0,MacdBuffer[max],0,0);
   }
   if (MacdBuffer[min]!=minlast){
      minlast=MacdBuffer[min];
      ObjectDelete  ("lowline");   
      ObjectCreate ("lowline",1,WindowOnDropped( ) ,0,MacdBuffer[min],0,0);
   }