English Русский 中文 Español Deutsch 日本語
Avaliação da eficácia dos sistemas de negociação pela análise de seus componentes

Avaliação da eficácia dos sistemas de negociação pela análise de seus componentes

MetaTrader 4Testador | 14 setembro 2016, 16:40
937 0
Alexander Fedosov
Alexander Fedosov

Introdução

Qualquer pessoa que inicia suas negociações nos mercados financeiros muito rapidamente percebe que o sucesso nesta linha de negócios somente é possível com uma certa abordagem sistemática. A negociação espontânea pode ser uma questão de sorte, emocional ou de erros e acertos e normalmente não ajuda a alcançar resultados positivos, porém se isso acontecer, o sucesso ocorre brevemente e as consequências podem ser dramáticas. Qualquer análise é um dos componentes-chave de sucesso em negociação nos mercados financeiros, seja gráfica, com base em indicadores, ou qualquer outro. Portanto, de certa maneira, este arquivo é uma pesquisa sobre alguns sistemas de negociação simples e independentes, no qual podemos analisar a sua eficácia em conjunto com a utilidade da aplicação.


A definição de critérios para a avaliação da eficácia do sistema de negociação

Normalmente, a avaliação da eficácia de qualquer sistema de negociação é realizada através de um determinado conjunto de parâmetros definidos e específicos, assim como alguns dos valores resultantes do sistema. O tamanho do períodos de indicadores, Stop Loss ou Take Profit, ou até um conjunto mais complexo de coeficientes de sistemas que afetam a entrada e saída do mercado, podem ser usados como parâmetros definidos. Os valores resultantes, podem ser o lucro líquido, rebaixamento, porcentagem de transações com sucesso ou o valor médio de negócios lucrativos no depósito em moeda.

Qualquer sistema de negociação tem sua eficácia reduzida ao longo do tempo, uma vez que a natureza do mercado de câmbio está em constante mutação, isto se torna evidente a partir dos indicadores resultantes. Portanto, o conjunto dos parâmetros do sistema têm de ser alterados e ajustados às condições de mudança. Neste artigo pretendemos definir o conceito de um sistema de negociação complexo.

O sistema de negociação complexo é um conjunto de blocos separados que têm seus próprios parâmetros e algoritmos que trabalham em conjunto com os outros. O funcionamento de qualquer um destes blocos incluídos no sistema pode ser avaliado por um dado conjunto de critérios. Vamos considerar o esquema que avalia a eficácia do sistema mostrado na Figura 1. O sistema complexo tem três blocos constituintes A, B e C, onde cada um deles tem os seus próprios parâmetros operacionais. O funcionamento e a eficácia deste sistema podem ser avaliados por três dimensões: 1, 2 e 3. Ao longo do tempo as condições de mercado e o sistema de negociação mudam, alterando para um lado insatisfatório os parâmetros 1-3, sinalizando que é hora de reconfigurar o sistema. Isto pode ser feito usando os seguintes métodos:

  1. Otimize todos os nove parâmetros, a fim de adaptar o sistema de acordo com às realidades atuais do mercado. Este método, no entanto, contém redundâncias - por que otimizar todos os parâmetros, se é possível descobrir qual bloco começou a pior operação?
  2. Sendo assim, o segundo método. Um conjunto de critérios de avaliação C1, C2, C3 é criado para todos os três blocos de sistema, o que permite avaliar e comparar a eficiência da operação para cada um dos blocos separadamente.

Vantagens do segundo método:

  • Evita a redundância, pois não há necessidade de otimização se os blocos funcionarem sem problemas.
  • Sistema de monitoramento. Os parâmetros C1-C3 podem ser medidos após alguns períodos de tempo, esclarecendo o comportamento do sistema e das suas unidades tanto em conjunto, quanto separado em diferentes momentos do mercado (sessão de negociação, comunicado de imprensa, entre outros).
  • Análise de vulnerabilidade. Isso permite determinar, quais blocos arrastam todo o sistema para baixo, sendo assim ao invés de substuir ou melhorar todo o sistema, apenas otimize os blocos em particular.


