MetaTrader 5 Strategy Tester: bugs, bugs, sugestões para melhorias - página 56

 
2314. A comissão em percentagens por modo de comércio não é calculada correctamente. + não pode ser definido além do segundo ponto decimal através do GUI (pode ser feito através de um ficheiro).
 

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais

Consultores especializados: Validar

fxsaber, 2020.02.06 17:20

SZZY Infelizmente, o próprio MT5-Tester não permite prescrever critérios de optimização personalizados (não de selecção) fora do código fonte da EA. Embora não existam obstáculos arquitectónicos para o fazer.

Agora pode seleccionar qualquer passe dos resultados da Optimização com base no seu critério de escolha do melhor.

Mas é impossível definir o seu próprio critério de Optimização se houver apenas o EX5. Do meu ponto de vista, tal critério de optimização poderia ser definido como uma EA onde apenas os dados OnTester e TesterStatistics estão disponíveis. Muito provavelmente, não existe tal coisa nos planos dos promotores. Portanto, apenas uma sondagem.

 

Lamento que isto tenha sido traduzido por máquina para Russion a partir do inglês, mas só encontrei este fio, para reportar bugs.

Parece haver um problema com a plataforma Metatrader 5 quando começo um teste visual de depuração no editor e chego a um ponto de ruptura e carrego em Ctrl + F.

Indicadores (todos, mesmo habilitados) redesenhar / deslocar 1 barra ao pressionar ctrl + f enquanto depura os dados históricos)

Reprodução:

  1. Open Metatrader 5.
  2. Adicionar EMA 5 e EMA 10 (incorporado)
  3. Definir Strategytester para Daily, Simulation: ticks ou Real ticks (ambos causam o mesmo problema)
  4. Abrir o editor do Metatrader 5
  5. Abrir o ExpertMACD.mqh incluído
  6. Colocar um ponto de parada na linha 651 em Expert.mqh
  7. Comece com CTRL + F5 para correr sobre dados históricos
  8. Colocar o cursor sobre um castiçal totalmente fechado (pelo menos 1-2 dias atrás)
  9. Quando o ponto de quebra for atingido, active o testador visual e prima Ctrl + F
  10. Todos os indicadores deslocar-se-ão 1 barra para a esquerda uma vez premida CTRL + F na janela de teste visual e obtêm uma mira.
  11. Continue a partir do ponto de quebra e todos os indicadores deslocar-se-ão 1 barra para a direita.
  12. Os passos 8 a 11 podem ser repetidos e fazem sempre a mesma coisa.

O problema é que ao verificar se a EA está de facto a fazer o que é suposto fazer, não é possível quando as barras são deslocadas em comparação com o que a EA vê.

Isto não é um problema com indicadores, pois é mesmo o caso com exemplos de EA incorporados, bem como com indicadores incorporados.


Este vídeo do YouTube demonstra o problema por volta das 0:25, prima Ctrl + F.

https://youtu.be/_fyCv3Zla9A

 
fxsaber:

Agora pode seleccionar qualquer passe dos resultados da Optimização com base no seu critério de selecção do melhor passe.

Mas é impossível definir o seu próprio critério de Optimização se existir apenas o EX5. Do meu ponto de vista, tal critério de Optimização poderia ser definido como uma EA, onde apenas estão disponíveis dados das funções OnTester e TesterStatistics. Muito provavelmente, não existe tal coisa nos planos dos promotores. É por isso que só a sonorização está disponível.

Só agora se apercebeu disso? Se tiver um mau modelo da estratégia comercial, nenhuma optimização ajuda em nada.

Assim, a modelação matemática ou a aprendizagem mecânica não podem resolver este problema. É preciso saber claramente o que está na caixa negra.

 
Petros Shatakhtsyan:

Só agora se apercebeu disso?

Não compreendo o padrão de perguntas tão ilógicas.

Se tiver um mau modelo de estratégia comercial, nenhuma quantidade de optimização ajuda.

Claro que, se alguém é mau, não é bom. É exactamente assim que soa a frase acima.

Isto é, a modelação matemática ou a aprendizagem mecânica não está à altura da tarefa. É preciso saber claramente o que está na caixa negra.

Esta frase fala de uma tarefa de algum tipo. E que algo precisa de ser conhecido para algum fim. Em geral, é melhor se as respostas não parecerem um pedaço de conversa arrancado de si mesmo.

 
fxsaber:

Não há grails.

Há.

 
Алексей Тарабанов:

Verificar.

A afirmação de graalidade (antes da correcção do modo Tester) foi confirmada por código.

 

Em algumas das últimas construções, a importação de ficheiros tst ficou incompleta - o separador Definições não é actualizado para o de tst.

Anteriormente, importava-se e em Definições pode-se ver imediatamente a que valores o resultado era obtido. Não o consigo ver agora. É possível mudar de volta?

 
Durante muito tempo procurei a razão do estranho comportamento do testador em carraças reais. Encontrei-o.
const bool Init = EventSetTimer(1);

void Func()
{
  static datetime PrevTime = 0;
  
  const datetime time = TimeTradeServer();
  
  if (time < PrevTime)
    DebugBreak(); // Срабатывает
  
  PrevTime = time;
}

void OnTick()
{
  Func();
}

void OnTimer()
{
  Func();
}

O tempo do servidor avança e depois regressa. Isto acontece num servidor comercial real, mas conseguiu criar uma repetição sobre um símbolo personalizado.


Vamos correr

sinput datetime inDateFrom = D'2020.01.01';

void OnStart()
{
  const string Name = "TEMP12345";                                                           // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                          // Имя оригинального символа

  MqlTick Ticks[];
  
  const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики.
    
  if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true))    // Создали символ на основе EURUSD.
  {
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);                                            // Поместили в него историю EURUSD.        
    
    CustomRatesDelete(Name, D'2020.01.03 23:00', D'2020.01.04 00:00');                       // Удалили несколько баров.
  }
}


Será criado um símbolo com histórico de carrapatos, mas com várias barras apagadas. Depois começamos a depurar a EA acima neste modo.

[Tester]
Symbol=TEMP12345
Period=M1
Optimization=0
Model=4
FromDate=2020.01.01
ToDate=2020.01.08
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6


Pára.

Vê-se que o tempo passou num segundo ciclo.

 
fxsaber:

Em algumas das últimas construções, a importação de ficheiros tst ficou incompleta - o separador Definições não é actualizado para o de tst.

Anteriormente, importava-se e em Definições pode-se ver imediatamente a que valores o resultado era obtido. Não o consigo ver agora. É possível mudar de volta?

Sim, nós podemos.