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
3. ponto de análise interessante, o que retorna CopyClose(), eu mesmo verifiquei, se não há arquivo .hst para o TF solicitado, CopyClose() nunca retorna mais do que 2048 - ou seja, este é o valor máximo que pode ser baixado?
No. 2048 é a parte dos dados que é baixada do servidor quando não há nenhum arquivo no cliente.
O nº 2048 é um pedaço de dados que é baixado do servidor quando não há dados sobre o cliente.
Hm, eu venho fazendo MQLs há muito tempo, mas isso ainda é inesperado para mim.
OK, aqui está um exemplo da ajuda:https://www.mql5.com/ru/docs/series/timeseries_access
diz isso:
A próxima verificação importante é verificar o tipo de programa a partir do qual a função é chamada. Lembre-se que enviar um pedido de atualização de séries cronológicas com o mesmo período que o indicador que chama a atualização é altamente indesejável. A indesejabilidade de solicitar dados do mesmo período-símbolo, como o indicador, porque a atualização dos dados históricos é feita no mesmo fio, no qual o indicador funciona. Portanto, há uma alta probabilidade de um confronto. Para verificá-lo, usamos a funçãoMQL5InfoInteger() com modificadorMQL5_PROGRAM_TYPE.
ou seja, exemplohttps://www.mql5.com/ru/code/449
não é adequado para carregar dados do histórico no indicador MT4, e como posso baixar todo o histórico pelo indicador, se não houver um arquivo .hst preparado, ou seja, o indicador inicializa o carregamento do histórico por seu próprio símbolo
como posso saber que aqui eu "baixei" toda a história igual a iBars(Symbol(),PERIOD_CURRENT);
iBars() também retornará um valor incorreto? - ainda não há história, portanto não há iBars()
parece que no MT5 o histórico é baixado sem problemas, você só precisa esperar e verificar o status dos dados históricos, mas no MT4?
PS: em kodobase ontem eu estava procurando por um indicador de múltiplas moedas que funcionasse corretamente para MT4, mas os códigos não estão sujeitos a imitação, em muitos exemplos de kodobase, em geral não há histórico de paginação no indicador
Em quádruplos, a "chave de casa foi pressionada". Não há outra maneira. Se você tem estudado o tema há algum tempo, você deve se lembrar da frase "tijolo no teclado".
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Você pode conferir meu downloader gratuito.
Você pode ver meu download gratuito.
Como você sugere que eu olhe seu código? Eu sei como baixar o histórico, mas não sei como verificar o indicador de download.
Em quádruplo "pressione a tecla de casa". Não há outra maneira. Se você vem estudando o assunto há muito tempo, você deve se lembrar da frase "tijolo no teclado".
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Quando comecei a usar MQL nos últimos anos não aprendi nada sobre MQL, pois este ano estou realmente surpreso que os desenvolvedores fizeram a compatibilidade entre MT5 e MT4 o máximo possível e melhoraram o desempenho da MQL4 - mesmo que nos tenham dito antes que o MT4 como projeto não será mais desenvolvido, existem apenas bugs a serem corrigidos
e aqui estava a esperança de não ter encontrado informações sobre o carregamento automático do histórico no indicador MT4
Basicamente, se você quiser garantir o download de todo o histórico no MT4 e sem verificações adicionais, então é mais fácil usar o código dfix - escreva a data e hora da barra t=0 no arquivo .hst;
Então, como você sugere que eu veja seu código?
Pensei que você só precisava que o histórico fosse carregado automaticamente.
Para meu grande pesar, tenho que voltar ao tópico de obter dados da TF sênior no MT4. Desta vez, devido ao fato de que as técnicas aqui sugeridas não funcionaram.
Aqui está o código que usamos:
Ele implementa os dados de paginação conforme fui aconselhado:
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
[SERVICESDESK] Erro ao obter o tempo do TF mais antigo no temporizador!
Slava, 2018.09.27 06:20
Já foi discutido muitas vezes. 12 páginas em "erro 4066".
E você foi corretamente aconselhado a enviar o pedido no OnInit e analisá-lo no OnCalculate.
Para que você precisa de um temporizador de milissegundos? Você está impedindo que o terminal do cliente inicie normalmente. Não são as mensagens de vento que interferem no seu timer, é o seu timer que interfere com todos. Mais uma vez: OS INDICADORES NO TRABALHO TERMINAL MT4 DO CLIENTE EM POTENCIAL INTERFACE.
A implementação é exatamente assim: a primeira solicitação de dados ocorre no OnInit(). Depois, esperamos que a conexão com o servidor comercial seja estabelecida, depois em OnCalculate()! obtemos dados de alta TF. Hoje recebemos o resultado no primeiro lançamento:
Como podemos ver pelo registro, temos valores errados de hora e hora do dia.
Sim, os desenvolvedores(@Slava) podem notar que eu não apliquei todos os conselhos que me foram dados. Isto é, eu ainda corro um temporizador rápido no OnInit(), embora tenha sido aconselhado a correr um temporizador lento inicialmente. No entanto, neste caso, é feito de propósito. Se o temporizador rápido é iniciado na rosca de interface e pode retardar a recuperação de dados de outros indicadores - este é um grande problema. A documentação não contém nenhum aviso sobre isso, você pode colocar um programa com um temporizador rápido que pode se tornar uma espécie de "vírus" e causar "avarias" de outros programas.
Em vista do exposto acima, acredito que devemos introduzir restrições no temporizador de milissegundos ou especificar na documentação do EventSetMillisecondTimer() que a função não pode ser iniciada no OnInit() para permitir que o terminal se eleve normalmente na partida.
Agora, para a parte divertida. O código é sem temporizadores:
E você ainda não pode obter o resultado que deseja. Os desenvolvedores(@Slava), por favor comentem. É impossível obter dados corretos ao carregar o terminal a partir de vários TFs superiores. A condição obrigatória é que o terminal esteja desligado mais de uma hora após o desligamento (porque obtemos dados para uma barra de uma hora). E, é claro, a partida na TF em menos de uma hora.
O cronômetro acabou não sendo envolvido.