Discussão do artigo "Gerenciador de riscos para robôs de trading (Parte I): include para controle de riscos em EAs"

 

Novo artigo Gerenciador de riscos para robôs de trading (Parte I): include para controle de riscos em EAs foi publicado:

O trading impõe altas exigências à disciplina de gestão de risco. Este artigo analisa as principais causas do insucesso dos traders e propõe uma solução técnica na forma da classe CEnhancedRiskManager para a plataforma MQL5. Inclui também testes práticos em um EA de grade agressivo.

A experiência mostra que contas de trading sem um sistema bem pensado de gestão de risco, em geral, tendem a ter vida útil curta.

Existem três armadilhas psicológicas clássicas em que praticamente todo trader iniciante acaba caindo. A primeira é a euforia depois de uma sequência de operações lucrativas. Depois de algumas boas entradas no mercado, surge a sensação de que você entendeu o mercado, desvendou seu segredo e uma voz interna sussurra: "Estou no lucro, posso me permitir um risco maior!". Então o trader aumenta o lote, ignora os stop-losses e abre mais posições ao mesmo tempo. O resultado é previsível: em um único dia, perde-se aquilo que levou semanas para ganhar.

A segunda armadilha é a esperança de reversão do mercado. O prejuízo da posição aumenta, os números vermelhos na tela ficam cada vez maiores, mas o trader continua segurando a operação. "Está prestes a reverter", "É só uma correção", "O mercado não pode cair para sempre": esses mantras são repetidos por milhares de traders até que um margin call encerre de vez sua carreira no trading.

A terceira armadilha é a mais traiçoeira: ignorar as próprias regras. O trader cria um sistema de trading, define regras claras de entrada e saída e estabelece limites de risco. Mas, em algum momento, surge o pensamento: "O que pode acontecer de tão grave? Só desta vez dá para violar a regra". O trader desativa os stop-losses, excede o lote máximo e abre operações contra a tendência. Esse é o caminho para uma quebra inevitável, e o trader entende isso perfeitamente, mas não consegue parar.

Gerenciador de riscos para robôs de trading (Parte I): Include para controle de riscos em EAs


Autor: Yevgeniy Koshtenko

 
Obrigado por compartilhar suas ideias e códigos; eu os usarei como desejar
 
Existe uma opção para MQL4?
 

Olá, obrigado por seu trabalho!

No entanto, eu gostaria de ver o código da classe correspondente à descrita no artigo, por exemplo

No artigo:

enum ENUM_RISK_CALC_TYPE {
    RISK_CALC_BALANCE_ONLY,   // Cálculo apenas do saldo
    RISK_CALC_EQUITY_ONLY,    // Cálculo apenas com base no patrimônio líquido
    RISK_CALC_COMBINED,       // Cálculo combinado
    RISK_CALC_ADAPTIVE        // Cálculo adaptativo
};

No arquivo anexado:

enum ENUM_RISK_CALC_TYPE {
    RISK_CALC_BALANCE_ONLY,   // Only Balance
    RISK_CALC_EQUITY_ONLY,    // Only Equity
    RISK_CALC_BALANCE_EQUITY, // Balance/Equity (US Prop Style)
    RISK_CALC_PROP_STANDARD   // Standard Prop Company Rules
};

"Adaptive calculation", mencionado no artigo, não é mostrado de forma alguma no código da classe anexada.

Além disso, há um erro no código que não permite a compilação do código EA:

// Trading Object
    CTrade              m_trade;

Deve estar na seção pública:

Favor verificar.

 
Minha compilação falha na linha 124: 123 // Definir o número mágico para um objeto de negociação
124 g_RiskManager.m_trade.SetExpertMagicNumber(InpMagicNumber);
 
Борис Ворона #:
Minha compilação falha na linha 124: 123 // Definir o número mágico para um objeto de negociação
124 g_RiskManager.m_trade.SetExpertMagicNumber(InpMagicNumber);
Mova a linha "CTrade m_trade;" da seção private: para a seção public no arquivo de descrição da classe EnhancedPropRiskManager.mqh:
 
Obrigado, ele compila agora. Mas o adaptativo não quer compilar.
 

Apliquei o gerenciador de risco ao meu EA em funcionamento com martingale

Aqui está o resultado do teste de 2025 sem o gerenciador de risco:

E aqui com as melhores configurações do gerenciador de risco:

Como você pode ver, o rebaixamento absoluto diminuiu pela metade e o lucro, quatro vezes.

 

Um aspecto que considero fundamental nos sistemas algorítmicos é separar claramente a qualidade da estratégia da quantidade de risco assumida.

Uma alta rentabilidade, por si só, diz relativamente pouco se, para alcançá-la, o sistema precisa manter uma carga elevada sobre o depósito ou suportar grandes drawdowns.

No meu caso, prefiro avaliar primeiro parâmetros como drawdown, exposição máxima, estabilidade da execução e comportamento do sistema em diferentes condições de mercado.

Também considero importante manter as regras de risco dentro da própria lógica do sistema e evitar aumentar a exposição simplesmente porque há uma sequência favorável.

A longo prazo, controlar quanto se pode perder me parece tão importante quanto analisar quanto o algoritmo pode ganhar.

 
Aleksander Gladkov #:

Apliquei o gerenciador de risco ao meu robô de trading que utiliza a estratégia martingale

Aqui está o resultado do teste de 2025 sem o gerenciador de risco:

E aqui está o resultado com as melhores configurações do gerenciador de risco:

Como você pode ver, o drawdown absoluto diminuiu pela metade, enquanto o lucro quadruplicou.

A perda relativa em relação ao capital próprio diminuiu e passou a ficar dentro de limites razoáveis.

Era >50% (o que, na prática, significaria perda total e stop-out garantidos), e passou para ~20%, o que já permite tentar, pelo menos com centavos.

É um pouco estranho que o número de negociações tenha diminuído em um terço. É excessivo, não deveria ser assim.

PS/ apesar de você ter feito experiências com o martingale. Que, por definição, é uma coisa em si, puro gerenciamento de capital. O que o resultado indica? Basicamente, indica que você não levou o sistema Martingale até o fim: em alguns pontos, exagerou no risco; em outros, ficou aquém... ;-)
Claramente, há o que melhorar.