Mas o que está acontecendo? - página 3

 
Сергей Таболин:

Renat, obrigado. Mas me explique um escuro, qual é a diferença entre 2*2+2*3 no otimizador e um simples passe? Ao menos me dê uma dica onde exatamente pode haver uma discrepância?

Vou lhe dar uma dica.

Em sua mente, há apenas 2*2, enquanto na realidade há um enorme ambiente de mercado e uma enorme quantidade do seu código. Grosso modo, há pelo menos três ordens de magnitude mais variáveis e condições.

Enquanto você andar por aí em modo econômico, não encontrará razões. Assim como jogar o jogo do "codificador simples". Uma vez que você tenha iniciado a programação, aprenda a depurar.

Eu o aconselho pela terceira vez - tirar a impressão e ver com seus olhos onde as discrepâncias nas transações começaram.

 
Renat Fatkhullin:

Vou lhe dar uma dica.

São apenas 2*2 em sua mente enquanto na realidade há um enorme ambiente de mercado e uma enorme quantidade do seu código. Grosso modo, há pelo menos três ordens de magnitude mais variáveis e condições.

Enquanto você andar por aí em modo econômico, não encontrará razões. Assim como jogar o jogo do "codificador simples". Uma vez que você tenha iniciado a programação, aprenda a depurar.

Eu o aconselho pela terceira vez - tirar a impressão e ver com seus olhos onde as discrepâncias nas transações começaram.

Tudo bem, vou tirar a impressão. Vou dar uma olhada. Mas é pouco provável que eu consiga entender a razão dessas discrepâncias.

Especialmente desde que prescrevi a abertura, manutenção e fechamento de posições em minha própria classe. Há muito tempo não tenho notado nenhuma dissonância entre otimização e um único passe em outros EAs (já discuti esta questão em meu artigo anterior).

E foi por isso que abri esta pergunta novamente.

Para mim, entendo desta forma - o trabalho com posições é aperfeiçoado e não requer intervenção. Então, o bicho está em outro lugar. Mas! todos os outros lugares são códigos de scripts para preparar, criar, treinar e verificar a rede. Tudo é depurado também.

Isso deixa a possibilidade de usar uma variável não-inicializada. Eu verifiquei cada um deles. Bem, talvez eu tenha perdido alguma coisa. Nesse caso, espero um aviso do compilador.

Ou, outra forma é que o código seja compilado de tal forma que a variável seja inicializada mais tarde do que é chamada.

Como você entende, eu só posso adivinhar. Não tenho meios reais de detectar este erro.

 
Сергей Таболин:

OK, vou abrir o zíper. Vou dar uma olhada. Mas é improvável que eu consiga entender a razão dessas discrepâncias.

Especialmente, desde a abertura, manutenção e fechamento de posições tem sido implementado em minha própria classe. Há muito tempo não tenho notado nenhuma dissonância entre otimização e um único passe em outros EAs (já discuti esta questão em meu artigo anterior).

E foi por isso que abri esta pergunta novamente.

Para mim, entendo desta forma - o trabalho com posições é aperfeiçoado e não requer intervenção. Então, o bicho está em outro lugar. Mas! todos os outros lugares são códigos de scripts para preparar, criar, treinar e verificar a rede. Tudo é depurado também.

Isso deixa a possibilidade de usar uma variável não-inicializada. Eu verifiquei cada um deles. Bem, talvez eu tenha perdido alguma coisa. Nesse caso, espero um aviso do compilador.

Ou, outra forma é que o código seja compilado de tal forma que a variável seja inicializada mais tarde do que é chamada.

Como você entende, eu só posso adivinhar. Eu não tenho meios reais para detectar este erro.

Primeiro, certifique-se de não utilizar as funções GetTickCount64(), GetTickCount() ou GetMicrosecondCount() na lógica comercial. Eles podem causar divergência de resultados no testador e otimizador.

 
Geess:

Primeiro, certifique-se de não utilizar as funções GetTickCount64(), GetTickCount() ou GetMicrosecondCount() em sua lógica comercial. Eles podem causar divergência de resultados no testador e otimizador.

Eu não tenho.

 
Сергей Таболин:
...

A meu ver, o trabalho de posicionamento é afinado e não requer intervenção. Portanto, o bug está em outro lugar. Mas todos os outros lugares são códigos dos scripts para preparar, criar, treinar e verificar a rede. Tudo isso também é afinado.

...

Não foi aqui que tudo deu errado?

 

"quase todos os dados são inicializados em um loop".

Pessoal, não se pode rubricar em loop. Você tem que ler no laço.

 
Em geral, deve haver um erro de Stack Overflow.
 
)
 
Artyom Trishkin:

Não é aí que reside o problema?

De que forma? A rede não é treinada em tempo real na EA. Pelo menos, ainda não).

É treinado corretamente ou não, é sobretreinado ou subtreinado, mas o sinal é o mesmo.

Se a rede dá sinal de "compra" na abertura do bar ao otimizar, então deve dar o mesmo sinal ao fazer um único teste. E se não der o mesmo sinal, ele não está lá nem está lá.

Então é daí que podem surgir posições "desnecessárias" (desde que os dados de preços sejam iguais, espero)?

 
Сергей Таболин:

De que forma? A rede não é treinada em tempo real na EA. Pelo menos, ainda não).

É treinado corretamente ou não, é sobretreinado ou subtreinado, mas o sinal é o mesmo.

Se, por exemplo, durante a otimização ele der um sinal para comprar na abertura do bar, então ele deve dar o mesmo sinal durante um único teste. E se não der o mesmo sinal, ele não está lá nem está lá.

Então de onde podem vir as posições "extras" (desde que os dados de preço sejam, espero, os mesmos)?

Tente desativar a lógica atual e substituí-la por um mago normal. Você verá imediatamente onde o gato deu errado, na lógica ou na execução.