Embora o MT5 permita a criação de critérios de otimização customizados (Custom Max), os Expert Advisors da Rico não têm essa opção disponibilizada. Mesmo os critérios multiobjetivo nativos disponíveis no MT5, não tem a opção de considerar o número de trades como participante da função objetivo, talvez porque o Forex (ambiente para o qual foi projetado) não contemple custos de corretagem. Mas, como cada trade possui esses custos na BMF, considerá-los na otimização passa a ser uma necessidade real.
Otimizar as variáveis de decisão computando apenas uma função objetivo baseada no Balance Max, pode levar a varredura do espaço de soluções em que os gastos com corretagem inviabilizem soluções encontradas, como por exemplo, um Profit de 1.000 com 600 trades, que levaria a instância do problema para perdas em situação real.
Para resolver esse problema, basta criar um função OnTester() com os parâmetros multiobjetivo desejado e inserir no corpo do EA. Um exemplo de função multiobjetivo poderia ser o Lucro Final (Profit), menos a quantidade de trades vezes 2 (para trazer a corretagem para o problema), multiplicado pelo complemento de 100 do Máximo Drawdown.
FO = (Profit - (2*qtd_trades)) * (100-MaxDrawdown)/100
A Função OnTester() poderia ser desta forma:
//+------------------------------------------------------------------+//| Funcao Multiobjetivo de Otimização |//+------------------------------------------------------------------+double OnTester(){ double profit = TesterStatistics(STAT_PROFIT); double max_dd = TesterStatistics(STAT_BALANCE_DDREL_PERCENT); double qtd_trades = TesterStatistics(STAT_TRADES); double funcao_objetivo = 0.0;
if (profit > 0) funcao_objetivo = (profit - (qtd_trades*2)) * (100 - max_dd) / 100; else funcao_objetivo = profit - (qtd_trades*2);
return(funcao_objetivo);}
A adoção desses critérios para a otimização é simples, bastando adicionar o código no corpo do Expert Advisor.
Fica a sugestão!
postado em MetaTrader 5
N
Melhores posts de NeuroInvest
-
Otimização Multiobjetivo