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 de Preços com o Indicador Moving Averag - expert para MetaTrader 5
- Visualizações:
- 3865
- Avaliação:
- Publicado:
- 2014.01.15 08:31
- Atualizado:
- 2016.11.22 07:33
- Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
O MQL5 Wizard permite criar o código de Expert Advisors automaticamente. Veja Criando Expert Advisors em MQL5 Wizard prontos para uso para mais detalhes.
Aqui vamos considerar uma estratégia baseada no cruzamento de preços com o indicador Moving Average. A estratégia é chamada "Sinais baseados no cruzamento de preços com MA" (ao criar EA automaticamente no MQL5 Wizard).
Os Sinais de Negociação:
- Comprar: cruzamento para cima do preço com Moving Average.
- Venda: cruzamento para baixo do preço com Moving Average.
- A verificação do aumento/diminuição da MA é usada para filtrar sinais falsos.
A estratégia será implementada na classe CSignalMA das classes de Estratégia de Negociação da Biblioteca Padrão MQL5 (localizada em MQL5\Include\Expert\Signal\SignalMA.mqh).
Figura 1. Sinais de Negociação Baseados no cruzamento de Preços com o Indicador Moving Average
Sinais de Negociação
A estratégia de negociação será implementada na classe CSignalMA, na qual possui alguns métodos protegidos para simplificar o acesso em indicadores e valores de preço:
double MA(int ind) // retorna o valor da média móvel da barra double Open(int ind) // retorna o valor de abertura da barra double Close(int ind) // retorna o valor de fechamento da barra double StateMA(int ind) // retorna positivo se a média aumenta ou negativo se diminui double StateOpen(int ind) // retorna a diferença entre o preço de abertura e a média móvel double StateClose(int ind) // retorna a diferença entre o preço de fechamento e a média móvel
1. Abrindo posição de compra
Condições para abrir uma posição de compra (cruzamento de preço com MA e verificação do crescimento da MA):
- Open(1)<MA(1): preço de abertura é inferior a média móvel;
- Close(1)>MA(1): preço de fechamento é maior do que a média móvel;
- MA(1)>MA(2): verificar aumento da média móvel (para filtrar sinais falsos).
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- price has crossed upward the MA and MA increases return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Fechando posição de compra
Condições para fechar uma posição de compra (cruzamento de preço com MA e verificação do decaimento da MA):
- Open(1)>MA(1): preço de abertura é superior a média móvel;
- Close(1)<MA(1): preço de fechamento é menor do que a média móvel;
- MA(1)<MA(2): verificar decaimento da média móvel (para filtrar sinais falsos).
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- price has crossed moving average downward and moving average decreases return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
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 CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- price has crossed moving average upward and moving average decreases return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
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 CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- price has crossed moving average upward and moving average increases return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
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 price crossover with MA" na opção "Creating Ready-Made Expert Advisors" do MQL5 Wizard:
Figura 2. Escolha "Signals based on price crossover with MA" 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, MA_period=12, MA_Shift=0).
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 históricos do backtesting do Expert Advisor, com base no cruzamento de preços com MA
Anexos: SignalMA.mqh com a classe CSignalMA (inclusa na Biblioteca Padrão MQL5) localizados na pasta MQL5\Include\Expert\Signal. O arquivo crossoverma.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/248
Os Sinais de Negociação baseados em três Moving Averages serão utilizados aqui. O código do Expert Advisor com base nesta estratégia pode ser gerado automaticamente usando o Assistente MQL5.
DXMAIndicador de Média Móvel melhorado com DMI.
Expert Advisor que opera com base em duas МАs e CCI
TradeChannelExpert Advisor baseado no canal de preço.