Fig.1. Sistema de negociação complexo


Avaliando a eficácia do sistema de negociação através da análise de seus componentes

Para testar a eficiência de todo o sistema de negociação, é preciso verificar como os blocos do sistema operam juntos e como eles trabalham separadamente. O sistema de teste será composto por dois blocos:

  1. Bloco A. Tem como base os sinais do indicador padrão Parabolic SAR.
  2. Bloco B. Baseia-se nos sinais do indicador padrão Accelerator Oscillator (AC).

Imediatamente, vamos definir um conjunto de critérios para avaliar esses blocos:

  • Critério C1 — lucro líquido.
  • Critério C2 - máximo rebaixamento.
  • Critério C3 - lucro das negociações (% do total).

Para se ter um entendimento maior, vamos escolher os mesmos indicadores como os parâmetros de eficiência global:

  • Parâmetro 1 - lucro líquido.
  • Parâmetro 2 - máximo rebaixamento.
  • Parâmetro 3 - negócios rentáveis (% do total).

Exemplos dos sinais de entrada no mercado para estes indicadores estão localizados nas documentações da biblioteca padrão MQL5: Sinais do Parabolic SAR e Sinais do Accelerator Oscillator (primeiras condições). Para cada um deles iremos descrever as condições de entrada e descobrir as condições em que eles são eficazes num teste de intervalo predeterminado.

Todos os parâmetros do teste são escritos no Expert Advisor da seguinte maneira:

Fig.2. Parâmetros do Expert Advisor


//+------------------------------------------------------------------+
//|                                                                  |
//|                                                Alexander Fedosov |
//|                           https://www.mql5.com/ru/users/alex2356 |
//+------------------------------------------------------------------+
#property copyright "Alexander Fedosov"
#property link      "https://www.mql5.com/ru/users/alex2356"
#property version   "1.00"
#property strict

#include "trading.mqh"

input int            tm = 1;                       //Teste do método 1,2 ou 3
input int            SL = 40;                      //Stop-loss
input int            TP = 70;                      //Take-profit
input bool           lot_const = false;            //Lote do saldo?
input double         lt=0.01;                      //Lote manual se lot_const=falso 
input double         Risk=2;                       //O risco no lote do saldo, %
input int            Slippage= 5;                  //Desvio
input int            magic = 2356;                 //Número Mágico
input ENUM_TIMEFRAMES tf1 = PERIOD_H1;             //Timeframe para o cálculo do module1
input ENUM_TIMEFRAMES tf2 = PERIOD_M5;             //Timeframe para o cálculo do module2
input double         Step = 0.02;                  //Passo PSAR
input double         Mxm = 0.2;                    //PSAR máximo

CTrading tr(magic,Slippage,lt,lot_const,Risk,5);
//+------------------------------------------------------------------+
//| Função do Expert tick                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(tm<1 || tm>3)
      return;
//--- Condições de entrada no mercado para o módulo Parabolic SAR 
   if(tm==1 && !tr.isOpened(magic))
     {
      double psar[],prc[];
      ArrayResize(psar,3);
      ArrayResize(prc,3);
      for(int i=0; i<3; i++)
        {
         psar[i]=iSAR(_Symbol,tf1,Step,Mxm,i);
         prc[i]=iClose(_Symbol,tf1,i);
        }

      if(psar[2]>prc[2] && psar[1]<prc[1] && psar[0]<prc[0])
         tr.OpnOrd(OP_BUY,lt,TP,SL);
      if(psar[2]<prc[2] && psar[1]>prc[1] && psar[0]>prc[0])
         tr.OpnOrd(OP_SELL,lt,TP,SL);

     }
