Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
Assistente MQL5 - Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD - expert para MetaTrader 5
- Visualizações:
- 4486
- Avaliação:
- Publicado:
- 2014.01.15 08:29
- Atualizado:
- 2016.11.22 07:33
- Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
MQL5 Wizard proporciona a criação automática de Expert Advisors (veja MQL5 Wizard: Criando Expert Advisors sem programação).
Vamos considerar aqui os sinais de negociação com base no cruzamento das linhas do indicador MACD. A estratégia é chamada "Signals based on crossover of main and signal MACD lines" (ao criar EA automaticamente no MQL5 Wizard).
A linha principal do indicador MACD é calculada como a diferença de fast EMA e slow EMA. A linha de sinal do MACD é calculada como a linha principal, suavizada com o período PeriodSignal.
Os Sinais de Negociação:
- Compra: cruzamento por cima das linhas principal e de sinal do indicador MACD.
- Venda: cruzamento por baixo das linhas principal e de sinal do indicador MACD.
A estratégia será implementada na classe CSignalMACD das classes de Estratégia de Negociação da Biblioteca Padrão MQL5 (localizada em MQL5\Include\Expert\Signal\SignalMACD.mqh).
Figura 1. Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD
Sinais de Negociação
A estratégia de negociação será implementada na classe CSignalMACD, na qual possui alguns métodos protegidos para simplificar o acesso em indicadores:
double MainMACD(int ind) // retorna o valor da linha principal do MACD da barra double SignalMACD(int ind) // retorna o valor da linha de sinal do MACD da barra double StateMACD(int ind) // retorna a diferença entre a linha principal e a de sinal do MACD int ExtStateMACD(int ind); // retorna o número de mudanças de sinal, da diferença das linhas principal e de sinal
1. Abrindo posição de compra
Condições para abrir uma posição de compra:
- ExtStateMACD(1)==1; isso significa que a linha principal cruzou por cima a linha de sinal MACD
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==1); }
2. Fechando posição de compra
Condições para fechar uma posição de compra:
- ExtStateMACD(1)==1; isso significa que a linha principal cruzou por baixo a linha de sinal MACD line
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseLong(double& price) { price=0.0; //--- return(ExtStateMACD(1)==-1); }
3. Abrindo posição de venda
As condições para abrir uma posição de venda são as mesmas condições para fechar uma posição de compra.
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==-1); }
4. Fechando posição de venda
As condições para fechar uma posição de venda são as mesmas condições para abrir uma posição de compra.
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseShort(double& price) { price=0.0; //--- return(ExtStateMACD(1)==1); }
Criando um Expert Advisor usando o MQL5 Wizard
Para criar um robô de negociação com base na estratégia que você quer, você precisa escolher as propriedades dos sinais como "Signals based on crossover of main and signal MACD lines" na opção "Creating Ready-Made Expert Advisors" do MQL5 Wizard:
Figura 2. Selecione "Signals based on crossover of main and signal MACD lines" no MQL5 Wizard
O próximo passo você precisa especificar o algorítimo trailing stop e o sistema de gestão de dinheiro e riscos. O código do Expert Advisor será criado automaticamente. Você pode compilar e testar no Strategy Tester do terminal cliente MetaTrader 5.
Testando os Resultados
Vamos considerar o backtesting do Expert Advisor com dados históricos (EURUSD H1, período customizado: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).
Na criação do Expert Advisor usamos um volume fixo(Negociação Fixa do Lote, 0.1), algorítimo Trailing Stop não utilizado (Trailing não utilizado).
Figura 3. Resultados do backtesting do Expert Advisor, com base no cruzamento das linhas do indicador MACD
Anexos: SignalMACD.mqh com a classe CSignalMACD (inclusa na Biblioteca Padrão MQL5) localizados na pasta MQL5\Include\Expert\Signal. O arquivo testmacd.mq5 contém o código do Expert Advisor criado, usando o MQL5 Wizard.
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/262
Os Sinais de Negociação são considerados com base no cruzamento das linhas do indicador técnico Jacaré (Alligator), classe CSignalAlligator da Biblioteca Padrão MQL5. O código do Expert Advisor baseado nesta estratégia pode ser gerado automaticamente usando o Assistente MQL5.
ZigZag ProfissionalVersão melhorada do indicador ZigZag.
O seno e o indicador tick.
GetExtremumsFunção que identifica os extremos ao longo de um determinado período da história.