Bibliotecas: MultiTester - página 11

 

Às vezes, é necessário limpar a pasta Tester. Por exemplo, o tamanho de um arquivo opt modesto é de aproximadamente 2 Mb. Se forem realizadas 10 mil otimizações, ele já terá 20 Gb. 10 mil caracteres - da mesma forma.

Você pode encontrar uma pasta que esteja muito inchada.

 

Tentei escrever essas linhas em meu EA e exemplo como"Média móvel", meu objetivo é otimizar todos os meus símbolos de observação do mercado, mas obtive a seguinte resposta.


#include <fxsaber\MultiTester\MultiTester.mqh>

e

void SetTesterSettings()


 
herrcrowley:

Tentei escrever essas linhas no meu EA e no exemplo como "Média móvel", meu objetivo é otimizar todos os meus símbolos de observação do mercado, mas obtive a seguinte resposta.

Configure seu EA no Tester. Em seguida, execute o MultiTester_Example no Terminal.

 

Olá novamente,

Muito obrigado por sua orientação. Agora, quando testo com "símbolos alfandegários" em true, o multitester não funciona e em false testa apenas o símbolo real a ser testado.


 
herrcrowley:

Muito obrigado por sua orientação. Agora, quando testo com "símbolos alfandegários" em true, o multitester não funciona e, em false, só testa o símbolo real a ser testado.

Infelizmente, a barreira do idioma ou outro obstáculo não me permite descobrir o que está errado.

 

Por algum motivo desconhecido, várias execuções de teste descarregam o script. Isso nem sempre acontece, às vezes mais cedo, às vezes mais tarde. Aconteceu apenas na iteração 413, por exemplo. O IsStopped é definido como verdadeiro e o script é descarregado, estragando todo o trabalho no meio do caso. Não há mensagens de erro. As mensagens de depuração mostraram que isso acontece após Sleep(100) depois de SendMessageW(Handle, WM_COMMAND, ID_EDIT_PASTE, 0);

na chamada do bool estático SetSettings( const string Str )

Abaixo está o conjunto mínimo com o qual se pode brincar. Mas suspeito que, afinal, seja o MetaTrader. Build 2245, mas é o mesmo na última build 2253. A compilação 2190 também tem isso, talvez antes também.

bool CloseAllOtherCharts()
{
  bool Res=false;
  for (long Chart = ::ChartFirst(); Chart != -1; Chart = ::ChartNext(Chart))
  {
    if(Chart != ::ChartID())
      Res |= ::ChartClose(Chart);
  }
  return Res;
}

void StartTest(string SymbName)
{
    string TesterInput = "[Tester]"+
                         "\nExpert=ChanRet"+
                         "\nSymbol="+SymbName+
                         "\nPeriod=M1"+
                         "\nOptimization=0"+
                         "\nModel=4"+
                         "\nFromDate=01.09.2019"+
                         "\nToDate=01.12.2019"+
                         "\nForwardMode=0"+
                         "\nDeposit=10000000"+
                         "\nCurrency=RUR"+
                         "\nProfitInPips=1"+
                         "\nLeverage=100"+
                         "\nExecutionMode=0"+
                         "\nOptimizationCriterion=6"+
                         "\nVisual=0";
    MTTESTER::SetSettings2(TesterInput);
    MTTESTER::ClickStart();
    while(!MTTESTER::IsReady() && !IsStopped())
      Sleep(100);
    CloseAllOtherCharts();
}

void OnStart()
{
  for(int i=0;i!=1000 && !IsStopped();++i)
  {
    StartTest("AFLT-12.19");
    StartTest("ALRS-12.19");
    Print((string)i);
  }
}
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет...
 
traveller00:

Abaixo está o conjunto mínimo para reprodução.

Sem reprodução. Todas as 1000 tarefas funcionam. Mas você deve ter a caixa de seleção para abertura automática de gráficos de backtest marcada, pois você fecha os gráficos por código. Eu tenho essa opção desativada. Talvez esse seja o motivo.

 
fxsaber:

a abertura automática do gráfico de backtest está marcada.

Vou lhe fazer uma pergunta mais longa. Onde está essa caixa de seleção? Não consegui encontrá-la no MT5.

 
traveller00:

Esta será uma pergunta mais chata. Onde está essa caixa de seleção? Não consegui encontrá-la no MT5.

 
traveller00:

Seu script deve suspender o Terminal se você tentar removê-lo.