//--- Condições de entrada no mercado para o módulo AC
   if(tm==2 && !tr.isOpened(magic))
     {
      double ac[];
      ArrayResize(ac,3);
      for(int i=0; i<3; i++)
         ac[i]=iAC(Symbol(),tf2,i);

      if(ac[2]>0 && ac[1]>0 && ac[1]>ac[2])
         tr.OpnOrd(OP_BUY,lt,TP,SL);
      if(ac[2]<0 && ac[1]<0 && ac[1]<ac[2])
         tr.OpnOrd(OP_SELL,lt,TP,SL);

     }
//--- Condições de entrada no mercado, quando dois módulos funcionam em conjunto
   if(tm==3 && !tr.isOpened(magic))
     {
      double psar[],prc[],ac[];
      ArrayResize(psar,3);
      ArrayResize(prc,3);
      ArrayResize(ac,3);
      for(int i=0; i<3; i++)
        {
         psar[i]=iSAR(_Symbol,tf1,Step,Mxm,i);
         prc[i]=iClose(_Symbol,tf1,i);
         ac[i]=iAC(Symbol(),tf2,i);
        }
      if((psar[2]>prc[2] && psar[1]<prc[1] && psar[0]<prc[0]) || (ac[2]>0 && ac[1]>0 && ac[1]>ac[2]))
         tr.OpnOrd(OP_BUY,lt,TP,SL);
      if((psar[2]<prc[2] && psar[1]>prc[1] && psar[0]>prc[0]) || (ac[2]<0 && ac[1]<0 && ac[1]<ac[2]))
         tr.OpnOrd(OP_SELL,lt,TP,SL);

     }

  }
//+------------------------------------------------------------------+

O primeiro parâmetro do EA é tm (modo de teste) e ele pode armazenar valores de 1, 2 ou 3. Estes valores correspondem a três modos de operação:

  • tm = 1. São utilizadas apenas as condições de entrada no mercado com indicador Parabolic SAR. Modo de funcionamento somente para o bloco A.
  • tm = 2. São utilizadas apenas as condições de entrada no mercado com indicador Accelerator Oscillator. Modo de operação apenas para o bloco B.
  • tm = 3. Operação conjunta de ambos os blocos. Todo o sistema opera.

Ao alterar o parâmetro do modo de teste podemos descobrir os parâmetros de nosso interesse: para blocos A e B, C1-C3 e para todo o sistema - parâmetros 1-3. A seguir estão os resultados obtidos do bloco sobre o Parabolic SAR (Fig.3), AC (Fig. 4) e sua operação conjunta (Fig. 5).


Fig.3. Testando o módulo Parabolic SAR



Fig.4. Testando o módulo AC



Fig.5. Operação conjunta de módulos Parabolic SAR e AC

Os resultados obtidos dos três diferentes modos de funcionamento com base na tabela de correspondência, serão fornecidos para fins de esclarecimento:

Modo de teste Lucro Líquido Negociações Lucrativas,% Máximo rebaixamento
1 27,56 37,91 32,71
2 106,98 39,19 38,94
3 167,16 40,64 18,62

 

Simulação da deterioração do sistema

Vamos alterar os parâmetros operacionais do bloco A (Modo de Teste = 1) para o lado que reduz a sua eficiência. Isso nos mostrará a resposta parao o que vai acontecer com o sistema, no caso de um dos blocos alterar para pior.

Para simular a diminuição da eficiência do sistema será mudado um parâmetro relacionado com o funcionamento do bloco A - Prazo para o cálculo do module1 - da seguinte maneira, como mostrado na Fig.6. Isso vai modificar o seu período de cálculo baseado no Parabolic SAR, no qual afetará os pontos de entrada no mercado, adulterando a eficiência de todo o sistema.

Fig.6. Simulação para diminuir a eficiência do sistema



Fig.7. O resultado da alteração do parâmetro do módulo baseado no Parabolic SAR

Para fins ilustrativos, vamos comparar o desempenho observado do bloco A com dois valores diferentes do seu parâmetro "Timeframe for the calculation module1":

Prazo para o cálculo do module1 Lucro líquido Negociações Lucrativas,% Máximo rebaixamento
1 Hora 27.56 37.91 32.71
4 Horas 2.54 36.73 43.21

 

