English Русский 中文 Español Deutsch 日本語
Usando o MetaTrader 4 para análise de padrões baseados em tempo

Usando o MetaTrader 4 para análise de padrões baseados em tempo

MetaTrader 4Sistemas de negociação | 4 fevereiro 2016, 12:40
520 0
Giampiero Raschetti
Giampiero Raschetti

Introdução

Ler postagens no fórum de Campeonato de Negociações Automatizadas e entrevistas sempre nos trazem muitas informações importantes soterradas entre um monte de bobagens.
Os argumentos fornecidos por William Boatright (Wackena) em sua entrevista, https://championship.mql5.com prenderam minha atenção para a abordagem baseada em tempo usada para escolher uma única hora do dia para fazer um único negócio em uma técnica de swing trading diária.
Então comecei a obter mais informações sobre a abordagem de entrada baseada em tempo e decidi fazer um sistema que pode ser capaz de verificar a eficácia real desta técnica.
Um código anexado ao artigo foi feito sem uma estratégia de saída real somente para dar a você um exemplo de que tipo de padrões de hora você poderá esperar usando o MetaTrader para mineração de dados e investigação estatística em uma relativamente longa sequência de dados.

Pesquisando a literatura

Primeiro pesquisei a confirmação dessa ideia na literatura e encontrei um artigo muito interessante sobre esse assunto em "Novos Métodos e Sistemas de Negociação" por Perry J. Kaufman, uma bíblia realmente enorme sobre a aventura de análises técnicas. O capítulo 15 fala sobre o reconhecimento de padrões, e um dos primeiros argumentos é a hora do dia e hábitos de negociação.
Neste capítulo ele menciona as Lições de Correspondência do Mercado de Ações de Frank Tubbs, onde ele explica que os seis padrões dominantes no mercado de ações baseados nas horas de negociações dos Estados Unidos, e onde em sua regra 4 ele afirma: "Se o mercado foi intimidador até as 14:00h, provavelmente continuará assim até o fechamento do dia e o começo do próximo".
Bem, 14:00h GMT-5, é exatamente 20:00 GMT+1, a hora em que Wackena coloca seus negócios em movimento. Essa é a primeira informação interessante sobre a eficácia dessa técnica. Outras referências interessantes sobre o assunto são apresentadas nesse capítulo de Kaufman.

Implementando o EA básico

A primeira consideração sobre a implementação de um sistema que deve captar a direção dos negócios em uma hora específica do dia é que os únicos sinais relevantes que você pode observar são estes que dão a você a informação sobre uma direção de uma tendência, e que métodos de contra-tendência ou sistemas de rompimento não são adequados a este propósito.

Um Expert Advisor básico foi apresentado neste artigo e um diagrama de bloco representando o fluxo de operação é detalhado aqui.

Onde:

  • Analyzer essa rotina chama uma sequência de detectores de sinais e dá respostas sobre a força da tendência naquele momento.
  • TrailingStopEngine avalia dinamicamente o próximo alvo de lucro e uma nova parada móvel, dependendo da faixa média real ou algo parecido.
  • CurrentOpenOrders retorna o número de pedidos abertos.
  • Um comando LoopThroughOrders cicla por todos os pedidos e se necessário aplica novas paradas móveis e novos alvos de lucro, ou decide fechar a negociação por algum evento em particular.
  • BlockFilterTrading decide se há condições específicas, nas quais não queremos negociar de forma alguma.
  • MoneyManagement retorna o tamanho do lote como uma função do risco.
  • PlaceOrder, se possível, coloca pedidos na direção definida pelo Analisador.

Operação e resultados da otimização

