Discussão do artigo "Que testes deve passar o robô de negociação antes da publicação no Mercado" - página 13

 
Sergei Stakhanov:
Boa tarde, colegas operadores! Quero adicionar um Expert Advisor ao mercado, meu amigo o escreveu e eu o tenho em código aberto. Quando o adiciono, recebo este erro. Alguém pode me dizer se é possível corrigi-lo para uma pessoa que não tem muito conhecimento de programação e se é muito difícil removê-lo? Desde já, obrigado, lucros para todos!

Esse erro pode ser corrigido em três minutos. Se você tivesse pelo menos um pouco de conhecimento, diria isso em palavras. No seu caso, você precisa ver o código para adicionar o que precisa no lugar certo.
No entanto, tentarei lhe dar uma dica sem o código.
1. Encontre onde a função de modificação está localizada em seu código.
2. Encontre a linha que especifica o nível TP ou SL para modificação
3. Adicione (aproximadamente) o seguinte:

if(OrderTakeProfit()>0 && tp==OrderTakeProfit()) return(true);

// e/ou

if(sl==OrderStopLoss()) return(true);

/*
As variáveis que estão sendo comparadas devem ser normalizadas. 
Removi a normalização aqui para não bagunçar o código.
*/
Você pode usar apenas uma ideia desses fragmentos de código; provavelmente você tem uma estrutura de código diferente e outros nomes de variáveis.
A essência da verificação é simples:
- compare os níveis de TP ou SL com os existentes. Se os níveis forem os mesmos, saia sem modificações.
O erro desaparecerá.


Em vez de normalizar as variáveis, é melhor usar esta construção:
.
if(MathAbs(tp-OrderTakeProfit())<1*Point) return(true);
Traduzido para o russo, isso significa:
"Se a diferença entre o preço TP (ou SL) definido para modificação e o preço existente na operação for menor que 1 pip - saia sem fazer nada"
.
 
test on EURUSD,H1 (netting)
strategy tester report 13 total trades
test on XAUUSD,D1 (netting)
 2020.02.20 17:00:37   failed cancel order #260  sell stop 0.6 XAUUSD at 1616.33 [Invalid stops]
 2020.02.20 18:03:40   failed cancel order #332  sell stop 0.6 XAUUSD at 1618.98 [Invalid stops]
 2020.02.25 13:57:55   failed cancel order #847  sell stop 0.6 XAUUSD at 1644.53 [Invalid stops]
 2020.02.25 14:11:30   failed cancel order #881  sell stop 0.6 XAUUSD at 1646.65 [Invalid stops]
 2020.02.25 16:03:15   failed cancel order #972  sell stop 0.6 XAUUSD at 1651.10 [Invalid stops]
 2020.02.25 17:22:41   failed cancel order #1007  sell stop 0.6 XAUUSD at 1652.99 [Invalid stops]
 2020.02.25 17:52:40   failed cancel order #1070  sell stop 0.6 XAUUSD at 1655.53 [Invalid stops]
strategy tester report 458 total trades

Boa tarde colegas, como vocês contornam esses erros?

O adiamento está definido, entendo que surgem problemas quando se tenta cancelá-lo. Não consigo reproduzi-lo no testador.

 
Alexandr Gavrilin:

Boa tarde colegas, como vocês contornam esses erros?

O adiamento está definido, entendo que surgem problemas quando se tenta cancelá-lo. Não consigo reproduzi-lo no testador.

Você pode fazer qualquer coisa no testador! Para fazer isso, você precisa usar o botão mágico e editar o símbolo: Stops level, Freeze level....

 
Vladimir Karputov:

Você pode fazer qualquer coisa no testador! Para fazer isso, você precisa usar o botão mágico e editar o símbolo: Stops level, Freeze level ....

Vivendo e aprendendo, vou ficar atento a isso.

 
Meu indicador é um mapa de calor para índices sintéticos derivados, como o índice de volatilidade e o boom crash, e o relatório de teste mostra um teste falho no eurusd. Meu indicador serve apenas para mostrar a força da tendência, não sei por que eles testam no eurusd.
 

Olá.

Que tipo de erro é esse?

Alguém já o encontrou?

Adicionado

Agora é assim

Existe alguma função para verificar isso?

Adicionado

Agora isso é assim

Adicionado

proibição de comércio de ouro

if(_Symbol=="XAUUSD")return;

e contornou o autovalidador


 
Denis Nikolaev:

Olá.

Que tipo de erro é esse?

Alguém já o encontrou?

Você negociou ouro no primeiro tick do dia a um preço errado?? o robô esqueceu que havia um stop e fechou novamente???

Desligue o terminal e negocie com suas mãos, isso ajuda muito.

 
Maxim Kuznetsov:

Você negociou ouro no primeiro tick do dia a um preço errado?? o robô esqueceu que havia um stop e voltou a fechar???

desligue o terminal e negocie com suas mãos, isso ajuda muito.

Obrigado, mas como lidar com os erros?

adicionar o modo especial "only_autovalidation"?

 
Denis Nikolaev:

Obrigado, mas como você lida com os erros?

Adicionar um modo especial "only_autovalidation"?

O erro "verificar espaço em disco" é obviamente resolvido aumentando o disco ou diminuindo o intervalo testado. É o que diz ali...

 
Maxim Kuznetsov:

A "verificação de espaço em disco" é obviamente resolvida com o aumento do disco ou a diminuição do intervalo testado. É isso que está escrito ali....

Desculpe-me, mas é compreensível, por isso precisamos de um modo especial apenas para a autovalidação.