O Assistente MQL5 oferece a criação automática de Expert Advisors (veja Assistente MQL5: Criando Expert Advisors sem Programar).
Vamos considerar os sinais de negociação baseados no indicador técnico Alligator, apresentado por B.Williams em "Negociando o Caos". A estratégia é chamada de "Sinais baseados no Alligator" (criando EA automaticamente através do Assistente MQL5).
O sistema é baseado em três médias móveis (lábios, dentes e linhas da mandíbula) e osciladores, calculados usando a diferença entre eles. Os sinais de negociação são gerados após o cruzamento das linhas do Alligator, dependendo da tendência e determinada no final dessas linhas. A tendência ascendente acontece quando a linha dos Lábios (com período mínimo) é a mais alta, seguida da linha dos Dentes, e por fim, a menor é a linha da Mandíbula. Semelhantemente e em direção oposta é o caso da tendência de baixa.
Os sinais de negociação:
Esta estratégia é implementada na classe CSignalAlligator.

Figura 1. Sinais de negociação com base no indicador técnico Alligator
Sinais de Negociação
A estratégia de negociação é implementado no CSignalAlligator, tem alguns métodos protegidos para simplificar o acesso aos valores dos indicadores:
double Jaw(int ind) // retorna o valor da linha da Mandíbula da barra double Teeth(int ind) // retorna o valor da linha dos Dentes da barra double Lips(int ind) // retorna o valor da linha dos lábios da barra double LipsTeethDiff(int ind) // retorna a diferença entre os Lábios e as linha dos Dentes double TeethJawDiff(int ind) // retorna a diferença entre os Dentes e as linha da Mandíbula double LipsJawDiff(int ind) // retorna a diferença entre os Lábios e as linha de Mandíbula bool CheckCross(); // usado para verificar o cruzamento das linhas do Alligator
1. Abrir posição comprada
A verificação das condições de negociação tem algumas características, causadas pelo deslocamento das linhas dos Lábios, Dentes e Mandíbula.
Condições para abertura da posição comprada:
//+------------------------------------------------------------------+ //| verificar as condições para abertura da posição comprada | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 && TeethJawDiff(-2) >=TeethJawDiff(-1) && TeethJawDiff(-1) >=TeethJawDiff(0) && TeethJawDiff(0) >=0.0) m_crossed=true; //--- return(m_crossed); }
2. Fechar posição comprada
Condições para fechar posição comprada (note a mudança das linhas):
//+------------------------------------------------------------------+ //| Verifica as condições para fechar posição comprada | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseLong(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0); }
3. Abertura da posição vendida
Condições para abertura da posição vendida:
//+------------------------------------------------------------------+ //| verifica as condições para abertura da posição vendida (sell) | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 && TeethJawDiff(-2) <=TeethJawDiff(-1) && TeethJawDiff(-1) <=TeethJawDiff(0) && TeethJawDiff(0) <=0.0) m_crossed=true; //--- return(m_crossed); }
4. Fechar posição vendida
Condições para fechar posição vendida:
//+------------------------------------------------------------------+ //| Verifica as condições para fechar posição vendida | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseShort(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0); }
Criando Expert Advisor usando Assistente MQL5
Para criar um robô de negociação com base nesta estratégia, você precisa escolher as propriedades de sinais como "Sinais baseados no Alligator" na opção "Criando Expert Advisors Úteis" do Assistente MQL5:

Figura 2. Selecione "Sinais baseados no Alligator" no Assistente MQL5
O próximo passo é especificar o algorítimo do trailing stop e o sistema de gerenciamento de risco do dinheiro. O código de Expert Advisor será criado automaticamente, você pode compilá-lo e testá-lo no Testador de Estratégias do terminal do cliente MetaTrader 5.
Resultados dos testes
Vamos considerar os resultados anteriores do Expert Advisor em dados históricos (EURUSD H1, período de testes: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).
Na criação de Expert Advisor usamos o volume fixo (Lote da Negociação Fixa, 0.1), o algorítimo do Trailing Stop não é usado (Trailing Stop não é usado).

Figura 3. Resultados do Teste do Expert Advisor com sinais de negociação baseado no indicador Alligator
O lucro pode ser aumentado se você souber filtrar seus negócios e ter em conta as características do mercado, dependendo do tempo. A classe CSignalITF permitir que você adicione o filtro de tempo intraday. Os melhores momentos podem ser encontrados usando o Testador de Estratégias do terminal do cliente MetaTrader 5. Veja o exemplo no Assistente MQL5 - Sinais de Negociação Baseados no Cruzamento de Duas EMA com filtro de tempo intraday.
Anexos: O SignalAlligator.mqh com a classe CSignalAlligator fica localizado na pasta terminal_data_folder\MQL5\Include\Expert\Signal.
O expert_alligator.mq5 contém o código do Expert Advisor criado com o Assistente MQL5.
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/267
ZigZag Profissional
Versão melhorada do indicador ZigZag.
sChartsSynchroScroll_v2
Nova versão do sript sChartsSynchroScroll.
Assistente MQL5 - Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD
Os Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD (CSignalMACD da Biblioteca Padrão MQL5) serão utilizados aqui. O código do Expert Advisor com base nesta estratégia pode ser gerado automaticamente usando o Assistente MQL5.
SinTick
O seno e o indicador tick.