Eu uso o motor do MetaTrader em um Apple MacBookPro usando um PC virtual executado no Parallel Desktop, onde ele é executado de maneira rápida e confiável, e posso obter informações instantâneas da máquina virtual com o MS-Windows facilmente para documentação.
Os testes de retaguarda foram feitos no par de moedas EURUSD em dados disponíveis de 1 de janeiro de 2007 até 29 de dezembro de 2007 em um período de tempo de 15 minutos, onde os resultados parecem ser satisfatórios.
Os parâmetros da operação principal usados nesse artigo foram tomados de um processo de otimização e você pode tentar usá-los em uma combinação diferente de tais parâmetros.
A única consideração para escolher os parâmetros de Obter Lucros e Parar Perdas usados para esse teste é de que aqui não estamos realmente interessados em maximizar o balanço ou qualquer outro parâmetro de otimização possível apresentado pelo MetaTrader, mas de fato somente precisamos maximizar o número de negócios com lucro para estressar a estratégia de entrada.
Qualquer otimização de outros resultados deve ser feita em uma fase posterior.

Aqui está o código para o módulo do Analisador, onde, para propósitos de teste, você pode adicionar qualquer outro detector de sinais.

Dois sinais diferentes devem estar em concordância para escolher a direção correta.

//+------------------------------------------------------------------+ 
//| Price Direction Analyzer 
//+------------------------------------------------------------------+ 
int Analyzer()  
{ 
 int  signalCount=0; 
 signalCount += EntrySignal1(); 
 signalCount += EntrySignal2(); 
 return(signalCount); 
} 
 
//+------------------------------------------------------------------+ 
//| ENTRY SIGNALS BLOCK MODULES 
//+------------------------------------------------------------------+ 
int EntrySignal1() 
{ // Long term SMA trend detect 
 int i,Signal; 
 
 int LongTrend=0; 
 for(i=0;i<3;i++) 
 { 
   if (iMA(Symbol(),PERIOD_H4,S1_MA_FAST,0,MODE_LWMA,PRICE_TYPICAL,i) > iMA(Symbol(),PERIOD_H4,S1_MA_FAST,0,
   MODE_LWMA,PRICE_TYPICAL,i+1)) 
     LongTrend++; 
   else 
     LongTrend--; 
 }     
 if( LongTrend < 0) 
   Signal=-1; 
 else 
   Signal=1;  
 return(Signal);  
} 
 
int EntrySignal2() 
{ // Daily MACD 
   int Signal; 
 
   if (iMACD(NULL,PERIOD_D1,S2_OSMAFast,S2_OSMASlow,S2_OSMASignal,PRICE_WEIGHTED,MODE_MAIN,0) > 
       iMACD(NULL,PERIOD_D1,S2_OSMAFast,S2_OSMASlow,S2_OSMASignal,PRICE_WEIGHTED,MODE_MAIN,1) ) 
     Signal=1; 
   else 
     Signal=-1; 
   return (Signal); 
}

O horário de negociação é correspondente em um módulo de filtro de bloqueio de negociações que pode ser feito simplesmente da seguinte forma.

A arquitetura modular descrita pode facilmente deixar espaço para novos filtros de bloqueio no fluxo de operação.

//+------------------------------------------------------------------+ 
//| FILTER BLOCK MODULES 
//+------------------------------------------------------------------+ 
bool BlockTradingFilter1() 
{
 bool BlockTrade=false;  //trade by default 
 if (UseHourTrade) 
 { 
   if( !(Hour() >= FromHourTrade && Hour() <= ToHourTrade && Minute()<= 3) ) 
     { 
      //  Comment("Non-Trading Hours!"); 
      BlockTrade=true; 
     } 
  } 
 return (BlockTrade);  
}
De fato, devemos ser capazes de ter um lote de pequenas negociações de lucro sem considerar o balanço total como um todo.

Aqui está a configuração de otimização principal:



Para analisar os intervalos de hora que dão os melhores resultados você deve definir o FromHourTrades de 0 a 24, aumentando em passos de 1 hora e marcar o sinalizador de otimização na página de configuração dos testes de retaguarda antes de iniciar o processo.



Aqui estão os resultados de otimização:



