![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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, ATTente assim :
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
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, ATVocê 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
então eu recebo o erro:
-> "mom1" - conversa de parâmetros não permitida
homem, isto é complicado... alguma outra idéia?
Obrigado e adeus, ATEu não entendo esse erro.
Veja o exemplo :
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
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, ATNão, essa não pode ser a causa
Veja este exemplo :
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
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);
}
);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