Navigation

    Portal do Trader
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users

    Otimização Multiobjetivo

    MetaTrader 5
    4
    4
    2156
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      NeuroInvest last edited by

      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!
      1 Reply Last reply Reply Quote 1
      • RodrigoCohen
        RodrigoCohen last edited by

        Muito legal Roberto! Nunca tinha pensado por esse lado. Eu calculo a corretagem na mão atualmente e incluo um slippage arbitrado tb.
        1 Reply Last reply Reply Quote 0
        • M
          MCastro last edited by

          Roberto,

          Muito legal sua explicação..

          seria possível introduzir o parâmetro (custo por operação ? ) onde seria calculado o custo na função?

          1 Reply Last reply Reply Quote 0
          • I
            Ian last edited by

            Grato pelo Post Roberto.


            Estava há vários dias buscando uma solução semelhante a que vc sugeriu aqui.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            O Portal do Trader não se responsabiliza pelas informações e opiniões veiculadas neste fórum, sendo elas de autoria individual de cada participante. Vale ainda ressaltar que investimentos em mercado de renda variável possuem riscos, ganhos passados não garantem ganhos futuros, e a decisão final e responsabilidade sobre cada operação é de cada investidor, devendo ser tomada individualmente.
            © 2021 Portal do Trader. Todos os direitos reservados.