No final da melhor passagem, os dados são obtidos e, a partir deles, são formadas (intervalos definidos de parâmetros de entrada) várias tarefas para otimização.
Todas as otimizações do item 3 são executadas.
As melhores passagens são obtidas de todas as otimizações do item 4 e salvas como conjuntos para negociação de portfólio.
Ele se mostrou um scanner de mercado e um ajustador de TS muito eficientes. As fontes TC não são necessárias para essas manipulações.
Ele acabou se tornando um scanner de mercado e um ajustador de TS muito eficiente.
#property script_show_inputs#include <fxsaber\MultiTester\MultiTester.mqh> // https://www.mql5.com/pt/code/26132#include <fxsaber\MultiTester\Task.mqh>
inputbool OnlyCustomSymbols = true; // Somente caracteres personalizadosinputbool AllSymbols = false; // Todos os caracteres ou atuaisvoid Add( conststring SymbName )
{
TesterSettings.Add(NULL, SymbName, 0, 0, 0, TASK::InitBase, TASK::DeinitBase);
for (int i = 0; i < ::inAmount; i++)
TesterSettings.Add(NULL, NULL, 0, 0, 0, TASK::InitSub, TASK::DeinitSub);
}
// Essa função é responsável por gerar a lista de tarefas.void SetTesterSettings()
{
if (AllSymbols)
// Pesquisar todos os símbolos do Market Watch.for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
{
conststring Name = SymbolName(i, true);
if (!OnlyCustomSymbols || SymbolInfoInteger(Name, SYMBOL_CUSTOM))
Add(Name);
}
elseif (!OnlyCustomSymbols || SymbolInfoInteger(_Symbol, SYMBOL_CUSTOM))
Add(_Symbol);
}
O Expert Advisor deve ter
sinputint inMinTrades = 500; // Número mínimo de negociações (posições).sinputint inMaxTrades = 90000; // Número máximo de negociações (posições).doubleOnTester()
{
return(((TesterStatistics(STAT_TRADES) >= inMinTrades) && (TesterStatistics(STAT_TRADES) <= inMaxTrades)) ? TesterStatistics(STAT_PROFIT) : 0);
}
Não sei sobre as versões anteriores. Mas a versão mais recente pode executar um teste para o mesmo instrumento várias vezes.
Done aparece no registro, depois vazio (Start não aparece), e o terminal iniciou uma nova passagem ao mesmo tempo. Parece que else if (IsRun = (Init = TesterSettings.Init(Pos)) && TesterSettings.Run(Pos)) retorna falso, porque TesterSettings.Run(Pos) retornou falso. E na próxima passagem do cronômetro, else if (MTTESTER::IsReady()) retornará false, o que fará com que o loop fique esperando. O próprio TesterSettings.Run(Pos)) retorna falso, o que parece ser trivial devido ao tempo limite, ou seja, ele simplesmente não espera e sai.
Agora, você tem total liberdade para automatizar o testador.
Um dos exemplos de aplicativos reais (tudo é feito automaticamente)
Ele se mostrou um scanner de mercado e um ajustador de TS muito eficientes. As fontes TC não são necessárias para essas manipulações.
Ele acabou se tornando um scanner de mercado e um ajustador de TS muito eficiente.
O Expert Advisor deve ter
Não sei sobre as versões anteriores. Mas a versão mais recente pode executar um teste para o mesmo instrumento várias vezes.
Done aparece no registro, depois vazio (Start não aparece), e o terminal iniciou uma nova passagem ao mesmo tempo. Parece que else if (IsRun = (Init = TesterSettings.Init(Pos)) && TesterSettings.Run(Pos)) retorna falso, porque TesterSettings.Run(Pos) retornou falso. E na próxima passagem do cronômetro, else if (MTTESTER::IsReady()) retornará false, o que fará com que o loop fique esperando. O próprio TesterSettings.Run(Pos)) retorna falso, o que parece ser trivial devido ao tempo limite, ou seja, ele simplesmente não espera e sai.
traveller00:
TesterSettings.Run(Pos)) retorna falso parece ser trivial devido ao tempo limite, ou seja, ele simplesmente não espera e sai.
Se for o caso, tente aumentar esse número
Nunca tive um caso em que o botão Iniciar não se transformasse em um botão Parar por um longo tempo após ser pressionado.
Executei o Exemplo 3 com cem caracteres e tudo funcionou bem.
Sim, foi isso que eu fiz, aumentei para 50. Mas para o caso de alguém ter um problema semelhante ou querer ajustá-lo na versão geral.
Registrei o número de tentativas necessárias para alterar o status do botão. Resultados interessantes.
ZY Talvez esse bug ainda esteja ocorrendo.