Comment coder ? - page 338

 
at120:
Bonjour Malden !

Merci pour votre soutien ! ;-)

Même, quand j'écris le code comme vous me l'avez dit :

(Je pense que oui...)

#property indicator_chart_window

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

//doesn't work - no value in indi

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Donc, quand j'utilise la "Première" version, je n'obtiens aucune valeur..

Quand j'utilise la deuxième version, j'obtiens l'erreur... hmmm.

Seul l'appel de mom1 fonctionne... mais ce n'est pas la bonne valeur...

Merci pour votre aide !

Au revoir, AT

Remplacez le "custom name" par le nom de votre indicateur (indicateur existant), ajoutez des paramètres à l'appel iCustom(), et cela fonctionnera. Ce nom a été placé là juste à titre d'exemple

Aussi, vous n'avez pas défini le nombre de buffers (ni en utilisant #property indicator_buffers ni en utilisant la fonction IndicatorBuffers()) L'indicateur "pense" qu'il y a 0 buffers et il n'initialisera jamais ces boules à la taille réelle. Définissez le nombre de tampons que vous allez utiliser.

_______________________

 

Salut Mladen !

Merci pour votre information... J'ai déjà fait cela... Le code ressemble à ceci :

#property indicator_separate_window

#property indicator_color3 Red

#property indicator_width1 3

#property indicator_buffers 3

#property indicator_color1 LawnGreen

#property indicator_color2 Red

#include // here the mom() function is incl.

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"myIndi",0,i);

buffer = (

Mom(mom1,10,Bars,i); //doesn't work - no value in indi

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works, but no subfunction incl.

);

}

return(0);

}

//normaly in mqh incl.

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

L'erreur de conversation est toujours là...

Merci pour votre aide !

Au revoir, AT

 
at120:
Bonjour Mladen !

Merci pour votre information... Je l'ai déjà fait... Le code ressemble à ceci :

#property indicator_separate_window

#property indicator_color3 Red

#property indicator_width1 3

#property indicator_buffers 3

#property indicator_color1 LawnGreen

#property indicator_color2 Red

#include // here the mom() function is incl.

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"myIndi",0,i);

buffer = (

Mom(mom1,10,Bars,i); //doesn't work - no value in indi

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works, but no subfunction incl.

);

}

return(0);

}

//normaly in mqh incl.

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

L'erreur de conversation est toujours là...

Merci pour votre aide !

Au revoir, AT

Voici une version sans aucune erreur de compilation : _test.mq4

Je n'ai aucune idée de ce qu'est "myIndi" donc je ne peux pas tester si iCustom() renvoie les valeurs de votre indicateur "myIndi".

Dossiers :
copiler.gif  52 kb
_test.mq4  2 kb
 

Salut Mladen !

Mon indi est une sortie normale du JMA.mq4 / JMA Indi.

Il pourrait également s'agir d'une sortie MA ou de n'importe quoi d'autre. "myIndi" n'est pas un indi spécial.

Et l'appel de l'indi fonctionne dans une fenêtre indi normale...

Mon code ressemble à ceci :

#property indicator_separate_window

#property indicator_color3 Red

#property indicator_width1 3

#property indicator_buffers 3

#property indicator_color1 LawnGreen

#property indicator_color2 Red

#include // here the mom() function is incl.

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"JMA",0,i); //normal JMA / MA output

// I get this out put, and it's ok, but the second output (buffer) is zero...

buffer = (

Mom(mom1,10,Bars,i); //no compiler error, but doesn't work - no value in indi window

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works, but it's the value i want

);

}

return(0);

}

//normaly in mqh incl.

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Je n'obtiens pas l'échec que j'ai fait...

Merci beaucoup pour votre aide !

Au revoir, AT

 

Salut Mladen !

Quand je l'écris ou le modifie comme ceci...

Je reçois aussi l'erreur de conversation... des idées... ?

Merci beaucoup !

Bye, AT

#property indicator_separate_window

#property indicator_color3 Red

#property indicator_width1 3

#property indicator_buffers 3

#property indicator_color1 LawnGreen

#property indicator_color2 Red

//#include // here the mom() function is incl.

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

//normaly in mqh incl.

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iMA(Symbol(),Period(),13,8,MODE_SMMA,PRICE_MEDIAN,i); //normal JMA / MA output

// I get this out put, and it's ok, but the second output (buffer) is zero...

buffer = (

// Mom(mom1,10,Bars,i) //no compiler error, but doesn't work - no value in indi window

Mom(mom1,10,Bars,i) //error: parameter conversation not allowed

// mom1 // this works, but it is NOT the value i want

);

}

return(0);

}

 
at120:
Salut Mladen !

Quand je l'écris ou le modifie comme ceci...

Je reçois également l'erreur de conversation... des idées... ?

Merci beaucoup !

Bye, AT

#property indicator_separate_window

#property indicator_color3 Red

#property indicator_width1 3

#property indicator_buffers 3

#property indicator_color1 LawnGreen

#property indicator_color2 Red

//#include // here the mom() function is incl.

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

//normaly in mqh incl.

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iMA(Symbol(),Period(),13,8,MODE_SMMA,PRICE_MEDIAN,i); //normal JMA / MA output

// I get this out put, and it's ok, but the second output (buffer) is zero...

buffer = (

// Mom(mom1,10,Bars,i) //no compiler error, but doesn't work - no value in indi window

Mom(mom1,10,Bars,i) //error: parameter conversation not allowed

// mom1 // this works, but it is NOT the value i want

);

}

return(0);

}

at120

Vous ne pouvez pas utiliser un élément qui évolue vers le double alors que le paramètre attendu est censé être const double[]. Au lieu d'utiliser "maman1", utilisez "maman1".

 

Bonjour Mladen !

Merci pour la réponse, donc ma question maintenant est, comment "convertir" mon double en mon const double series[]

parce que lorsque j'utilise uniquement le mom1, j'obtiens un "0" en sortie...

Donc, comment puis-je faire en sorte que le mom1 "ressemble", par exemple, à la fermeture. Existe-t-il un exemple de code pour cela ?

Merci beaucoup et au revoir, AT

 
at120:
Bonjour Mladen !

Merci pour la réponse, donc ma question maintenant est, comment "convertir" mon double en mon const double series[]

car lorsque j'utilise uniquement le mom1, j'obtiens un "0" en sortie...

Donc, comment puis-je faire en sorte que le mom1 "ressemble", par exemple, à la fermeture. Existe-t-il un exemple de code pour cela ?

Merci beaucoup et au revoir, AT

Vous n'avez pas besoin de "convertir" quoi que ce soit. Dès que la partie "" est supprimée, elle "devient" un paramètre approprié.

Voici comment cela se présente sur le graphique :

Et voici le code : _test_2.mq4

Dossiers :
_test_2.mq4  1 kb
test.gif  64 kb
 

Salut Mladen !

Maintenant ça marche pour moi, il semble que j'ai oublié les IndicatorBuffers(2) ;

Maintenant, il semble que j'obtienne la bonne valeur !

Merci beaucoup pour votre aide !

Bye, AT

 

Quels tableaux doivent être déclarés comme const dans les paramètres des fonctions?