![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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, ATEssayez comme ceci :
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
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, ATVous 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
puis j'obtiens l'erreur :
-> "mom1" - paramètre conversation non autorisé
C'est délicat... Une autre idée ?
Merci et au revoir, ATJe n'obtiens pas cette erreur
Voir l'exemple :
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
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, ATNon, cela ne peut pas être la cause
Voir cet exemple :
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
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);
}
);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