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
Por que você repete no OnCalculate o que estava no OnInit? Isso é um feitiço assim?)
É uma magia simples de copiar/colar))
OK, eu explicarei a você popularmente. Não é suficiente verificar a prontidão dos dados uma vez no inite. Como os dados são gerados de forma assíncrona (para não retardar o processo principal), é possível obter um erro de dados no momento da verificação no init (depende de muitos fatores).
Portanto, você deve verificar e (ou apenas) no cálculo e não iniciar os cálculos principais até que todos os dados necessários estejam disponíveis - ou seja, verificar até que estejam prontos em cada tick.
É uma magia simples de copiar/colar))
OK, eu explicarei a você popularmente. Não é suficiente verificar a prontidão dos dados uma vez no inite. Como os dados são gerados de forma assíncrona (para não retardar o processo principal), então, no momento da verificação no init, é bem possível obter um erro de dados (depende de muitos fatores).
É por isso que a verificação deve ser feita e(ou apenas) no cálculo e não iniciar os cálculos principais até que todos os dados necessários estejam disponíveis - ou seja, verificar até que estejam prontos em cada tique.
É disso que estamos falando, a função OnInit no indicador é uma farsa, ou os desenvolvedores não estão fazendo seu trabalho.
Copiar/colar é uma coisa ótima, eu mesmo o faço )).
Gritou e chamou de chukchi, mas o problema não foi resolvido!
Ainda não escrevi o download do histórico, mas os dados estão no terminal, e NÃO saem dele na primeira vez!
OK, interessante!
Os indicadores trabalham em seu próprio fio, as EAs em seu próprio fio. A menos, é claro, que seja uma única pedra fundamental.
Tudo acontece exatamente como está escrito na documentação. :)
Eu desenhei um indicador e a EA para testes + o resultado no vídeo.
1) Primeiro traço um Expert Advisor em um gráfico com a função OnTick funcionando por 20 segundos.
O resultado é que o gráfico continua funcionando e exibe tudo como deveria ser. O gráfico também funciona como esperado.
2) Depois aplicamos ao gráfico o indicador que tem a funçãoOnCalculate durante 20 segundos.
O resultado - o bate-papo fica pendurado. Ao mesmo tempo, a próxima janela de bate-papo com o mesmo símbolo e um período diferente também é suspensa. O vidro continua a funcionar como deveria. Depois que a função tiver funcionado, tudo volta ao normal.
3) O vídeo não o tem - mas se você jogar o indicador em um chat (set 60 seg), e o especialista no outro - o especialista não começa a trabalhar até que o indicador no outro chat falhe!
Anexei o vídeo separadamente - ele é lento no meu navegador.
Tudo acontece exatamente como diz na documentação. :)
Esboçou um indicador e um Expert Advisor para verificação + o resultado no vídeo.
1) Primeiro eu o lanço para o gráfico do Expert Advisor que tem a função OnTick dentro dele que funciona por 20 segundos.
O resultado é que o gráfico continua funcionando e exibe tudo como deveria ser. O gráfico também funciona como esperado.
2) Depois aplicamos ao gráfico o indicador que tem a funçãoOnCalculate durante 20 segundos.
O resultado - o bate-papo fica pendurado. Ao mesmo tempo, a próxima conversa com o mesmo símbolo, que tem um período diferente, também é suspensa. O vidro continua a funcionar como deveria. Depois que a função tiver funcionado, tudo volta ao normal.
3) O vídeo não o mostra - mas se você lançar um indicador em um chat (set 60 seg), e um EA no outro - o EA não começa a funcionar até que o indicador funcione mal em outro chat!
Anexei o vídeo separadamente - ele está diminuindo a velocidade no meu navegador.
Obrigada, não consigo ver um vídeo, vou dar uma olhada nele.
Se você estiver tentando obter dados do ambiente comercial ao trabalhar com o indicador, não tente nem mesmo definir consultas no OnInit(). Faça consultas e verifique a resposta em OnCalculate(). Ao receber dados de outro símbolo ou de outro período de tempo, é quase garantido que mesmo na OnCalculate você não conseguirá receber dados desde a primeira vez. É por isso que você deve verificar o retorno dos valores. Se nenhum valor for obtido, tente obter dados sobre o próximo tick em OnCalculate().
Também já é interessante a resposta do servicedesk - o código que foi fornecido.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
FORTES Por favor, ajude
alexvd, 2015.03.26 15:48
O código fonte lhe foi dado pela servisdesk. Tente colocar seu último código na função Teste().Já com interesse esportivo - o autor continua escrevendo seu próprio código e ignora o código servicedesk?
Se você estiver tentando obter dados do ambiente comercial ao trabalhar com o indicador, não tente nem mesmo definir consultas no OnInit(). Faça solicitações e verifique a resposta em OnCalculate(). Ao receber dados de outro símbolo ou de outro período de tempo, é quase garantido que mesmo na OnCalculate você não conseguirá receber dados desde a primeira vez. É por isso que você deve verificar o retorno dos valores. Se nenhum valor for recebido, tente receber dados sobre o próximo tick em OnCalculate().
++++ e assim por diante até o final. Isto é, se não houver dados, retornar;
Depende do que se deve consultar. E quantas consultas - depende inteiramente das preferências do autor do código.
Você entende que
Se houver dados no terminal, então a função
não deve retornar FALSO?
P/S o código SD também não funciona desde a primeira vez!
EM UM LUGAR.
da ajuda:
SérieInfoInteger
Retorna informações sobre o estado dos dados históricos. Existem 2 variantes da função.
Segunda variante:
SERIES_TERMINAL_FIRSTDATE.
Primeira data na história de acordo com o símbolo no terminal do cliente, independentemente do período
data/hora
A FUNÇÃO NÃO DEVE RETORNAR FALSOS SE HOUVER DADOS NO TERMINAL!!!
Não importa de onde você chama isso!