Como você pode ver, existem algumas horas nas quais as negociações usando técnicas de detecção de tendências devem ser perigosas, enquanto durante outras horas do dia devem ser consideradas mais rentáveis, e neste intervalo, entre 19h e 22h GMT+1, após o almoço no fuso horário da costa leste, é quando cada novidade já foi digerida pelo mercado.
Neste caso, com dados históricos disponíveis, a hora de pico obtida do processo de otimização corresponde a 21h GMT+1 (horário da Europa Central).
Certamente esses resultados devem ser considerados válidos para o mercado forex de 2007, mas a antiga consideração de Frank Tubbs sobre os hábitos de negociação nos deixa esperanças de que eles serão válidos em períodos de tempo maiores.
Aqui estão os resultados detalhados do processo de otimização:



Você deve considerar que estes resultados dependem também de sinais de tendências escolhidos para decidir a direção dos pedidos, e eu posso lhe dizer que nesta estratégia baseada em hora, escolher a partir de um grande número de sinais diferentes levará a resultados bem similares, mas certamente você pode testar outros sinais e talvez me contar sobre seus resultados.

Aqui estão os relatórios de testes de retaguarda em 21h GMT+1



Como você pode ver, existem 160 negociações totais e 154 negociações com lucro (96.86%).
Essa informação confirma a anterior feita por Wackena em sua entrevista.

Introduzindo Stop Loss com base em tempo

O número de negociações durante o processo de simulações de um ano pode sugerir que devemos ser capazes de melhorar os resultados das negociações introduzindo um Stop Loss baseado em hora, que deve deixar espaço para novos pedidos, se haver qualquer perda após 23 horas estando no mercado.
Para fazer isso você pode simplesmente definir o sinalizador UseTimeBasedStopLoss como verdadeiro e tentar diferentes parâmetros de otimização.
A seguinte tabela de relatórios mostra a consequência dessa mudança de estratégia.



Como você pode ver, essa estratégia de saída deixa você imaginar que algumas negociações de swing longo, em um mercado enfraquecido, podem proteger você de adicionar pedidos indesejáveis em momentos ruins, então deve ser melhor ser paciente e esperar até que o mercado saia de vielas perigosas.


Conclusão

A estratégia de analisar o reconhecimento de padrão com base em tempo em hábitos de negociações sugere investigações posteriores e justifica a adição de uma estratégia válida de gerenciamento financeiro a esse Expert Advisor e acima de tudo um motor de parada móvel válido, mas esse deve ser o assunto de um novo artigo.
O código em anexo pode ser também usado para fazer mais investigações em outros padrões e pares de moedas para analisar outros hábitos de negociações baseados em tempos e seu comportamento. Me conte sobre sua experiência nessa investigação.

REFERÊNCIAS
New Trading Systems and Methods, por Perry J. Kaufman
https://championship.mql5.com
The Encyclopedia of Trading Strategies, por Jeffrey Owen Katz,Donna L. McCormick
Forex conquered, por J.L.Person
Trading with the odds, por Cynthia A.Kase

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/1508

Arquivos anexados |
Sauron_1_3.mq4 (7.15 KB)
Especulação confortável Especulação confortável
Esse artigo descreve o método para criar uma ferramenta para a especulação (scalping) confortável. Entretanto, tal abordagem a uma abertura de negócios pode ser aplicada a qualquer negociação.
Indicador de linhas de tendências considerando a abordagem de T. Demark Indicador de linhas de tendências considerando a abordagem de T. Demark
O indicador mostra linhas de tendência exibindo os eventos recentes no mercado. O indicador é desenvolvido considerando as recomendações e a abordagem de Thomas Demark, com relação à análise técnica. O indicador exibe ambas a última direção da tendência e a penúltima direção oposta da tendência.
MetaEditor : Modelos como um local para se apoiar MetaEditor : Modelos como um local para se apoiar
Pode ser novidade para muitos de nossos leitores que todas as preparações para escrever um EA podem ser feitas uma vez e então usadas continuamente.
Prevendo séries temporais financeiras Prevendo séries temporais financeiras
A previsão de séries temporais financeiras é um elemento necessário de qualquer atividade investigativa. O conceito de investigação por si - investir dinheiro agora para ganhar lucros no futuro - é baseado no conceito de prever o futuro. Portanto, prever séries temporais financeiras delineiam as atividades de toda a indústria de investimento - todas as trocas organizadas e outros sistemas de negociação de segurança.