Come codificare? - pagina 337

 
at120:
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, 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); }
 

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

 
at120:
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, AT

Puoi 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

 
at120:
poi ottengo l'errore:

-> "mom1" - parametro conversazione non consentito

amico questo è complicato... qualche altra idea?

Grazie e ciao, AT

Non ottengo questo errore

Vedi l'esempio :

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

}

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

 
at120:
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, AT

No, non può essere questa la causa

Vedi questo esempio:

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

}

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

 
at120:
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

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