Bibliotecas: MultiTester - página 22

 
Respondo à minha própria pergunta: os arquivos mqh não precisam ser compilados separadamente. E você também começou a procurar, não foi? Está funcionando. Muito obrigado.
 

Ao examinar os resultados da otimização, talvez você goste de algumas passagens individuais e queira obter rapidamente algumas informações úteis sobre elas para usá-las posteriormente.

Achei esse método muito conveniente para mim.

#define private public
  #include <fxsaber\MultiTester\MTTester.mqh>
#undef private

void OnDeinit( const int Reason )
{
  if (!MQLInfoInteger(MQL_OPTIMIZATION) && MQLInfoInteger(MQL_TESTER))
  {
    const datetime EndTime = TimeCurrent() - TimeCurrent() % (24 * 3600) + 24 * 3600;
        
    const string Str =          TimeToString(EndTime, TIME_DATE) + ": " +
                                DoubleToString(TesterStatistics(STAT_PROFIT), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_TRADES), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " +          
                                DoubleToString(TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", Fit = " +          
                                DoubleToString(TesterStatistics(STAT_CUSTOM_ONTESTER), 2) + "\n";

    MTTESTER::SetClipboard(_Symbol + " " + Str); // Colocou a string de passagem única na área de transferência.
  }

Após uma única passagem, todas as informações necessárias estão disponíveis de forma resumida na área de transferência como uma string. Eu as colo usando CTRL+V, onde é mais conveniente agora.

Depois, quando muitas dessas sequências interessantes tiverem sido acumuladas, eu avalio a situação geral.


É claro que você mesmo forma a string. O exemplo acima é apenas um exemplo. O principal é que ela caiba na área de transferência.

 

fxsaber, obrigado pelo multitester! Suas publicações estão, como sempre, no topo da lista!


Antes de inventar uma bicicleta, gostaria de pedir um conselho.

Como resultado da otimização dos parâmetros do EA por uma lista de símbolos usando o multitester, obtenho uma lista de arquivos .opt e os resultados da otimização só podem ser visualizados separadamente para cada símbolo.

Como posso combiná-los em um resultado médiopara todos os símbolos? Digamos que eu queira obter um gráfico MT5 2D padrão de dois parâmetros (de quadrados sombreados em verde).

Ou como é mais fácil combinar todos os resultados em uma tabela do Excel? A exportação manual de todos os resultados do S&P500 para o Excel não é muito conveniente....

fxsaber
fxsaber
  • www.mql5.com
Предупреждение для тех, кто не знает (почти все). При передаче мастер-пароля (даже на короткое время) от MT4/5-торгового счета другому лицу автоматически происходит передача не только имени, на кого зарегистрирован торговый счет (как при передаче инвест-пароля), но и реального email-адреса и номера телефона, на которые зарегистрирован торговый...
 
Sunriser:

Como resultado da otimização dos parâmetros de EA pela lista de símbolos usando o multitester, é obtida uma lista de arquivos .opt e os resultados da otimização podem ser visualizados apenas separadamente para cada símbolo.

E como combiná-los em um resultado médiopara todos os símbolos? Digamos que eu queira obter um gráfico 2D padrão do MT5 de dois parâmetros (de quadrados verdes sombreados).

Ou como é mais fácil combinar todos os resultados em uma tabela do Excel? A exportação manual de todos os resultados do S&P500 para o Excel não é muito conveniente....

É possível consolidar todos os arquivos de opções de otimização múltipla em um único arquivo por meio do TesterCache.

TesterCache
TesterCache
  • www.mql5.com
MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах  Tester\cache\*.opt . И умеет экспортировать/импортировать их. Данная библиотека позволяет работать с этими данными. Сценарии Вывод более полных данных, чем это предоставляет MT5-тестер. Создание критериев оптимизации в любое время после проведенной...
 
Ei, essa parece ser uma ferramenta incrível. Estou tentando usar o Google Tradutor, mas não sei como trabalhar com ele. Existe algum tutorial em inglês? Não sei em que ponto posso ativá-la e fazer a lista dos símbolos a serem testados com meu especialista. Ou preciso editar um arquivo de código manualmente e depois importá-lo? Obrigado!
 
Thierry Waltrich:
Ei, essa parece ser uma ferramenta incrível. Estou tentando usar o Google Tradutor, mas não sei como trabalhar com ele. Existe algum tutorial em inglês? Não sei em que ponto posso ativá-la e fazer a lista dos símbolos a serem testados com meu especialista. Ou preciso editar um arquivo de código manualmente e depois importá-lo? Obrigado!

Há pessoas aqui que estão usando ativamente essa ferramenta (ou com base nela). Seria ótimo se elas pudessem ajudá-lo a entendê-la.

Infelizmente, compartilhei tanto do meu trabalho com a comunidade que não só não consigo encontrar tempo para responder construtivamente a perguntas de nível básico, como também quase parei de publicar meus desenvolvimentos e resultados.

 

Uma maneira conveniente de executar testes avançados ao analisar manualmente os resultados das otimizações.

// Executar o Forward da tabela de resultados de otimização (executado no Terminal).
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/pt/code/26132

sinput datetime inForward = D'2020.01.01'; // Encaminhar de

const bool Init = EventSetMillisecondTimer(100);

void OnTimer()
{
  static const string Forward = "[Tester]\r\nFromDate=" + TimeToString(inForward, TIME_DATE) +
                                "\r\n[TesterInputs]\r\ninBestInterval_Action=true";
  static bool Ready = true;
  static bool Flag = false;
  
  static string Settings;
  
  if (Ready)
    Ready = MTTESTER::IsReady();
  else if (MTTESTER::IsReady())
    Ready = (Flag = !Flag) ? !(MTTESTER::GetSettings(Settings) && MTTESTER::SetSettings2(Forward) && MTTESTER::ClickStart(false))
                           : MTTESTER::SetSettings2(Settings);
}

Abro a tabela de otimização de qualquer Expert Advisor e clico em "Run single test" (Executar teste único) nas passagens de interesse. Obtenho o resultado da passagem.

Isso economiza muito tempo (para mim, uma passagem dura alguns segundos), especialmente com o BestInterval.

 
Thierry Waltrich:
Ei, essa parece ser uma ferramenta incrível. Estou tentando usar o Google Tradutor, mas não sei como trabalhar com ele. Existe algum tutorial em inglês? Não sei em que ponto posso ativá-la e fazer a lista dos símbolos a serem testados com meu especialista. Ou preciso editar um arquivo de código manualmente e depois importá-lo? Obrigado!

Você precisa selecionar o Expert que deseja otimizar no testador de estratégia e definir os parâmetros a serem otimizados.

Em seguida, compile o Exemplo 1 e arraste-o e solte-o em qualquer gráfico (executar), e ele começará a executar o Expert Advisor nos gráficos e intervalos de tempo definidos no código do Exemplo 1.

Portanto, você precisa de um MultitesterExpert que, como um autômato, execute o Expert otimizado em diferentes _Symbol / _Period etc.

Ao estudar os comentários do Exemplo 1 e do Exemplo 2, você poderá criar seu próprio MultitesterExpert com base neles.

 

GetSettings(Str) interrompe o teste em agentes locais.

GetSettings(Str) é usado para descobrir que tipo de modelagem de ticks é usado no teste.

Exemplo:

Adicionei o seguinte ao código de exemplo do Expert Advisor de média móvel:

#include <fxsaber\MultiTester\MTTester.mqh>

int OnInit()
  {

// Código padrão do Expert Advisor

//obter as configurações do testador
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      Print(Str);
     }
   return(INIT_SUCCEEDED);
  }

Executo a otimização com enumeração completa de parâmetros e, como resultado, o testador tende a mudar de qualquer guia para a guia "Configurações".

Um número desproporcional de edifícios é distribuído para agentes locais e eles não são executados.


Você pode sugerir algo por conta própria?

Arquivos anexados:
 
Sunriser:

Você pode me dar uma dica?

Em OnTesterInit, faça GetSettings e passe os valores obtidos de lá por meio de ParametersSetRange para a variável sinput.

Nos agentes locais, essa variável sinput lhe dirá qual é o modo.


O modo pode ser determinado por ticks reais sem a DLL.