Símbolos personalizados. Erros, bugs, perguntas, sugestões. - página 12

 
fxsaber:

Bug 16.

Anteriormente, CustomTicksAdd gerava barras a partir de carrapatos que se referiam ao dia atual. Este também não é o caso agora.

Este bug parece estar relacionado ao bug #14.

A remoção do símbolo da visão geral do mercado é possível pelo seguinte motivo. Chamando consecutivamente CustomSymbolCreate - CustomSymbolDelete - CustomSymbolCreate com o mesmo nome de símbolo personalizado estava fazendo com que o símbolo ID fosse atingido. Portanto, ao verificar se um símbolo pode ser removido da visão geral do mercado, o gráfico deste símbolo não foi encontrado (o identificador está corrompido), e o símbolo foi removido com segurança. Isto foi corrigido.

Ao aplicar um tick a um gráfico, a mesma coisa é possível - a busca do gráfico pelo identificador do símbolo não produziu um resultado

 
fxsaber:

Bug 15.

Executamos o seguinte indicador no símbolo desta EA (com o ChartSetSymbolPeriode-row removido)

Produz apenas zeros.

É justo.

Chamando CustomRatesUpdate redefine todos os contadores de mudança e recalcula os indicadores a partir de zero

 
Slava:

Com toda razão.

Quando você chama CustomRatesUpdate, todos os contadores de mudança são reinicializados e os indicadores são recalculados a partir de zero.

Qual é a lógica por trás desta solução? Afinal de contas, há barras inalteradas à esquerda.

 
fxsaber:

Qual é a lógica por trás desta solução? Afinal de contas, há barras invariantes à esquerda.

prev_calculado contém um valor que foi retornado na chamada OnCalculate anterior

O indicador pode retornar qualquer valor com base em sua própria lógica. Portanto, não faz sentido percorrer todos os indicadores e alterar o valor de pré_calculado para seu próprio valor calculado, levando em conta o prazo. E é de recursos intensivos, pode até mesmo ser exageradamente intensiva em recursos.

É muito mais honesto colocá-lo em 0, como no início, quando ainda nada foi contado

 
Slava:

prev_calculado contém o valor que foi devolvido na chamada anterior à OnCalculate

O redator de indicadores pode devolver qualquer valor com base em sua própria lógica. Portanto, não faz sentido percorrer todos os indicadores e alterar o valor de pré_calculado para seu próprio valor calculado, levando em conta o prazo. E é de recursos intensivos, pode até mesmo ser exageradamente intensiva em recursos.

É muito mais honesto colocá-lo em 0, como no início, quando ainda nada foi contado

Então o que devemos fazer quando os indicadores em um símbolo personalizado são completamente recalculados por causa desse valor zero após cada rolagem de carrapato?

Os indicadores são especialmente escritos para não atrasar o Terminal, e aqui começa o contrário.

 
fxsaber:

Então e quando, em um símbolo personalizado, após cada carrapato rolante, os indicadores são completamente recalculados por causa desse valor zero?

Este não deveria ser o caso. Verifique

 
Slava:

Não deveria ser assim. Verifique

Deixe-me esclarecer que não é apenas CustomTicksAdd, mas também RatesUpdate, que é um tick-through do passado. De fato, mesmo o TicksAdd de trabalho não formou as barras antes do dia atual. Temos que formá-los por nós mesmos. E nós ficamos com zero pré_calculado por causa disso.

 
fxsaber:

Deixe-me esclarecer que o rollover de carrapatos do passado não é apenas CustomTicksAdd, mas também RatesUpdate. De fato, mesmo o TicksAdd de trabalho não formou as barras antes do dia atual. Temos que gerá-las por nós mesmos. E nós ficamos com zero pré_calculado por causa disso.

De qualquer forma, ao substituir, refrescar ou apagar barras, todos os indicadores serão recalculados a partir de zero. Isto está fora de questão.

A adição de carrapatos deve funcionar como de costume, ou seja, os carrapatos são carrapatos frescos, atuais, mas não carrapatos de ontem/do dia anterior.

Eu executei seu Expert Advisor a partir da descrição do bug 11 e depois executei o indicador com uma impressão em cada OnCalculate

Aqui estão os registros.

2019.06.07 08:11:34.240 CustomHistoryTick (EURUSD,H1)   CustomSymbolCreate(Name,NULL,_Symbol) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomRatesDelete(Name,0,0) = 0
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   SymbolSelect(Name,false) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomSymbolDelete(Name) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomSymbolCreate(Name,NULL,_Symbol) = true
2019.06.07 08:11:34.321 CustomHistoryTick (EURUSD,H1)   CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,(TimeCurrent()-3600)*1000) = 1114
2019.06.07 08:11:46.158 Custom Moving Average (EURUSD11608,M1)  13  prev_calculated=0  begin=0  data=1.126668940063615
2019.06.07 08:11:46.173 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=13  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.209 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.228 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.246 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989312244897959
2019.06.07 08:11:46.271 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989312244897959
2019.06.07 08:11:46.305 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.399 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.427 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.460 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.494 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.521 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.561 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.586 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.614 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.645 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.676 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.708 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.775 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.803 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.835 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.869 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.898 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.930 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.972 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.298924081632653
2019.06.07 08:11:46.993 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989226530612245
2019.06.07 08:11:47.024 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.298924081632653
2019.06.07 08:11:47.050 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:47.085 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=14  begin=0  data=0.4171804373177843
2019.06.07 08:11:47.116 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.175 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.198 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.215 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.242 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.270 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171761516034985
2019.06.07 08:11:47.302 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.335 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.370 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171761516034985
2019.06.07 08:11:47.398 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171804373177843
2019.06.07 08:11:47.434 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.466 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.494 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.528 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.586 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.617 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.646 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.41717472303207
2019.06.07 08:11:47.679 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.716 Custom Moving Average (EURUSD11608,M1)  16  prev_calculated=15  begin=0  data=0.5185379258642233
2019.06.07 08:11:47.740 Custom Moving Average (EURUSD11608,M1)  16  prev_calculated=16  begin=0  data=0.5185364972927947

Isso significa que tudo está funcionando corretamente em uma situação normal (carrapatos são hoje, como sempre deveriam ser). Os carrapatos são adicionados, e o indicador é considerado com parcimônia

 
Slava:

Em qualquer caso, ao substituir, atualizar, apagar as barras, todos os indicadores serão recalculados a partir do zero. Isto está fora de questão.

A adição de carrapatos deve funcionar como de costume, ou seja, os carrapatos são frescos, os de hoje, não os de ontem - os de anteontem.

Execute seu Expert Advisor a partir da descrição do bug 11, depois execute o indicador com a impressão em cada OnCalculate

Aqui estão os registros.

Isso significa que tudo está funcionando corretamente em uma situação normal (carrapatos são de hoje, como sempre deveriam ser). Os carrapatos são adicionados, e o indicador é considerado com parcimônia

Esta é uma afirmação correta?

Clique na imagem para ver a animação.


Além disso, se for 00:00:01, não podemos usar o CustomTicksAdd para remodelar uma barra que estava há apenas dois segundos.

 
fxsaber:

Esta é uma afirmação correta?

Para um testador, o tique de anteontem é fresco, o tique de hoje é de anteontem.

Entendo seu ponto de vista. Seu exercício com tiques personalizados de seis meses atrás é de uma natureza distintamente testadora. Sua situação não é normal (no sentido da prática normal)