Penso che la chiamata del mio iCustom sia giusta, perché in test e normale (esportazione di dati o uso come indi)
funziona bene finora. Penso che il problema sia come hai menzionato il valore double/array.
Quando ora uso un
doppio mom1[];
mom1 = iCustom(NULL,0, "myIndi",0,i);
e che un -> mom(mom1,Bars,20,i);
-> "mom" - parametro conversazione non consentito
Come faccio a scrivere questo correttamente?
Grazie mille e ciao, AT
Prova così :
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); }
Forse perché il mio codice è più simile a questo, e c'è un "errore"... :-/
#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);
}
);
Grazie e ciao, AT
a120
Nel tuo codice mom1 è definito come doppio (semplice variabile doppia) non come array o buffer.
Definiscilo nello stesso modo in cui è definito il "buffer", aggiungilo nella sezione init ai buffer e sarà OK (assicurati di regolare il numero di buffer in modo appropriato)
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Ciao Mladen!
Penso che la chiamata del mio iCustom sia giusta, perché in test e normale (esportazione di dati o uso come indi)
funziona bene finora. Penso che il problema sia come hai menzionato il valore double/array.
Quando ora uso un
doppio mom1[];
mom1 = iCustom(NULL,0, "myIndi",0,i);
e che un -> mom(mom1,Bars,20,i);
-> "mom" - parametro conversazione non consentito
Come faccio a scrivere questo correttamente?
Grazie mille e ciao, ATProva così :
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); }Ciao Mladen!
Grazie per il tuo aiuto!
Il mio problema è che ho bisogno del "const" perché altre parti del programma ne hanno bisogno...
Scrivere "tutto" nuovo è troppo lavoro, quindi la domanda è: posso fare il contrario?
in modo che il mom1 funzioni con la sottofunzione?
Grazie mille e ciao, AT
Ciao Mladen!
Grazie per il vostro aiuto!
Il mio problema è che ho bisogno del "const" perché altre parti del programma ne hanno bisogno...
Scrivere "tutto" nuovo è troppo lavoro, quindi la domanda è: posso fare il contrario?
in modo che il mom1 funzioni con la sottofunzione?
Grazie mille e ciao, ATPuoi usare la funzione mom così com'è (e il resto)
Basta cambiare il mom(mom1,Bars,20,i); in mom(mom1,Bars,20,i);
poi ottengo l'errore:
-> "mom1" - parametro conversazione non consentito
amico questo è complicato... qualche altra idea?
Grazie e ciao, AT
poi ottengo l'errore:
-> "mom1" - parametro conversazione non consentito
amico questo è complicato... qualche altra idea?
Grazie e ciao, ATNon ottengo questo errore
Vedi l'esempio :
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);
}Compila senza alcun errore
Ciao Mladen!
Forse è a causa di una funzione for {}? (per ottenere le barre?) o a causa di...
l'altro punto è: mom1 è un indice personalizzato... mom1 = iCustom(NULL,0, "myIndi",0,i);
che chiamo qui: mom(mom1,Bars,20,i);
Grazie per il tuo aiuto!
Ciao, AT
Ciao Mladen!
Forse è a causa di una funzione for {}? (per ottenere le barre?) o a causa di...
l'altro punto è: mom1 è un indice personalizzato... mom1 = iCustom(NULL,0, "myIndi",0,i);
che chiamo qui: mom(mom1,Bars,20,i);
Grazie per il vostro aiuto!
Ciao, ATNo, non può essere questa la causa
Vedi questo esempio:
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);
}Inoltre, nessun errore del compilatore
Ciao Mladen!
Forse perché il mio codice è più simile a questo, e c'è un "errore"... :-/
#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);
}
);Grazie e ciao, AT
Ciao Mladen!
Forse perché il mio codice è più simile a questo, e c'è un "errore"... :-/
#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);
}
);a120
Nel tuo codice mom1 è definito come doppio (semplice variabile doppia) non come array o buffer.
Definiscilo nello stesso modo in cui è definito il "buffer", aggiungilo nella sezione init ai buffer e sarà OK (assicurati di regolare il numero di buffer in modo appropriato)
Ciao Malden!
Grazie per il tuo sostegno ;-)
Anche quando scrivo il codice come mi hai detto:
(Penso di sì...)
#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);
}
);Quindi quando uso la "prima" versione, non ottengo nessun valore...
Quando uso la seconda versione, ottengo l'errore... hmmm.
Solo chiamare il mom1 funziona... ma questo non è il valore giusto...
Grazie per il vostro aiuto!
Ciao, AT