Erros, bugs, perguntas - página 2938

 
Uma vez que não há citações nos fins-de-semana, significa que o servidor não dá o histórico? Na minha opinião, esta é uma hipótese improvável, mas havia razões para pensar assim, porque aos fins-de-semana o indicador ou não funciona, ou após a tediosa e persistente comutação das TFs e a mudança dos parâmetros de entrada do indicador na janela de definições, os resultados há muito esperados foram obtidos, embora devessem ter acontecido em quaisquer configurações de definições.
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 
x572intraday:

Sim, lembro-me perfeitamente: fazer uma falsa tentativa de pré-carregamento da história no OnInit. Não funcionou ali ou na OnCalculate, mesmo em loop com uma centena de repetições. Não sei como funciona realmente, mas externamente não houve qualquer carga histórica prometida (embora com um atraso), o resultado permaneceu insatisfatório até ao fim.

Além disso, houve outros casos em que a resposta foi repetidamente devolvida:

mas no final não houve continuação do indicador, houve silêncio na resposta.

Não há necessidade de fazer ciclos com repetições.

Se for um indicador, fazer um único pedido para o período de símbolo certo na OnCalculate. Se falhou, então devolva(0)

Tirar o tempo de recepção do símbolo requerido, normalizar este tempo até ao início do período requerido, pedir 1 última barra do período do símbolo requerido e verificar o seu tempo. Em seguida, pedir o estado do calendário da história

Dependendo da lentidão do seu computador e da carga de recursos, mais de uma centena de OnCalculate pode passar.

Esse código a que se refere é muito antigo. Mas é bom para a ilustração. Mas não é adequado para indicadores, porque os pedidos de histórico dos indicadores são realizados sem qualquer espera (que está claramente escrito na documentação) e Dormir nos indicadores é inútil.

 
x572intraday:
Uma vez que não há citações nos fins-de-semana, significa que o servidor não dá o histórico? Penso que esta é uma hipótese improvável, mas havia razões para pensar assim, porque aos fins-de-semana o indicador ou não funciona, ou após a tediosa e persistente comutação das TFs e comutação dos parâmetros de entrada do indicador na janela de ajustes, os resultados há muito esperados foram obtidos, embora devessem ter acontecido em qualquer configuração.

O servidor dá o histórico mesmo aos fins-de-semana.

Controlar a construção de barras até ao momento do último tique do símbolo apropriado

 
Slava:

Se for um indicador, fazer um pedido único para o período de caracteres requerido na OnCalculate. Se falhou, então regressar(0)

O retorno do poço(falso) em caso de falha é um clássico. É o que eu faço. Tudo estaria bem, mas o problema é que os meus cálculos adicionais estão ligados ao carregamento bem sucedido da história (e esta lógica não pode mudar), e em caso de falha e retorno da função de cálculos, eles simplesmente não acontecem e as construções gráficas adicionais não obtêm as coordenadas necessárias, tudo falha. Como evitar isto - ainda não pensaram e não esperam mudar algo também. Até agora tenho o seguinte: ou todo o histórico é carregado e todas as séries cronológicas para todos os períodos de tempo são construídas e o indicador funciona quase imediatamente sem faltar nenhum cálculo devido ao retorno (falso), ou falta parte do histórico, e o códigovolta a uma função de nível superior comretorno e tenta solicitar o histórico em falta num loop infinito, o que não leva a nada. Recusei simplesmente a terceira variante - sem retorno - e alguns cálculos falham, o que torna o desenho dos gráficos incompleto.

Ainda sentado no tanque um pouco, ainda estou perplexo... É real organizar o MQL-logic do indicador para trabalhar apenas com a história local, sem a necessidade de descarregar o histórico em falta e de sofrer atrasos por causa disso? Ou qualquer função de cópia... ... inevitavelmente ter de contactar o servidor para descarregar até aquela parte da história, da qual não preciso para processar? Em termos simples, os indicadores padrão são instantaneamente desenhados no histórico existente no meu PC, sem qualquer descarregamento (pesquisei os indicadores na pasta Exemplos e lá eles usam apenas CopyBuffer(), e não em todos eles)... Ou o recomeço está escondido dos olhos? Qual é o objectivo de retomar?

Obrigado. Pensarei nas vossas recomendações - provavelmente, elas serão úteis para mim.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стили рисования - Константы индикаторов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Estive fora do computador durante algumas horas. Durante este tempo, ocorreu uma situação anormal e o robô começou a coser muitas impressões digitais. Como resultado, o disco está completamente entupido. Isto perturba o trabalho dos terminais, porque eles não podem despejar o seu histórico de preços no disco.


Temos de evitar esse entupimento do disco. Uma das alternativas é desactivar a escrita para pasta. Isto é, viver sempre sem registos em disco. Outra opção é matar ficheiros de registo quando não há espaço livre suficiente.

Alguém já resolveu este problema?

 
Slava:

Se for um indicador, fazer um pedido único para o período de caracteres requerido na OnCalculate. Se falhar, então devolva(0)

E se quiser correr o indicador ao fim-de-semana?

Apenas chamada forçada da OnCalculate a partir do temporizador (com todas as muletas sob a forma de matrizes de cópia para passar por referência)?

 
x572intraday:

É realista organizar o MQL-logic do indicador para trabalhar apenas com a história local, sem necessidade de descarregar o histórico em falta e tolerar os atrasos associados? Ou qualquer função de cópia... ... inevitavelmente ter de aceder ao servidor para descarregar mesmo aquela parte da história, da qual não preciso para processar?

Pode fazer a sua própria cache(escrever em ficheiros).

Quando isto me foi sugerido, eu, claro, torci o meu templo, mas é realmente melhor do que esperar que a MQ mude a sua abordagem ao manuseamento de séries temporais.

 
fxsaber:

Estive fora do computador durante algumas horas. Durante este tempo, ocorreu uma situação anormal e o robô começou a coser muitas impressões digitais. Como resultado, o disco está completamente entupido. Isto perturba o trabalho dos terminais, porque eles não podem despejar o seu histórico de preços no disco.


Temos de evitar esse entupimento do disco. Uma das alternativas é proibir a escrita para a pasta. Isto é, viver sempre sem registos em disco. Outra opção é matar ficheiros de registo quando não há espaço livre suficiente.

Alguém já resolveu este problema?

Por uma questão de interesse, atirei-me ao chão com o meu maxilar: 183 Gb! Isso é quase 4/5 do meu SSD. As imagens da máquina virtual levam menos tempo. Pelo menos terei algo para ler na minha velhice...

Виртуальный хостинг для MetaTrader 5
Виртуальный хостинг для MetaTrader 5
  • www.mql5.com
Самый быстрый виртуальный выделенный сервер (VPS) для трейдинга на форексе от производителей терминала MetaTrader 4/5
 
x572intraday:

Só por diversão, corri para verificar na minha casa e bati no chão com o meu maxilar: 183GB! Isso é quase 4/5 do meu SSD. As imagens da máquina virtual levam menos tempo. Pelo menos tenho algo para ler na minha velhice...

A impressão e o alerta são funções potencialmente perigosas.

 
Todos os preços são exibidos até à quinta casa decimal, mas um, por alguma razão, na mesma lista é exibido desta forma:
Price=0.7235200000000001
Porque o faria? É um erro ou devemos ajustar a saída de uma forma unificada? Bem, digamos, vou penteá-lo com PrintFormat ou fprint, mas em princípio não é uma representação incorrecta do número?