Como codificar? - página 337

 
at120:
Olá Mladen!

Acho que a chamada do meu iCustom é correta, porque em teste e normal (exportar dados ou usar como indi)

funciona bem até o momento. Acho que o problema é que, como você mencionou, o valor é duplo/arranjo.

Quando eu agora uso um

mãe dupla1[];

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

e que uma -> mãe(mom1,Bars,20,i);

-> "mom" - conversa de parâmetro não permitida

Como posso escrever isto corretamente?

Muito obrigado e adeus, AT

Tente assim :

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

Olá Mladen!

Obrigado por sua ajuda!

Meu problema é que preciso do "const" porque outras partes do programa precisam dele...

Escrever "tudo" novo é muito trabalho, então a questão é, posso fazer o contrário,

para que a mãe1 trabalhe com a sub-função?

Muito obrigado e adeus, AT

 
at120:
Olá Mladen!

Obrigado por sua ajuda!

Meu problema é que preciso do "const" porque outras partes do programa precisam dele...

Escrever "tudo" novo é muito trabalho, por isso a questão é: posso fazer o contrário?

para que a mãe1 trabalhe com a sub-função?

Muito obrigado e adeus, AT

Você pode usar a função mãe como está (e o resto)

Basta mudar a mãe(mãe1,Bars,20,i); para mãe(mãe1,Bars,20,i);

 

então eu recebo o erro:

-> "mom1" - conversa de parâmetro não permitida

homem, isto é complicado... alguma outra idéia?

Obrigado e adeus, AT

 
at120:
então eu recebo o erro:

-> "mom1" - conversa de parâmetros não permitida

homem, isto é complicado... alguma outra idéia?

Obrigado e adeus, AT

Eu não entendo esse erro.

Veja o exemplo :

#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 sem nenhum erro

 

Olá Mladen!

Talvez seja por causa de uma função de {} para {}? (para conseguir as barras?) ou por causa de...

o outro ponto é: mom1 é um indi... mom1 = iCustom(NULL,0, "myIndi",0,i);

que eu chamo aqui: mom(mom1,Bars,20,i);

Obrigado por sua ajuda!!

Tchau, AT

 
at120:
Olá Mladen!

Talvez seja por causa de uma função de {} para {}... (para conseguir as Barras?) ou por causa de...

o outro ponto é: mom1 é um indi... mom1 = iCustom(NULL,0, "myIndi",0,i);

que eu chamo aqui: mom(mom1,Bars,20,i);

Obrigado por sua ajuda!!

Adeus, AT

Não, essa não pode ser a causa

Veja este exemplo :

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

}

Além disso, nenhum erro de compilação

 

Olá Mladen!

Talvez porque meu código seja mais parecido com este, e há um "erro"... :-/

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

}

);

Obrigado e adeus, AT

 
at120:
Olá Mladen!

Talvez porque meu código seja mais parecido com este, e há um "erro"... :-/

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

}

);
Obrigado e adeus, AT

em120

Em seu código mom1 é definido como duplo (variável dupla simples) e não como um array ou buffer.

Defina-o da mesma maneira que o "buffer" é definido, adicione-o na seção init aos buffers e estará OK (certifique-se de ajustar o número de buffers adequadamente)

 

Olá Malden!

Obrigado por seu apoio! ;-)

Mesmo quando eu escrevo o código como você me disse:

(Eu acho que sim...)

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

}

);

Portanto, quando uso a "Primeira" versão, não recebo nenhum valor...

Quando utilizo a segunda versão, recebo o erro... hmmm.

Só chamar a mãe1 funciona... mas este não é o valor certo...

Obrigado por sua ajuda!

Tchau, AT