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

 
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.....


Copiez les données MACD dont vous avez besoin dans le tableau massMACD[20] et trouvez les valeurs minimum ArrayMinimum(massMACD) ; et
maximum ArrayMaximum(massMACD) ; dans ce tableau.
 
ALXIMIKS:
Insérer à la fin du macdac personnalisé.

P.S. Même si c'est plus correct et mieux :


si c'est le cas, cela ne fonctionne pas....

double MACDBuffer[];
double SignalBuffer[];

 
 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,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,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,9,0,MODE_SMA,i);
        //t=MACDBuffer[0];
        //Print(t*10000);
//---- done
  
  
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);
      Print(min,max);
   }
    return(0);
  }
 
artmedia70:
Copiez vos données MACD requises dans le tableau massMACD[20] et trouvez dans ce tableau
minimum ArrayMinimum(massMACD) ; et
le maximum ArrayMaximum(massMACD) ; valeurs.


bien.

la seule question est de savoir COMMENT ils copient les données dans le tableau ?

for(int i=1; i<20; i++)
      MACDBuffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);

ou comme ça ?

   MACDLineBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);
 
lottamer:


si c'est le cas, cela ne fonctionne pas....

A la fin du MACD personnalisé:

Navigateur ==> Indicateurs personnalisés ==> MACD ==> PCM (bouton droit de la souris) ==> Editer ==>

 
lottamer:


super.

la seule question est de savoir COMMENT ils copient les données dans le tableau ?

ou comme ça ?


mec, c'est la même chose, c'est juste que l'appel à iMACD prend autant de ressources que son code source.

iMACD et tous les iCostums renvoient la valeur d'un membre du tableau, vous devez donc les parcourir en boucle et les collecter dans un tampon pour une opération ultérieure.

  MACDLineBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);

Ce n'est pas vrai, car vous n'obtenez qu'une seule valeur et vous avez besoin de 20, donc utilisez une boucle :

for(int i=1; i<20; i++)
      MACDLineBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);

 
ALXIMIKS:

A la fin du MACD personnalisé:

Navigateur ==> Indicateurs personnalisés ==> MACD ==> PCM (bouton droit de la souris) ==> Editer ==>

ça marche :)

Seulement, il ne fait certainement pas ce dont j'ai besoin, mais je vais essayer de m'en servir comme exemple.

merci

 

Commençons par le début.

int start()
  {
  
    
for(int i=0; i<20; i++)
MACDBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);

Est-ce suffisant pour copier 20 (19 ou autre) valeurs d'indicateurs dans un tableau ?

 
lottamer:

Commençons par le début.

est-il suffisant de copier 20 (19 ou autre) valeurs d'indicateurs dans un tableau ?

Soyons clairs, si quelqu'un a besoin de quelque chose et que je sais quelque chose, je suis heureux d'essayer d'aider cette personne,

mais je ne vais pas leur essuyer le cul après chaque pet.

Oui, c'est suffisant si vous avez déclaré le tableau statique double MACDBuffer[20] et pas suffisant si vous avez déclaré le tableau dynamique double MACDBuffer[].

artmedia70 vous l'a dit .

 
ALXIMIKS:

Soyons clairs, si quelqu'un a besoin de quelque chose et que je sais quelque chose, je suis heureux d'essayer d'aider cette personne,

Mais je ne vais pas lui essuyer le cul après chaque pet.

Oui, c'est suffisant si vous avez déclaré le tableau statique double MACDBuffer[20] et pas suffisant si vous avez déclaré le tableau dynamique double MACDBuffer[].

artmedia70 vous l'a dit .


OK, rendons-le statique.

double MACDBuffer[20];

double min,max;
 
  
 int start()
  {
 
   for(int i=0; i<20; i++)
      MACDBuffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);

   min=ArrayMinimum(MACDBuffer);
   max=ArrayMaximum(MACDBuffer);
  
  Print(min,"____",max);

Pourquoi est-ce qu'il imprime 19__0 ? ???

 
lottamer:


Ok, que ce soit statique.

Pourquoi est-ce qu'il imprime 19__0 ? ???


parce que ça marche bien. Autre chose ?