Erros, bugs, perguntas - página 1524

 
Slawa:

O que documentar? "Irmãos, relaxem e tenham calma, deinicializem-se como quiserem. Os criadores permitiram-no.

Mas quando se fecha o terminal, o terminal desencadeia condições rigorosas, que já foram especificamente mencionadas na documentação. E da próxima vez que abrir o terminal, poderá não ter aberto os gráficos, porque não conseguiram poupar no tempo atribuído.

O que é que isto tem a ver com isto?

Tente inundar o tronco em loop infinito e ver a rapidez com que cresce e como 64 MB cortará registos duplicados e truncará o início do tronco. Está a exagerar com as suas afirmações sobre a falta de protecção. Teríamos tido todas as unidades nos locais de hospedagem entupidas há muito tempo.

Documentar como está ou fazer como documentado... OK, isso é da sua conta.

Experimentei-o, aproveitei uma oportunidade na saúde do computador, taxa de preenchimento ~1,5 GB/min. Mas o terminal não é pendurado, em comparação com 4).

 
-Aleks-:

Ugh, então o bug não está de volta - pode fechar o terminal e certificar-se de que todos os gráficos estão guardados.

Disse que ao fechar o terminal, o programa é forçado a terminar após 3 segundos agora. É assim que funciona agora e continuará a funcionar. Eles não querem devolver o encerramento forçado quando o programa é retirado do gráfico sem terminar o terminal.
 
Slawa:

Tratava-se originalmente de um indicador em loop. O que não é categoricamente recomendado. Mesmo a título de ilustração

Não estamos a falar do indicador looped, mas de qualquer indicador sem a verificação IsStopped dentro dos seus ciclos. Porque os ciclos de construção de indicadores complexos podem ser longos. É claro que esta questão não é tão real para mim por causa do loop infinito, simplesmente não consigo definir o código fonte, e é inútil porque é demasiado incómodo.
 

Qualquer indicador utiliza pelo menos um ciclo.

Um laço sem verificação IsStopped torna este laço potencialmente infinito. Porque podem existir milhões de dados de preços na matriz, e cada iteração pode ser escrita de forma não óptima.

Um programador que cria deliberadamente um loop infinito não deve apelar a qualquer falta de informação na documentação; além disso, a documentação declara explicitamente

В одном потоке с индикаторами также последовательно выполняются остальные действия по данному символу - обработка тиков и синхронизация истории. Это означает, что если в индикаторе выполняется бесконечное действие, все остальные события по его символу никогда не выполнятся.

O programador consciente compreende imediatamente que, neste caso, é ele/ela responsável pela eficiência do indicador, não pela documentação. Além disso, tem havido muitas discussões e artigos sobre este tema

 
Slawa:

O programador consciencioso compreende imediatamente que neste caso é responsável pela eficiência do indicador, não pela documentação. Além disso, tem havido muitas discussões e artigos sobre este tema

Confesso que não tinha a verificação IsStopped, e foi por isso que tive problemas com interrupções na construção de indicadores complexos apenas por minha culpa. Mas, por outro lado, habituei-me ao facto de que o trabalho do programa e a sua documentação devem coincidir.
 
Ilya Malev:
Disse que quando se fecha o terminal, o programa é forçado a terminar após 3 segundos. É assim que funciona agora e continuará a funcionar. Eles não querem trazer de volta o encerramento forçado ao retirar o programa do gráfico sem terminar o terminal.
Um, eu fiz questão de quadruplicar - parece que agora termina e fecha tudo correctamente, enquanto costumava perder gráficos com EAs.
 
Ilya Malev:
Tudo isto é correcto, arrependo-me de não ter tido a verificação IsStopped e, portanto, ter tido problemas com a interrupção da construção de indicadores complexos apenas devido à minha culpa. Mas, por outro lado, habituei-me ao facto de o funcionamento do programa e a sua documentação deverem coincidir.

A documentação não pode ter em conta todas as nuances. Especialmente quando estamos a falar de segundos, GHz, megabytes - os valores que são mensuráveis mas dependem fortemente do seu ambiente

Tentamos preencher os espaços em branco na documentação (embora esperemos secretamente uma presunção de consciência)

 
-Aleks-:
Um, fiz um comentário sobre o quádruplo - parece agora completar e fechar tudo correctamente, mas costumava perder gráficos com EAs.

O quarteto paralelava os processos de fecho de cada gráfico. Por conseguinte, conseguiram aumentar o tempo de espera para cada um deles.

No passado, os gráficos eram memorizados um a um, e cada um era dado o mesmo tempo limite. Quanto mais gráficos e mais inibidos os EAs sobre eles, mais longo era o processo de encerramento.

 
Slawa:

O quarteto paralelava os processos de fecho de cada gráfico. Por conseguinte, conseguiram aumentar o tempo de espera para cada um deles.

No passado, os gráficos eram memorizados um a um, e cada um era dado o mesmo tempo limite. Quanto mais gráficos e sobre eles, mais longo foi o processo de encerramento.

Compreendido de forma grosseira.

Lento não lento, muito depende do hardware e das tarefas que a EA executa, e é preciso ter em conta o facto de os programas serem frequentemente escritos não por programadores profissionais - é por isso que existe uma linguagem de programação, penso eu.

 

MT4. Gostaria de chamar mais uma vez a vossa atenção para as peculiaridades da inicialização das variáveis globais do programa.

As variáveis globais são inicializadas uma vez quando se instala o programa sobre um gráfico ou se recompila o código.

Se quiser alterar o prazo, símbolo ou parâmetros de entrada, então as variáveis globais não são reinicializadas (por exemplo, não são apagadas), e mantêm os seus valores, que obtiveram durante o trabalho com os prazos, símbolos ou parâmetros de entrada anteriores.

input int c;
int a,b;
void OnInit() {
 a++; Print(" a=",a," b=",b," c=",c); }

Acontece que se não limpar todas as variáveis globais de forma programática, então quando alterar o TF, o instrumento ou os parâmetros de entrada, o código funcionará com os valores anteriores, ou seja, de forma incorrecta.

Será razoável? Não seria melhor faze-lo no testador de estratégias? Aí, as variáveis globais são reinicializadas a cada mudança de TF, instrumento ou parâmetros de entrada.