É evidente, que o cálculo do período de 4 horas,mostrou resultados mais simples do funcionamento do módulo para todos os três critérios de avaliação. Testando todo o sistema com os valores deliberadamente degradados, um dos seus componentes também reduziu a eficácia dos parâmetros de 1-3, tal como mostrado na Figura 8.


Fig.8. Operação conjunta enre o Parabolic SAR (deteriorado) e o AC

Agora vamos colocar todos os resultados dos testes, assim como as alerações que determinaram as modificações no bloco A, afetando a eficiência global do sistema.

Prazo para o cálculo do module1 Lucro líquido (módulo 1) Negociações lucrativas,%
(módulo 1)
Máximo rebaixamento,%
(módulo 1)
Lucro líquido
(sistema)
Negociações lucrativas,%
(sistema)
Máximo rebaixamento,%
(sistema)
4 Horas 2.54 36.73 43.21 139.34 40.00 24.9
1 Hora 27.56 37.91 32.71 167.16 40.64 18.62

Os resultados demonstram que, pesquisando separadamente cada bloco do sistema complexo, a fim de melhorar a eficiência, obtivemos um efeito positivo sobre os parâmetros de avaliação de todo o sistema. As teses no início deste artigo também confirmaram que este método é menos repetitivo do que a otimização de todo o sistema como um único objeto; Além disso, este método fornece as habilidades adicionais para monitorar o sistema.


Conclusão

Neste artigo foi apresentado um método avaliativo da eficácia dos sistemas de negociação através da análise de seus componentes. Com base nos testes e pesquisas realizadas sobre blocos no sistema e seus módulos, as seguintes conclusões podem ser observadas:

  • Este método de avaliação é melhor do que a otimização redundante de todos os parâmetros do sistema, identificando apenas os componentes que são necessários para serem otimizados e melhorados.
  • A criação de sistemas de negociação na forma dos componentes através de blocos, podem ser medidos por critérios fixados, permitindo um melhor gerenciamento, identificando os pontos fracos e atualizando com mais flexibilidade.
Uma pasta separada tem que ser criada para o teste correto, onde ambos os arquivos devem ser colocados, por exemplo MQL4\Experts\article1924.

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1924

Arquivos anexados |
trading.mqh (14.94 KB)
analysis.mq4 (3.37 KB)
Módulo de sinais de negociação utilizando o sistema Bill Williams Módulo de sinais de negociação utilizando o sistema Bill Williams
O artigo descreve as regras do sistema de negociação Bill Williams, o procedimento da aplicação de um módulo MQL5 desenvolvido com o objetivo de procurar e marcar padrões deste sistema no gráfico, as negociações automatizadas de acordo com os padrões encontrados e por fim, apresenta os resultados dos testes em vários instrumentos de negociação.
Interfaces Gráficas V: A Barra de Rolagem Vertical e Horizontal (Capítulo 1) Interfaces Gráficas V: A Barra de Rolagem Vertical e Horizontal (Capítulo 1)
Nós ainda estamos discutindo o desenvolvimento da biblioteca para a criação de interfaces gráficas no ambiente do MetaTrader. No primeiro artigo da quinta parte da série, nós vamos escrever as classes para as criação da barra de rolagem vertical e horizontal.
Interfaces Gráficas V: O Controle Lista (Capítulo 2) Interfaces Gráficas V: O Controle Lista (Capítulo 2)
No capítulo anterior, nós escrevemos as classes para criar a barra de rolagem vertical e horizontal. Neste capítulo, nós vamos implementá-las. Nós vamos escrever uma classe para criar o controle lista, sendo que a barra de rolagem vertical será sua parte integrante.
Expressões regulares para traders Expressões regulares para traders
As expressões regulares são uma linguagem especial para manipulação de textos de acordo com uma regra definida, às vezes, chamada de padrão ou máscara de expressão regular. Este artigo mostrará como manipular o relatório de negociação usando a biblioteca RegularExpressions para MQL5 e demostrará seus resultados de otimização.