Comment coder ? - page 337

 
at120:
Salut Mladen !

Je pense que l'appel de mon iCustom est correct, car en test et en normal (exportation de données ou utilisation comme indi)

cela fonctionne bien jusqu'à présent. Je pense que le problème est comme vous l'avez mentionné la valeur double/array.

Lorsque j'utilise maintenant un

double mom1[] ;

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

et qu'un -> mom(mom1,Bars,20,i) ;

-> "mom" - conversation de paramètres non autorisée

Comment puis-je écrire cela correctement ?

Merci beaucoup et au revoir, AT

Essayez comme ceci :

mom(mom1,Bars,20,i);[/PHP]

Also, change the mom function to be like this :

[PHP]double Mom(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); }
 

Salut Mladen !

Merci pour votre aide !

Mon problème est que j'ai besoin de la "const" parce que d'autres parties du programme en ont besoin...

Pour écrire "tout" nouveau est trop de travail, donc la question est, puis-je le faire dans l'autre sens,

pour que le mom1 fonctionne avec la sous-fonction ?

Merci beaucoup et au revoir, AT

 
at120:
Bonjour Mladen !

Merci pour votre aide !

Mon problème est que j'ai besoin de la "const" parce que d'autres parties du programme en ont besoin...

Pour écrire "tout" nouveau est trop de travail, donc la question est, puis-je le faire dans l'autre sens,

pour que la fonction mom1 fonctionne avec la sous-fonction ?

Merci beaucoup et au revoir, AT

Vous pouvez utiliser la fonction mom telle quelle (et le reste)

Changez simplement mom(mom1,Bars,20,i) ; en mom(mom1,Bars,20,i) ;

 

puis j'obtiens l'erreur :

-> "mom1" - paramètre conversation non autorisé

C'est délicat... Une autre idée ?

Merci et au revoir, AT

 
at120:
puis j'obtiens l'erreur :

-> "mom1" - paramètre conversation non autorisé

C'est délicat... Une autre idée ?

Merci et au revoir, AT

Je n'obtiens pas cette erreur

Voir l'exemple :

#property indicator_chart_window

double buffer[];

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

int deinit() { return(0); }

int start()

{

double mom = Mom(buffer,10,50,0);

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

}

Compile sans aucune erreur

 

Salut Mladen !

Peut-être que c'est à cause d'une fonction for {} ? (pour obtenir les Bars ?) ou à cause de...

l'autre point est : mom1 est un indi personnalisé... mom1 = iCustom(NULL,0, "myIndi",0,i) ;

que j'appelle ici : mom(mom1,Bars,20,i) ;

Merci pour votre aide !

Bye, AT

 
at120:
Salut Mladen !

Peut-être que c'est à cause d'une fonction for {} ? (pour obtenir les barres ?) ou à cause de...

l'autre point est : mom1 est un indi personnalisé... mom1 = iCustom(NULL,0, "myIndi",0,i) ;

que j'appelle ici : mom(mom1,Bars,20,i) ;

Merci pour votre aide !

Au revoir, AT

Non, cela ne peut pas être la cause

Voir cet exemple :

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); 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--)

{

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

double mom = Mom(buffer,10,50,i);

}

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

}

De plus, pas d'erreur de compilation du tout.

 

Salut Mladen !

Peut-être parce que mon code ressemble plus à ceci, et il y a une "erreur"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); 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--)

{

double mom1;

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

buffer = (

Mom(mom1,10,Bars,i);

);

}

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

}

);

Merci et au revoir, AT

 
at120:
Bonjour Mladen !

Peut-être parce que mon code ressemble plus à ceci, et qu'il y a une "erreur"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); 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--)

{

double mom1;

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

buffer = (

Mom(mom1,10,Bars,i);

);

}

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

}

);
Merci et au revoir, AT

at120

Dans votre code mom1 est défini comme un double (simple variable double) et non comme un tableau ou un tampon.

Définissez-la de la même manière que le "buffer", ajoutez-la dans la section init aux buffers et tout ira bien (assurez-vous d'ajuster le nombre de buffers de manière appropriée).

 

Salut Malden !

Merci pour ton soutien ! ;-)

Même, quand j'écris le code comme tu me l'as 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