CopyBuffer (OnStart..OnTick...OnInit)

 

Qual o motivo?

Quando executo: a chamada da função IMA, faço o copybuffer e coloco estes comandos no evento OnStart... Tudo funciona corretamente. (Sendo um script).

Contudo quando faço isso dentro do evento OnInit ou OnTick, recebo msg de erro com o código 4806. Se funciona corretamente no evento OnStart, não compreendo como recebo msg de não ter dados disponíveis (4806).

Alguém pode me ajudar? Obrigada ;-)

Estou usando o MT5 e servidor XPMT5-DEMO. 

 obs: Eu coloquei este post no fórum errado, o em inglês. O moderador me respondeu que somente devo usar no OnTick, contudo mesmo no OnTick a msg 4806 permanece.

 

Pierangela 

 
Pierangela:

Qual o motivo?

Quando executo: a chamada da função IMA, faço o copybuffer e coloco estes comandos no evento OnStart... Tudo funciona corretamente. (Sendo um script).

Contudo quando faço isso dentro do evento OnInit ou OnTick, recebo msg de erro com o código 4806. Se funciona corretamente no evento OnStart, não compreendo como recebo msg de não ter dados disponíveis (4806).

Alguém pode me ajudar? Obrigada ;-)

Estou usando o MT5 e servidor XPMT5-DEMO. 

 obs: Eu coloquei este post no fórum errado, o em inglês. O moderador me respondeu que somente devo usar no OnTick, contudo mesmo no OnTick a msg 4806 permanece.

 

Pierangela 

Olá Pierangela, por favor cole aqui no post exatamente como você está fazendo a chamada da função iMA.

Assim fica mais fácil para podemos identificar o problema.

Abraços,
Malacarne 

 
Pierangela:

Qual o motivo?

Quando executo: a chamada da função IMA, faço o copybuffer e coloco estes comandos no evento OnStart... Tudo funciona corretamente. (Sendo um script).

Contudo quando faço isso dentro do evento OnInit ou OnTick, recebo msg de erro com o código 4806. Se funciona corretamente no evento OnStart, não compreendo como recebo msg de não ter dados disponíveis (4806).

Alguém pode me ajudar? Obrigada ;-)

Estou usando o MT5 e servidor XPMT5-DEMO. 

 obs: Eu coloquei este post no fórum errado, o em inglês. O moderador me respondeu que somente devo usar no OnTick, contudo mesmo no OnTick a msg 4806 permanece.

 

Pierangela 

Olá Pierangela, algumas dicas para tentar resolver teu problema, que parece estar na declaração ou na disponibilização correta de dados antes do CopyBuffer():

1) Crie o manipulador do indicador dentro da OnInit() e não na OnTick().

2) Experimente antes de trabalhar com os dados de um manipulador verificar se eles realmente estão disponíveis, através da função BarsCalculated().

Acredito que fazendo essas duas verificações você irá encontrar a causa do problema.

 
figurelli:

Olá Pierangela, algumas dicas para tentar resolver teu problema, que parece estar na declaração ou na disponibilização correta de dados antes do CopyBuffer():

1) Crie o manipulador do indicador dentro da OnInit() e não na OnTick().

2) Experimente antes de trabalhar com os dados de um manipulador verificar se eles realmente estão disponíveis, através da função BarsCalculated().

Acredito que fazendo essas duas verificações você irá encontrar a causa do problema.

Bom dia! 

Figurelli,

Fiz os passos sugeridos e funcionou perfeitamente. Maravilha, pura felicidade ;-)

Malacarne,

Também obrigada, resolvi primeiro tentar os passos citados pelo Figurelli, para verificar se resolvia o problema, não tendo que retorná-lo para vc.

 

abcs, Pierangela 

Razão: