English Русский 中文 Español Deutsch 日本語
Concurso de Expert Advisors dentro de um Expert Advisor

Concurso de Expert Advisors dentro de um Expert Advisor

MetaTrader 4Sistemas de negociação | 26 outubro 2015, 12:40
925 0
Evgeniy Trofimov
Evgeniy Trofimov

Introdução

Caros desenvolvedores e analistas de bolsas!

Muitos sistemas de negociação são estáveis por um período de tempo específico, mas adiante a curva do balanço começa a se mover para baixo. O trader fica desiludido e começa a inventar novos Santos Graal, otimizando os parâmetros, etc.

Eu chamo sua atenção a uma ferramenta de realização de negócios virtuais - VirtualTrend.mqh. Usando esta função, você pode abrir, fechar e trilhar negociações virtuais.

Tem as seguintes características úteis:

  1. A possibilidade de criar Expert Advisors adaptativos que podem ativar e desativar as negociações virtuais, de acordo com os resultados já estabelecidos no histórico pelos traders.
  2. A possiblidade de avaliar vários sistemas de negociação em termos percentuais dependendo da rentabilidade, neste artigo 5 sistemas de negociação são apresentados como exemplo. Os resultados da competição entre eles definirá qual será utilizado na decisão do sistema de negociação preferível para posterior aplicação no mercado real.
  3. Esta possibilidade de implementação de estratégias de negociação usando várias operações abertas por um instrumento é possível na plataforma MetaTrader 5, onde são utilizadas posições cumulativas (esse recurso não é descrito neste artigo, mas sugere-se como uma variante a usar).

Vamos dar uma olhada nas duas primeiras caracaterísticas.

O código Competition_v1.0.mq4 é um exemplo de Expert Advisor adaptativo; tem base competitiva determinada no sistema de negociação a ser usado. O Expert Advisor usa 5 (fica seu critério adicionar mais) sistemas de negociação que não são escolhidos aleatoriamente, mas baseados mais ou menos na estabilidade do trabalho do par EURUSD, dentro do timeframe diário

Importante! Deve-se usar apenas sistemas de negociação estáveis que são lucrativos ou perdedores permanentemente num certo período de tempo.

Por exemplo, um sistema de negociação, cuja sequência de vitórias é "PPPPPPPLLLLLLLLPPLPPPPPPPP", se encaixa nas condições a serem utilizadas neste Expert Advisor; mas se a sequência de vitórias é "LLPPLPLLPPPLLPLPPLPLPLLLPPLPL", ele não se encaixa ("L" - negociação perdedora, "P" - negociação lucrativa).

Um sistema de negociação onde as operações perdedoras são mais freqüentes, mas as negociações lucrativas cobrem as perdas não pode ser usado, pois o Expert Advisor simplesmente não conseguem se adaptar à rentabilidade.

A estabilidade de um sistema de negociação é determinada "pela vista" dos resultados dos testes realizados no período máximo (toda o histórico) no testador estratégia. O diagrama obtido das alterações do balanço permite determinar o número médio ponderado de operações responsáveis pelas mudanças da tendência. Por exemplo, um sistema de negociação que executa a seguinte seqüência de operações: PPPPPPPPLLLLLLPPPPPPPPPLPLLLLLLLLLLLPPPPPPPLLLLLLLLLLLLLPPPPPPLLLLLLLLLLPLPPPLLPPPPPP, a tendência do balanço altera depois de 6 a 8 operações. No cálculo classificatório recomenda-se definir o período da média do saldo igual a metade dessas negociações, ou seja, 3 ou 4.

Ativar e desativar o sistema de classificação, que ajuda o Expert Advisor a se adaptar às mudanças da dinâmica de rentabilidade, é gerenciado através do parâmetro RatingON. Com este parâmetro você pode facilmente encontrar um período médio do balanço e configurá-lo ao parâmetro Tх.PeriodRating.

Cada sistema de negociação pode ser ativado ou desativado a sua vontade usando o parâmetro Tх.Enabled, onde х é o número de sistemas de negociações.

Todos os testes de sistemas de negociação abaixo apresentados são conduzidos no EURUSD (timeframe D1) durante o período de 01.01.1999 a 01.06.2010.

Sistema de Negociação №1

  • Condição de entrada: quando a média móvel rápida cruza a uma lenta (ver a função T1_SignalOpen()).
  • Condição de saída: reverter cruzamento (veja a função T1_SignalClose()).


Figura 1. O teste do sistema de negociação №1 sem adaptação (RatingON = false)

O resultado do teste permite concluir que após cada 18-20 operações, esta estratégia muda a sua dinâmica de rentabilidade.

É por isso que o parâmetro T1.PeriodRating será definido para 20.

O teste do sistema de negociação №1 com adaptação habilitada (RatingON = true)


Figura 2.O teste do sistema de negociação №1 com adaptação habilitada (RatingON = true)

Sistema de Negociação №2

  • Condição de entrada: quando o indicador CCI cruza um certo nível de cima para baixo (veja a função T2_SignalOpen()).
  • Condição de saída: quando o sinal aparece na direção oposta (veja a função T2_SignalClose ()).

Durante o teste, durante o mesmo período descobrimos que a estabilidade é igual a cerca de 10 operações.


Figura 3.O teste do sistema de negociação №2 sem adaptação


Figura 4. teste do sistema de negociação №2 com a adaptação habilitada

Sistema de Negociação №3

A lógica de entrada e saída é a mesma do Sistema №1, no entanto os períodos de cálculo das médias móveis são diferentes.

Uma pequena observação:você pode reescrever todo o Competition_v1.0.mq4 e combiná-lo com estratégias de médias móveis de diferentes períodos.

Eu ainda não fiz estes testes, mas quando eu fizer, vou publicar.


Figura 5.O teste do sistema de negociação №3 sem adaptação

Este sistema de negociação executa algumas operações durante um longo período (quase 11 anos). Eu não recomendo usar esta estratégia em negociação real, pois o número de negociações no testador de estratégia é muito pequeno.

Eu adicionei esta estratégia por dar mais evidência na amostragem do desenvolvimento da adaptação. O parâmetro T3.PeriodRating é definido como 2 para esta estratégia.


Figura 6.O teste do sistema de negociação №3 com a adaptação habilitada

Sistema de Negociação №4

Eu vi essa estratégia muitas vezes na literatura.

Parece atraente mesmo sem a adaptação, mas usá-la na negociação não exige uma operação automatizada, pois é a longo prazo.

  • A entrada no mercado é com três médias móveis dispostas ordenadamente e se o indicador MACD é maior do que o nível especificado - T4.LimitMACD (ver a função T4_SignalOpen()).
  • A saída acontece se o preço cruza a segunda média móvel (consulte a função T4_SignalClose()).


Figura 7. O teste do sistema de negociação №4 sem adaptação

Esta estratégia de negociação tem uma estabilidade constante, de modo que o período de processamento dos dados para o cálculo da classificação não deve ser inferior a 20 operações. Eu defini T4.PeriodRating=20.


Figura 8.O teste do sistema de negociação №4 com a adaptação habilitada

Sistema de Negociação №5

Este sistema foi desenvolvido por mim e eu quero compartilhar com você de uma forma sofisticada.

  • Nós compramos se o indicador CCI cruza de baixo para cima o nível T5.LevelCCI especificado (ver a T5_SignalOpen () função). A configuração do nível para fechamento de negociação é quando o MyLevel está mais baixo do que o nível de abertura do T5.LevelCCI, de acordo com o indicador T5.TralingCCI. Observe o indicador CCI e o salto para cima do nível de fechamento MyLevel com um passo específico, de forma que mantenha a distância entre o valor atual do indicador CCI e o nível MyLevel não deve ser maior do que o dobro do valor do T5.TralingCCI.
  • Fecha uma posição de compra aberta se o indicado CCI cruza o nível MyLevel de cima para baixo (veja a função T5_SignalClose()).


Figura 9.O teste do sistema de negociação №5 sem adaptação

Esse gráfico pode ficar sem a adaptação, mas de qualquer maneira defina T5.PeriodRating=10.


Figura 10.O teste do sistema de negociação №5 com a adaptação habilitada

Sistema Múltiplo do Expert Advisor

O trabalho dos 5 Expert Advisors com e sem a adaptação é demonstrado acima.

Agora vamos considerar um exemplo de trabalho colaborativo dos Expert Advisors:

Símbolo

EURUSD (Euro vs US Dollar)

Período

Dia (D1) 24.05.1999 00:00 - 05.07.2010 00:00 (01.01.1999 - 05.07.2010)

Modelo

Os pontos de controle (um método muito bruto, os resultados não devem ser considerados)

Parâmetros

RatingON=false; FastTest=true; file="virtual.csv"; MinRating=50; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






Barras testadas

2994

Ticks modelados

219840

Qualidade de modelamento

n/a

Depósito inicial

500000.00





Total de lucro líquido:

617173.70

Lucro bruto

1342671.82

Perda bruta

-725498.13

Fator de lucro

1.85

Retorno esperado

2373.74



Rebaixamento Absoluto

76798.13

Baixa máxima

172676.05 (28.98%)

Rebaixamento relativo

28.98% (172676.05)


Negociações totais

260

Posições vendidas (ganho em %)

126 (29.37%)

Posições compradas (ganho em %)

134 (33.58%)


Negociações negativas (% of total)

82 (31.54%)

Negociações perdidas (% of total)

178 (68.46%)

Maior

Negociações lucrativas

78151.67

Negociações com perda

-18831.39

Média

Negociações lucrativas

16374.05

Negociações com perda

-4075.83

Máximo

vitórias consecutivas (lucro em $)

6 (89681.19)

derrotas consecutivas (perda em $)

21 (-100325.23)

Máximo

lucros consecutivos (nº de vitórias)

95057.65 (3)

perdas consecutivas (nº de perdas)

-100325.23 (21)

Média

vitórias consecutivas

2

perdas consecutivas

4



Figura 11.O teste do sistema múltiplo do Expert Advisor sem adaptação

O resultado da combinação dos sistemas de negociação é o aumento do lucro, rebaixamento e número de operações.

Agora vamos olhar para o mesmo teste, mas com a Parâmetro RatingON habilitado.

Período

Dia (D1) 24.05.1999 00:00 - 05.07.2010 00:00 (01.01.1999 - 05.07.2010)

Modelo

Os pontos de controle (um método muito bruto, os resultados não devem ser considerados)

Parâmetros

RatingON=true; FastTest=true; file="virtual.csv"; MinRating=1; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






Barras testadas

2994

Ticks modelados

219840

Qualidade de modelamento

n/a

Depósito inicial

500000.00





Total de lucro líquido:

227123.75

Lucro bruto

388438.79

Perda bruta

-161315.05

Fator de lucro

2.41

Retorno esperado

2341.48



Rebaixamento Absoluto

10921.17

Baixa máxima

76482.03 (12.48%)

Rebaixamento relativo

12.48% (76482.03)


Negociações totais

97

Posições vendidas (ganho em %)

50 (40.00%)

Posições compradas (ganho em %)

47 (46.81%)


Negociações negativas (% of total)

42 (43.30%)

Negociações perdidas (% of total)

55 (56.70%)

Maior

Negociações lucrativas

71192.28

Negociações com perda

-12680.47

Média

Negociações lucrativas

9248.54

Negociações com perda

-2933.00

Máximo

vitórias consecutivas (lucro em $)

5 (80463.85)

derrotas consecutivas (perda em $)

13 (-50753.48)

Máximo

lucros consecutivos (nº de vitórias)

80463.85 (5)

perdas consecutivas (nº de perdas)

-50753.48 (13)

Média

vitórias consecutivas

2

perdas consecutivas

3


Fig. 12.O teste de sistema múltiplo do Expert Advisor com a adaptação habilitada

A linha de balanço achatada, os rebaixamentos dramáticos diminuiram, o lucro diminuiu 2.71 vezes, orebaixamento diminuiu 2.32 vezes, o número de operações diminuiu 2.68 vezes, o fator de lucro aumentou 1,3 vezes.

Na Fig. 12, ao contrário dos testes anteriores, o diagrama dos volumes já apareceu. Ocorreu como resultado de um sistema de classificação ativo.

Ele atua da seguinte maneira - em primeiro lugar, o lucro Tх.PeriodRating de todos as negociações virtuais fechadas são somadas e o valor obtido é dividido pelo número de dias dessas negociações realizadas. O valor obtido é adicionado pela lucro acumulativo de todas as posições abertas e dividido pelo número de dias que eles estiveram ativos.

Se o valor obtido for negativo, então é definido igual a zero. Esta operação é executada para cada sistema de negociação.

O sistema de classificação pesquisa um sistema de negociação a partir de outro, através dos números mágicos atribuídos as estratégias de negociação ativas nos parâmetros iniciais Tх.Magic. Ele pesquisa o sistema mais rentável ​​pelo valor máximo do lucro e define a classificação como 100% para este sistema.

Todos os outros sistemas de negociação tem uma classificação com atribuição relativa à classificação do sistema vencedor. Finalmente uma tabela com três colunas é criada.

Exemplo:

Mágico
Lucro
Classificação, %
1
9
40.9
2
0
0.0
3
3
13.6
4
10
45.5
5
0
0.0
6
17
77.3
7
0
0
8
12
54.5
9
0
0.0
10
22
100.0

Durante a negociação real, o valor da classificação obtida é multiplicado pelo valor de Tх.lot e dividido por 100. Neste caso, todos os sistemas de negociação com a classificação maior do que zero irão participar da negociação real.

Para fazer apenas o sistema vencedor participar na negociação real, defina o parâmetro MinRating igual a 100 no Exper Advisor Competition_v1.0.

Conclusão

A metodologia representada não dá uma garantia de 100% de lucro; no entanto, posso garantir a suavização da curva do balanço. Ou seja - a diminuição do lucro, do rebaixamento e número das operações realizadas são garantidas! Aumento do fator de lucro - provavelmente.

Cabe a você decidir se é bom ou não.

A descrição dos parâmetros do Expert Advisor: Competition_v1.0.mq4:

  • RatingOn - interruptor da classificação (se está desativado, então as operações no arquivo devem respeitar a negociação real)
  • FastTest - não muda o arquivo durante a alteração da matriz de negociação virtual durante o teste.
  • file - Arquivo de negociação virtual (aparece no caminho: TerminalPath()+"\experts\files" folder)
  • MinRating – classificação mínima (em termos percentuais) necessária para abertura de uma posição de negociação real
  • Tх.Enabled – interruptor do Sistema de Negociação
  • Tх.Magic – número mágico
  • Tх.lot – volume máximo usado para a negociação quando a avaliação é 100%
  • Tх.Fast – período da МА rápida
  • Tх.Slow – período da МА lenta
  • Tх.SL – Stop Loss em pontos
  • Tх.TS1 – Trailing Stop único em pontos (move o Stop Loss para o nível de empate no nível da abertura de uma ordem de negociação)
  • Tх.TS – Trailing Stop em pontos
  • Tх.PeriodRating - Período de cálculo da média da classificação (número de negócios do histórico)
Links para temas semelhantes: http://forum.mql4.com/ru/23455

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

Arquivos anexados |
RealTrend.mqh (8.17 KB)
VirtualTrend.mqh (36.03 KB)
Melhorar a Qualidade do Código com Ajuda do Teste de Unidade Melhorar a Qualidade do Código com Ajuda do Teste de Unidade
Mesmo programas simples muitas vezes têm erros que parecem inacreditáveis. "Como eu fiz isto?" é o nosso primeiro pensamento quando tal erro é revelado. "Como posso evitar isto?" é a segunda questão que vem à nossa mente com menos freqüência. É impossível criar um código absolutamente impecável, especialmente em grandes projetos, mas é possível usar tecnologias para auxiliar na detecção oportuna. O artigo descreve como a qualidade do código MQL4 pode ser melhorada com a ajuda do popular método de Teste de Unidade.
A Mágica dos Filtros A Mágica dos Filtros
A maioria dos desenvolvedores de sistemas automatizados de negociação usam algum tipo de filtro nos sinais de negociação. Neste artigo, vamos explorar a criação e implementação de filtros passa-faixa e discretos e de cruzamento de bandas para Expert Advisors, com o objetivo de melhorar as características do sistema de negociação automática.
Ação do Preço: Automatizando a Estratégia de Negociação "Inside Bar" Ação do Preço: Automatizando a Estratégia de Negociação "Inside Bar"
O artigo descreve o desenvolvimento de um Expert Advisor MetaTrader 4 baseado na estratégia "Inside Bar" (Barra Envolvida), incluindo princípios para detecção deste padrão, bem como configurações de regras para uma ordem stop e pendente. Os resultados dos testes e otimização são publicados também.
Pesquisa de Recorrências Estatísticas das Direções das Velas Pesquisa de Recorrências Estatísticas das Direções das Velas
É possível prever o comportamento do mercado num próximo curto intervalo de tempo, com base em tendências recorrentes das direções das velas em momentos específicos ao longo do dia? Isto é, se tal ocorrência é encontrada primeiramente. Esta questão provavelmente surge na mente de cada trader. A finalidade deste artigo é uma tentativa de prever o comportamento do mercado com base nas recorrências estatísticas das direções das velas durante intervalos de tempo específicos.