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

 

Olá a todos.

Qual é o erro tão incompreensível:

test on EURUSD,H1 strategy tester report not found

E como combatê-lo? Que outro relatório?

 
Denis Bogdanov:

Olá, pessoal.

Que tipo de erro é esse, estranho:

teste em EURUSD, relatório do testador de estratégia H1 não encontrado

E como combatê-lo? Que relatório?

Olá, talvez haja um loop infinito em algum lugar, por isso o teste não chega ao momento da geração do relatório.

 

Estou tendo um momento estranho hoje, ele diz que foi concluído com erros, mas não está claro quais são eles. Está vazio.

 
Alexandr Gavrilin:

Estou tendo um momento estranho hoje, ele diz que foi concluído com erros, mas não está claro quais são eles. Está vazio.

Truques do autovalidador, execute-o novamente.
 
Alexandr Gavrilin:

Estou tendo um momento estranho hoje, ele diz que foi concluído com erros, mas não está claro quais são eles. Está vazio.

Acho que está consertado.
 
Vladislav Andruschenko:
Acho que está consertado.

Definitivamente está consertado, o robô foi testado.

 
A compra ocorre pelo preço Ask A venda ocorre pelo preço de compra
TakeProfit - Bid >= SYMBOL_TRADE_STOPS_LEVEL
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL

É isso que o artigo diz. Mas essa não é a maneira de fazer isso?

A compra ocorre no preço Ask A venda ocorre no preço Bid
TakeProfit - Ask >= SYMBOL_TRADE_STOPS_LEVEL
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL

Bid - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL

E também no código da função - ?


// ...

switch(type)
     {
      //--- transação de compra
      case  ORDER_TYPE_BUY:
        {
         //--- verificar StopLoss
         SL_check=(Bid-SL>stops_level*_Point);
         if(!SL_check)
            PrintFormat("For order %s StopLoss=%.5f must be less than %.5f"+
                        " (Lance=%.5f - SYMBOL_TRADE_STOPS_LEVEL=%d pontos)",
                        EnumToString(type),SL,Bid-stops_level*_Point,Bid,stops_level);
         //--- verificar TakeProfit
         TP_check=(TP-Ask>stops_level*_Point);
         if(!TP_check)
            PrintFormat("For order %s TakeProfit=%.5f must be greater than %.5f"+
                        " (Lance=%.5f + SYMBOL_TRADE_STOPS_LEVEL=%d pontos)",
                        EnumToString(type),TP,Bid+stops_level*_Point,Bid,stops_level);
         //--- retorna o resultado da verificação
         return(SL_check&&TP_check);
        }
      //--- transação de venda
      case  ORDER_TYPE_SELL:
        {
         //--- verificar StopLoss
         SL_check=(SL-Ask>stops_level*_Point);
         if(!SL_check)
            PrintFormat("For order %s StopLoss=%.5f must be greater than %.5f "+
                        " (Ask=%.5f + SYMBOL_TRADE_STOPS_LEVEL=%d pontos)",
                        EnumToString(type),SL,Ask+stops_level*_Point,Ask,stops_level);
         //--- verificar TakeProfit
         TP_check=(Bid-TP>stops_level*_Point);
         if(!TP_check)
            PrintFormat("For order %s TakeProfit=%.5f must be less than %.5f "+
                        " (Ask=%.5f - SYMBOL_TRADE_STOPS_LEVEL=%d pontos)",
                        EnumToString(type),TP,Ask-stops_level*_Point,Ask,stops_level);
         //--- retorna o resultado da verificação
         return(TP_check&&SL_check);
        }
      break;
     }

// ...

???

Se fizermos como no artigo, perderemos pontos do spread no lucro! Talvez eu não esteja entendendo alguma coisa?

 
Oleg Arsentev #:
A compra ocorre pelo preço Ask A venda ocorre pelo preço de compra
TakeProfit - Bid >= SYMBOL_TRADE_STOPS_LEVEL
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL

É isso que o artigo diz. Mas essa não é a maneira de fazer isso?

A compra ocorre pelo preço Ask A venda ocorre no preço Bid
TakeProfit - Ask >= SYMBOL_TRADE_STOPS_LEVEL
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL

Lance - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL

E também no código da função -


???

Se fizermos como no artigo, perderemos pontos do spread no lucro! Talvez eu não esteja entendendo alguma coisa?

Perdemos o lucro, é claro. Mas é impossível colocar stops mais próximos:

Portanto, os níveis de TakeProfit e StopLoss devem ser comparados com o preço atual, no qual é possível fazer uma operação na direção oposta:

  • A compra é feita pelo preço Ask - Os níveis TakeProfit e StopLoss devem ser comparados com o preço de venda atual Bid.
  • A venda é feita pelo preço Bid - os níveis TakeProfit e StopLoss devem ser comparados com o preço Ask atual.
[Excluído]  
Metade dos robôs no Mercado não está funcionando.
 
dryun777 #:
Metade dos robôs do mercado não está funcionando.

Este é um artigo para aqueles que escrevem EAs. Você precisa de artigos da série "How to Test".