Bibliotecas: MultiTester - página 49

 
fxsaber #:
Tem certeza de que está usando a versão atual do MTTester.mqh? O código a seguir está lá.

Lembro que atualizei para a versão mais recente, mas não sei por que não atualizei esse arquivo. Tudo está funcionando bem agora.

 
Добрый день!

Перестал компилироваться прилагаемый скрипт.
Выдается ошибка:
a conversão de parâmetro do tipo 'short[260]' para 'ushort[] &' não é permitida MTTester.mqh 156 39
int user32::GetClassNameW(long,ushort&[],int) winuser.mqh 1414 37

Может быть что-то нужно поменять в MTTester.mqh ?

Ранее он прекрасно компилировался.

Не могли бы помочь?

С уважением, Александр
Arquivos anexados:
_Noc.mq5  62 kb
 
klycko #:
O script anexado parou de ser compilado.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Bibliotecas: MultiTester

fxsaber, 2025.06.08 16:57

A partir da KB, faço o download dos códigos-fonte apenas clicando no arquivo correspondente, como na imagem.

Acabei de baixá-lo dessa forma para verificar - compilado sem erros.

 
fxsaber #:

Muito obrigado!

Tudo funciona novamente!

 

Fiz o download conforme mostrado na imagem acima, mas ocorreu um erro no cmopile

Mttester.mqh compilado erro pls verificar para nova compilação MT5 V5 BULD 5142


ERRROS :


O tipo de conversão de parâmetro 'short[260]' para 'ushort[] &' não é permitido MTTester.mqh 135 39

'ReadFile' - nenhuma das sobrecargas pode ser aplicada à chamada de função MTTester.mqh 1283 21


 
dave365 #:

Baixado conforme mostrado na imagem acima, mas com erro no cmopile

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MultiTester

fxsaber, 2025.06.12 14:55

O tamanho da versão atual do arquivo MTTester.mqh é atualmente de 123.822 bytes.

 

Oi @fxsaber

Espero que esteja indo bem.

Estou acompanhando seu trabalho com o multitester. Li os exemplos e a descrição da biblioteca sobre como usá-la, mas não sei como ela será usada.

Como tenho um EA que escrevi para testar/otimizar um indicador sobre 9 símbolos. Implementei o código da seguinte forma em um EA.

//+------------------------------------------------------------------+
//|MultiTesterBase.mq5
//|Copyright 2025, MetaQuotes Ltd. |
//| https://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <fxsaber\MultiTester\MultiTester.mqh>

#define  EA_NAME "IndicatorTesting\\EAs\\ash_indicator_testing.ex5"

// essa função é responsável por gerar a lista de tarefas
void SetTesterSettings()
{
   TesterSettings.Add(EA_NAME, "EURUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "AUDNZD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "EURGBP", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "AUDCAD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "CHFJPY", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "CADSGD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "BTCUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "XAUUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "US500", PERIOD_CURRENT);
}
//+------------------------------------------------------------------+

Mas não sei o que fazer depois disso, pois quero otimizar os parâmetros em relação aos símbolos fornecidos. No testador, tive que selecionar o EA ash_indicator_testing, pois, se não o fizer, não terei os parâmetros de otimização. Depois de fazer isso, apliquei o trecho de código colado acima, ou seja, (multitester ea) no gráfico! Esse é o curso de ação correto ou estou fazendo errado? porque não consegui encontrar informações suficientes sobre o uso.

Por favor, me oriente sobre isso.

Com os melhores cumprimentos

 
Hafiz Tamur Ahmed #:

Por favor, me direcione

Historicamente, o MultiTester.mqh não é usado para escrever interações com o Tester, pois usa um modelo de evento, que é muito complexo. Portanto, recomendo imediatamente o uso de uma abordagem diferente - via MTTester.mqh.


Aqui está um bom exemplo.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Bibliotecas: MultiTester

fxsaber, 2024.01.17 12:13 AM

#include <fxsaber\MultiTester\MTTester.mqh>    // https://www.mql5.com/pt/code/26132

#define _CS(A) ((!IsStopped()) && (A))
#define  PAUSE 200

void Run( const string Settings )
{
  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);

  MTTESTER::CloseNotChart();
    
  if (_CS(MTTESTER::SetSettings2(Settings)))
    MTTESTER::ClickStart(false);

  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);
}

void OnStart()
{
  string Settings[] = {"[Tester]\n" +
                       "Expert=Input_String_Example_Alternative.ex5\n" +
                       "Symbol=EURUSD\n" +
                       "Period=M1\n" +
                       "Optimization=2\n" +
                       "Model=4\n" +
                       "FromDate=2023.01.01\n" +
                       "ToDate=2024.01.01\n" +
                       "ForwardMode=0\n" +
                       "Deposit=1000000000\n" +
                       "Currency=USD\n" +
                       "ProfitInPips=1\n" +
                       "Leverage=100\n" +
                       "ExecutionMode=0\n" +
                       "OptimizationCriterion=6\n" +
                       "[TesterInputs]\n" +
                       "inAmount=1||1||1||10||N\n" +
                       "inCount=2||2||1||20||N\n" +
                       "inPeriod=3||3||1||30||N\n" +
                       "inKoef=4.56||4.56||0.456000||45.600000||N\n" +
                       "inLog=7.89||7.89||0.789000||78.900000||N\n" +
                       "inFlag=true||false||0||true||N"
                      };

  for (uint i = ArraySize(Settings); (bool)i--;)
    Run(Settings[i]);
}

As configurações do testador são salvas por meio de CTRL+C/V. Você pode salvá-las em arquivos separados e, em seguida, preencher a matriz Settings[] na fonte acima com os dados delas.


Exemplo adicional.

Optimize EA over a time window
Optimize EA over a time window
  • 2025.06.30
  • Maker
  • www.mql5.com
Is it possible to make the Strategy Tester to Optimize EA running it automatically multiple times over a range of time windows...
 

Obrigado pela resposta, mas não consigo entender a implementação do EA de controle, como ele deve ser implementado e como deve ser usado! Porque eu tenho lido o fórum, mas não vi nenhum pop-up aparecer ou algo do tipo. A única coisa que aconteceu do meu lado quando apliquei o EA do controlador no meu gráfico foi uma linha informando que estava aguardando o testador e o que estava sendo realizado, e o testador de estratégia abaixo piscando consistentemente. Não consegui fazer nada com o testador!

Seria ótimo se um guia completo de ponta a ponta fosse fornecido nos documentos da biblioteca, para que seja fácil para novatos como eu entenderem e implementarem as coisas de acordo com seus cenários!

Atenciosamente

CC: @fxsaber

 
Obter o número de ticks em um mês do calendário de uma forma não padrão.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/pt/code/26132

#define  PRINT(A) Print(#A + " = " + (string)(A));

void OnStart()
{
  MqlTick Ticks[];
  
  // Número de ticks para um mês do calendário de forma regular.
  PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, D'2025.08.01' * 1000, D'2025.09.01' * 1000 - 1));
  
  // O número de ticks por mês do calendário de uma forma não padrão.
  PRINT(MTTESTER::GetAmountFileMonthTicks(D'2025.08.01'));
}


Resultado.

CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, D'2025.08.01' * 1000, D'2025.09.01' * 1000 - 1) = 10820615
MTTESTER::GetAmountFileMonthTicks(D'2025.08.01') = 10820615