Erros, bugs, perguntas - página 3132

 
Yury Lemeshev #:

Existe um problema, que parece ser aleatório e ocasional.

Aparece quando se trabalha no testador com várias moedas.

Em cada ciclo solicito preços reais por símbolos. Se por alguma razão o testador não receber citações para um determinado símbolo, utiliza as citações obtidas anteriormente para outro símbolo.

Devo abrir uma posição se o preço for mais elevado do que o especificado. Devo abrir posição se obtiver dados errados de outro símbolo.

O símbolo EURCAD abre se o preço for superior a 1,45117. 1,74425>1,45117? Sim, é mais alto mas é o preço de outro símbolo.

Detectámos 7 ordens de erro de entre 500.

Só posso especular que o pedido de preço do símbolo, a resposta é atirada para uma e a mesma variável ambiental. Apenas uma verificação rápida para ver se é igual ao valor anterior. Se for outro símbolo é muito raramente igual.

 
Yury Lemeshev #:

Não há erro no código, o código foi reescrito para eliminar o erro, e o erro não aparece regularmente, é completamente caótico

Os milagres não acontecem neste mundo... Aqui está um dos telepatas que ainda não se encontram numa farra e também a falar de um erro.

 
Yury Lemeshev #:

Existe um problema, que parece ser aleatório e ocasional.

Aparece quando se trabalha no testador com várias moedas.

Em cada ciclo solicito preços reais por símbolos. Se por alguma razão o testador não receber citações para um determinado símbolo, utiliza as citações obtidas anteriormente para outro símbolo.

Devo abrir uma posição se o preço for mais elevado do que o especificado. Devo abrir posição se obtiver dados errados de outro símbolo.

O símbolo EURCAD abre se o preço for superior a 1,45117. 1,74425>1,45117? Sim, é mais alto mas é o preço de outro símbolo.

Detectámos 7 ordens erradas em 500.

A resposta está na própria pergunta. O robô pode utilizar citações irrelevantes ou dados errados de outro símbolo. Não sei qual é a ideia, é claro. Mas algo está obviamente errado no código...

 
Mihail Matkovskij #:

A resposta está na própria pergunta. O robô pode utilizar citações irrelevantes ou dados incorrectos de outro símbolo. Não sei qual é, claro, a ideia. Mas algo está obviamente errado no código.

Há algo de errado no código. Há espaços em branco na lógica. As geleias cintilantes em geral são difíceis de prever e de se defender.

 
2021.12.31 22:14:19.911 2019.01.24 18:50:09 -2117- EURGBP 0.86993
2021.12.31 22:14:19.912 2019.01.24 18:50:10 -2117- EURGBP 0.86994
2021.12.31 22:14:19.912 2019.01.24 18:50:10-2117- EURGBP 1.5969
2021.12.31 22:14:19.912 2019.01.24 18:50:10 compra imediata 0,01 EURGBP a 0,86993 (0,86985 / 0,86993 / 0,86985)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 negócio #13 compra 0,01 EURGBP a 0,86993 feito (com base na encomenda #13)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 negócio feito [#13 comprar 0,01 EURGBP a 0,86993]
2021.12.31 22:14:19.912 2019.01.24 18:50:10 encomenda executada compra 0,01 a 0,86993 [#13 compra 0,01 EURGBP a 0,86993]

Cada ciclo está bem, mas os dados de outro símbolo são substituídos no momento. 1,5969>0,88506 sim, posição aberta. Isto não é um bug de código. Isto é um insecto no testador.

euSY01b=0;euSY01a=0;
   if(SymbolInfoDouble(euSY01,SYMBOL_BID,euSY01b)==true && SymbolInfoDouble(euSY01,SYMBOL_ASK,euSY01a)==true && euSY01b>0 && euSY01a>0)
      {
      GlobalVariableSet("["+MAGICs+"] "+euSY01+" LAST BID",euSY01b);GlobalVariableSet("["+MAGICs+"] "+euSY01+" LAST ASK",euSY01a);
      }
 
Valeriy Yastremskiy #:

No código, é tudo assim. Existem lacunas na lógica. As juntas cintilantes em geral são difíceis de prever e de afastar.

o que pensa que é a lógica sem código?

 
Yury Lemeshev #:
2021.12.31 22:14:19.911 2019.01.24 18:50:09 -2117- EURGBP 0.86993
2021.12.31 22:14:19.912 2019.01.24 18:50:10 -2117- EURGBP 0.86994
2021.12.31 22:14:19.912 2019.01.24 18:50:10-2117- EURGBP 1.5969
2021.12.31 22:14:19.912 2019.01.24 18:50:10 compra imediata 0,01 EURGBP a 0,86993 (0,86985 / 0,86993 / 0,86985)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 negócio #13 compra 0,01 EURGBP a 0,86993 feito (com base na encomenda #13)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 negócio feito [#13 comprar 0,01 EURGBP a 0,86993]
2021.12.31 22:14:19.912 2019.01.24 18:50:10 encomenda executada compra 0,01 a 0,86993 [#13 compra 0,01 EURGBP a 0,86993]

Cada ciclo está bem, mas os dados de outro símbolo são substituídos no momento. 1,5969>0,88506 sim, posição aberta. Isto não é um bug de código. Isto é um erro no testador.

Em seguida, verificar o símbolo para o tempo antes de introduzir a procura do sinal.

 
Mihail Matkovskij #:

O que pensa que é a lógica sem código?

Declaração de problema/localização - algoritmo de solução ou lógica de solução - código. Infelizmente, isto não é muitas vezes compreendido aqui no modo um por todos. A codificação começa antes de o problema ser claramente formulado, nem sequer o algoritmo de solução. Naturalmente, a lógica de que qualquer consulta é sempre executada não só é incorrecta no testador, mas também na realidade. Portanto, precisamos das acções certas para evitar consequências tóxicas de eventos cintilantes)))) Festas Felizes!!!!

 
Valeriy Yastremskiy #:

Festas Felizes!!!!

Obrigado. O mesmo para si!

Na essência da questão, acima escrevi o que precisa de ser feito. E então a lógica irá funcionar.

 
Mihail Matkovskij #:

depois, verificar o símbolo para sincronização antes de introduzir a procura do sinal.

   if(SymbolIsSynchronized(euSY01)==true && SymbolInfoDouble(euSY01,SYMBOL_BID,euSY01b)==true && SymbolInfoDouble(euSY01,SYMBOL_ASK,euSY01a)==true && euSY01b>0 && euSY01a>0)

Se o fizer, e existem 7 linhas deste tipo no código para sete pares, então a síntese do mercado terá apenas cotações para uma moeda.