Discussion de l'article "Comment faire appel aux indicateurs dans MQL5" - page 2

 

Pour moi, il ne me permet pas de compiler le fichier.

Je ne sais pas s'il y a une idée de ce qui se passe.

Merci de votre compréhension,

Jordi

 
Merci pour cet énorme travail !
 

Merci !

Vous trouverez ci-dessous un exemple simple que j'ai mis au point en jouant.

S'il est erroné, veuillez me corriger et je le modifierai.

Ce que je trouve étrange, c'est que les valeurs ne semblent pas correspondre à une simple moyenne mobile sur le graphique.

################### Dans un script

int period = 21 ; // La moyenne mobile à 21 barres
int sampleSize = 100 ; //C'est le nombre de barres de données que vous voulez récupérer
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
period,// Période
0, // Décalage
MODE_SMA, // Méthode de calcul
PRICE_CLOSE // Calcul sur les prix de clôture
) ;


void OnTick()
{

// C'est le tableau dans lequel vos moyennes mobiles seront copiées.
// Chaque élément de ce tableau est une valeur de moyenne mobile
// Le premier élément de ce tableau (élément à la position 0) est le plus récent
// Le dernier élément est le dernier élément du tableau ArraySize() - 1
double movingAverageValues[] ;

ArraySetAsSeries(movingAverageValues, true) ;
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}

double currentMovingAverage = movingAverageValues[0] ;

double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1] ;


################################# Dans un EA (NOTE : le OnInit et le OnTick)

int OnInit(){

int period = 21 ; // La moyenne mobile à 21 barres

int sampleSize = 100 ; //C'est le nombre de barres de données que vous voulez récupérer
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
period, // Période
0, // Décalage
MODE_SMA, // Méthode de calcul
PRICE_CLOSE // Calcul sur les prix de clôture
) ;

}

OnTick()
{

// C'est le tableau dans lequel vos moyennes mobiles seront copiées.
// Chaque élément de ce tableau est une valeur de moyenne mobile
// Le premier élément de ce tableau (élément à la position 0) est le plus récent
// Le dernier élément est le dernier élément du tableau ArraySize() - 1
double movingAverageValues[] ;

ArraySetAsSeries(movingAverageValues, true) ;
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}

double currentMovingAverage = movingAverageValues[0] ;

double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1] ;

}

 
Excellent article
 
oui... il est plus facile d'inventer son propre indicateur et de l'intégrer dans le code du robot que de coder ces poignées à chaque fois... ennui