
Analisando exemplos de estratégias de trading no terminal do cliente
Conteúdo
Introdução
No início da década de 1990, nos mercados financeiros ocidentais, foi apresentado o gráfico de velas japonesas e os padrões de velas, introduzidos pelo analista técnico Steve Nison. Desde então, o conhecimento sobre padrões de velas tornou-se tão essencial para os traders quanto a capacidade de aplicar a análise técnica clássica.
Recentemente, no terminal do cliente, foi adicionada uma nova pasta de EAs no diretório:
Na pasta Free Robots, estão disponíveis 28 EAs – exemplos de estratégias de trading para estudo e aplicação independente dos princípios embutidos nas estratégias para desenvolvimento próprio. As estratégias de trading apresentadas na pasta Free Robots são EAs que operam com padrões de velas, apoiados por sinais de indicadores.
Para confirmar os sinais dos padrões de velas, utilizam-se valores de um dos quatro indicadores osciladores: CCI, MFI, RSI и Stochastic Oscillator. Assim, são apresentados sete EAs que operam com padrões de velas (cada um com dois padrões, um para posições longas e outro para posições curtas), sendo que cada um desses EAs possui quatro versões, de acordo com o número de indicadores confirmadores.
Visão geral das estratégias de trading
Cada estratégia de trading utiliza dois padrões similares, mas com direções e nomes diferentes:
1. BlackCrows WhiteSoldiers
![]() | 3 White Soldiers: Padrão de compra "Três Soldados Brancos" – 3 velas brancas consecutivas com corpo de tamanho suficiente. São sinais de uma possível reversão de uma tendência de baixa (bearish). |
![]() | 3 Black Crows: Padrão de venda "Três Corvos Negros" – 3 velas negras consecutivas com corpo de tamanho suficiente. São sinais de uma possível reversão de uma tendência de alta (bullish). |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- BlackCrows WhiteSoldiers CCI.mq5 – EA que opera com os padrões 3 White Soldiers e 3 Black Crows, com confirmação dos sinais pelo indicador CCI.
- BlackCrows WhiteSoldiers MFI.mq5 – EA que opera com os padrões 3 White Soldiers e 3 Black Crows, com confirmação dos sinais pelo indicador MFI.
- BlackCrows WhiteSoldiers RSI.mq5 – EA que opera com os padrões 3 White Soldiers e 3 Black Crows, com confirmação dos sinais pelo indicador RSI.
- BlackCrows WhiteSoldiers Stoch.mq5 – EA que opera com os padrões 3 White Soldiers e 3 Black Crows, com confirmação dos sinais pelo indicador Stochastic Oscillator.
2. BullishBearish Engulfing
![]() | Bullish Engulfing: Padrão de compra "Engolfo de Alta" ocorre quando, em uma tendência de baixa, após uma vela de baixa, surge uma vela de alta cujo corpo engolfa completamente o corpo da vela de baixa. É um sinal de uma possível reversão da tendência de baixa (bearish). |
![]() | Bearish Engulfing: Padrão de venda "Engolfo de Baixa" ocorre quando, em uma tendência de alta, após uma vela de alta, surge uma vela de baixa cujo corpo engolfa completamente o corpo da vela de alta. É um sinal de uma possível reversão da tendência de alta (bullish). |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- BullishBearish Engulfing CCI.mq5 – EA que opera com os padrões Bullish Engulfing e Bearish Engulfing, com confirmação dos sinais pelo indicador CCI.
- BullishBearish Engulfing MFI.mq5 – EA que opera com os padrões Bullish Engulfing e Bearish Engulfing, com confirmação dos sinais pelo indicador MFI.
- BullishBearish Engulfing RSI.mq5 – EA que opera com os padrões Bullish Engulfing e Bearish Engulfing, com confirmação dos sinais pelo indicador RSI.
- BullishBearish Engulfing Stoch.mq5 – EA que opera com os padrões Bullish Engulfing e Bearish Engulfing, com confirmação dos sinais pelo indicador Stochastic Oscillator.
3. BullishBearish Harami
![]() | Bullish Harami: Padrão de compra "Harami de Alta" ocorre quando, em uma tendência de baixa, após uma longa vela de baixa, surge uma vela de alta com o corpo completamente dentro do corpo da vela de baixa. É um sinal de uma possível reversão da tendência de baixa (bearish). É um sinal de uma possível reversão da tendência de baixa (bearish). |
![]() | Bearish Harami: Padrão de venda "Harami de Baixa" ocorre quando, em uma tendência de alta, após uma longa vela de alta, surge uma vela de baixa com o corpo completamente dentro do corpo da vela de alta. É um sinal de uma possível reversão da tendência de alta (bullish). |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- BullishBearish Harami CCI.mq5 – EA que opera com os padrões Bullish Harami e Bearish Harami, com confirmação dos sinais pelo indicador CCI.
- BullishBearish Harami MFI.mq5 – EA que opera com os padrões Bullish Harami e Bearish Harami, com confirmação dos sinais pelo indicador MFI.
- BullishBearish Harami RSI.mq5 – EA que opera com os padrões Bullish Harami e Bearish Harami, com confirmação dos sinais pelo indicador RSI.
- BullishBearish Harami Stoch.mq5 – EA que opera com os padrões Bullish Harami e Bearish Harami, com confirmação dos sinais pelo indicador Stochastic Oscillator.
4. BullishBearish MeetingLines
![]() | Bullish Meeting Lines: Padrão de compra "Linhas de Encontro de Alta" consiste em uma combinação de uma vela de baixa e uma de alta, cujos preços de fechamento coincidem (ou estão muito próximos). O comprimento dos corpos de ambas as velas é maior que a média. É um sinal de uma possível reversão da tendência de baixa (bearish). |
![]() | Bearish Meeting Lines: Padrão de venda "Linhas de Encontro de Baixa" consiste em uma combinação de uma vela de alta e uma de baixa, cujos preços de fechamento coincidem (ou estão muito próximos). O comprimento dos corpos de ambas as velas é maior que a média. É um sinal de uma possível reversão da tendência de alta (bullish). |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- BullishBearish MeetingLines CCI.mq5 – EA que opera com os padrões Bullish Meeting Lines e Bearish Meeting Lines, com confirmação dos sinais pelo indicador CCI.
- BullishBearish MeetingLines MFI.mq5 – EA que opera com os padrões Bullish Meeting Lines e Bearish Meeting Lines, com confirmação dos sinais pelo indicador MFI.
- BullishBearish MeetingLines RSI.mq5 – EA que opera com os padrões Bullish Meeting Lines e Bearish Meeting Lines, com confirmação dos sinais pelo indicador RSI.
- BullishBearish MeetingLines Stoch.mq5 – EA que opera com os padrões Bullish Meeting Lines e Bearish Meeting Lines, com confirmação dos sinais pelo indicador Stochastic Oscillator.
5. DarkCloud PiercingLine
![]() | Piercing Line: Padrão de compra "Clareira nas Nuvens" é uma combinação de uma vela de baixa e uma de alta. É o oposto do padrão Dark Cloud Cover (Cobertura de Nuvens Negras). Primeiro, aparece uma vela preta grande; a vela seguinte tem uma abertura baixa (abaixo do mínimo da anterior) e um fechamento acima da metade da primeira vela. É um sinal de uma possível reversão da tendência de baixa (bearish). |
![]() | Dark Cloud Cover: Padrão de venda "Cobertura de Nuvens Negras" é uma combinação de uma vela de alta e uma de baixa. Primeiro, aparece uma vela branca grande; a vela seguinte tem uma abertura alta (acima do máximo da anterior) e um fechamento abaixo da metade da primeira vela. Este é um dos poucos casos em que se consideram máximos e mínimos. É um sinal de uma possível reversão da tendência de alta (bullish). |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- DarkCloud PiercingLine CCI.mq5 – EA que opera com os padrões Piercing Line e Dark Cloud Cover, com confirmação dos sinais pelo indicador CCI.
- DarkCloud PiercingLine MFI.mq5 – EA que opera com os padrões Piercing Line e Dark Cloud Cover, com confirmação dos sinais pelo indicador MFI.
- DarkCloud PiercingLine RSI.mq5 – EA que opera com os padrões Piercing Line e Dark Cloud Cover, com confirmação dos sinais pelo indicador RSI.
- DarkCloud PiercingLine Stoch.mq5 – EA que opera com os padrões Piercing Line e Dark Cloud Cover, com confirmação dos sinais pelo indicador Stochastic Oscillator.
6. HangingMan Hammer
![]() | Hammer: Padrão de compra "Martelo" é representado por uma vela com corpo pequeno e uma longa sombra inferior, que aparece após uma tendência de baixa. O surgimento do "Martelo" é um forte sinal de que o domínio do mercado de baixa está chegando ao fim. |
![]() | Hanging Man: Padrão de venda "Enforcado" é representado por uma vela com corpo pequeno e uma longa sombra inferior, que aparece após uma tendência de alta. O surgimento do "Enforcado" sinaliza o fim de uma tendência de alta. |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- HangingMan Hammer CCI.mq5 – EA que opera com os padrões Hammer e Hanging Man, com confirmação dos sinais pelo indicador CCI.
- HangingMan Hammer MFI.mq5 – EA que opera com os padrões Hammer e Hanging Man, com confirmação dos sinais pelo indicador MFI.
- HangingMan Hammer RSI.mq5 – EA que opera com os padrões Hammer e Hanging Man, com confirmação dos sinais pelo indicador RSI.
- HangingMan Hammer Stoch.mq5 – EA que opera com os padrões Hammer e Hanging Man, com confirmação dos sinais pelo indicador Stochastic Oscillator.
7. MorningEvening StarDoji
![]() | Morning Star: Padrão de compra "Estrela da Manhã" é composto por três velas e ocorre em uma tendência de baixa: 1. Após uma longa vela preta, vem uma vela com corpo pequeno (a cor não importa), que não se sobrepõe ao corpo da vela preta. 2. O corpo pequeno da segunda vela indica que o mercado passou de uma tendência de baixa para um equilíbrio de forças entre touros e ursos. 3. A terceira vela deste padrão é uma vela de alta, cujo corpo geralmente não se sobrepõe ao corpo da segunda vela, e o nível de fechamento está dentro do corpo da primeira (de baixa). O padrão é um sinal de uma possível reversão da tendência de baixa (bearish). |
![]() | Morning Doji Star: Padrão de compra "Estrela da Manhã Doji" é uma variação específica do padrão "Estrela da Manhã" (Morning Star). Nesse caso, a segunda vela do padrão possui os mesmos preços de abertura e fechamento — ou seja, a segunda vela não possui corpo. O padrão é um sinal de uma possível reversão da tendência de baixa (bearish). |
![]() | Evening Star: Padrão de venda "Estrela da Noite" também é composto por três velas e ocorre em uma tendência de alta: 1. Após uma longa vela branca, vem uma vela com corpo pequeno (a cor não importa), que não se sobrepõe ao corpo da vela branca. 2. 2. O corpo pequeno da segunda vela indica que o mercado passou de uma tendência de alta para um equilíbrio de forças entre touros e ursos. 3. A terceira vela deste padrão é uma vela de baixa, cujo corpo geralmente não se sobrepõe ao corpo da segunda vela, e o nível de fechamento está dentro do corpo da primeira (de alta). O padrão é um sinal de uma possível reversão da tendência de alta (bullish). |
![]() | Evening Doji Star: Padrão de venda "Estrela da Noite Doji" é uma variação específica do padrão "Estrela da Noite" (Evening Star). Nesse caso, a segunda vela do padrão possui os mesmos preços de abertura e fechamento — ou seja, a segunda vela não possui corpo. O padrão é um sinal de uma possível reversão da tendência de baixa (bearish). |
Com base nos padrões de velas descritos acima, o terminal apresenta quatro EAs educacionais:
- MorningEvening StarDoji CCI.mq5 – EA que opera com os padrões Morning Star (Morning Doji Star) e Evening Star (Evening Doji Star), com confirmação dos sinais pelo indicador CCI.
- MorningEvening StarDoji MFI.mq5 – EA que opera com os padrões Morning Star (Morning Doji Star) e Evening Star (Evening Doji Star), com confirmação dos sinais pelo indicador MFI.
- MorningEvening StarDoji RSI.mq5 – EA que opera com os padrões Morning Star (Morning Doji Star) e Evening Star (Evening Doji Star), com confirmação dos sinais pelo indicador RSI.
- MorningEvening StarDoji Stoch.mq5 – EA que opera com os padrões Morning Star (Morning Doji Star) e Evening Star (Evening Doji Star), com confirmação dos sinais pelo indicador Stochastic Oscillator.
Todos os indicadores utilizados nos EAs servem para confirmar as entradas em posições longas ou curtas (quando há sinais correspondentes dos padrões de velas) e para encerrar posições abertas com base nos sinais dos indicadores.
As tabelas abaixo apresentam os valores dos indicadores utilizados para confirmar entradas em posições e para encerrar posições abertas:
Indicador | Compra | Venda |
---|---|---|
CCI | CCI(1)<-50 — o valor do indicador CCI na última barra fechada é menor que -50 | CCI(1)>50 — o valor do indicador CCI na última barra fechada é maior que 50 |
IFM | MFI(1)<40 — o valor do indicador MFI na última barra fechada é menor que 40 | MFI(1)>60 — o valor do indicador MFI na última barra fechada é maior que 60
RSI |
RSI | RSI(1)<40 — o valor da linha do indicador RSI na última barra fechada é menor que 40 | RSI(1)>60 — o valor do indicador RSI na última barra fechada é maior que 60 |
Stochastic | Stochastic Signal(1)<30 — o valor da linha de sinal do indicador Stochastic na última barra fechada é menor que 30 | Stochastic Signal(1)>70 — o valor da linha de sinal do indicador Stochastic na última barra fechada é maior que 70 |
Os sinais dos indicadores técnicos para o fechamento de posições surgem quando o valor do indicador cruza o limite da zona extrema, ou seja, entra ou sai da zona de sobrecompra ou sobrevenda.
Indicador | Fechamento de posição longa | Fechamento de posição curta |
---|---|---|
CCI | Cruzamento do indicador CCI de cima para baixo do nível 80 ou do nível -80 | Cruzamento do indicador CCI de baixo para cima do nível -80 ou do nível 80 |
IFM | Cruzamento do indicador MFI de cima para baixo do nível 70 ou do nível 30 | Cruzamento do indicador MFI de baixo para cima do nível 30 ou do nível 70 |
RSI | Cruzamento do indicador RSI de cima para baixo do nível 70 ou do nível 30 | Cruzamento do indicador RSI de baixo para cima do nível 30 ou do nível 70 |
Stochastic | Cruzamento da linha de sinal do indicador Stochastic de cima para baixo do nível 80 ou do nível 20 | Cruzamento da linha de sinal do indicador Stochastic de baixo para cima do nível 20 ou do nível 80 |
Cada EA opera com um par de padrões de velas de direção oposta e é apresentado em quatro versões, baseadas nos indicadores confirmadores.
Ao todo, temos 7 * 4 = 28 EAs distintos, organizados segundo um único esquema idêntico para todos. Vamos analisar a lógica unificada de todos os EAs utilizando diagramas de blocos.
Destrinchando a lógica geral
Se abrirmos o código de qualquer um dos EAs no editor, examinando o código, veremos um esquema simples:
A lógica dos EAs é baseada em flags e variáveis, declaradas no nível global:
- ExtSignalOpen — sinal para abrir posição. 1 — Buy, -1 — Sell, 0 — sem sinal,
- ExtSignalClose — sinal para fechar posição. 2 — long, -2 — short, 0 — sem sinal,
- ExtPatternInfo — descrição textual do padrão detectado,
- ExtDirection — direção da posição a ser aberta. Descrição textual,
- ExtPatternDetected — flag de padrão detectado (true/false),
- ExtConfirmed — flag de sinal de padrão confirmado pelo indicador (true/false),
- ExtCloseByTime — flag indicando necessidade de fechamento por tempo de retenção da posição (true/false),
- ExtCheckPassed — flag de sucesso na obtenção dos dados (true/false).
A lógica do EA é sequencial e consiste em um bloco de inicialização de flags no manipulador OnInit() e quatro etapas de operação no manipulador OnTick().
- Etapa 1 — verificação de um novo candle e atualização do ambiente e estado dos flags,
- Etapa 2 — abertura de posição,
- Etapa 3 — fechamento de posição,
- Etapa 4 — fechamento de posição por expiração do tempo de retenção.
Analisemos a lógica do EA.
Diagrama de bloco da lógica de operação do EA
O diagrama de blocos apresenta as quatro etapas de operação do EA:
Etapa 1:
- Verifica-se o surgimento de um novo candle.
Se houver um novo candle, verifica-se o estado atual: - Checa-se as formações de velas para identificar a presença de um padrão.
- Se um padrão for encontrado, verifica-se a confirmação do sinal do padrão pelo indicador.
- Se o sinal do padrão for confirmado, imprime-se a informação sobre o padrão detectado no log e configuram-se os flags para abertura de posição.
Etapa 2:
- Se houver um sinal para abrir posição e essa posição não existir, imprime-se no log uma mensagem sobre o sinal para abertura de posição e abre-se a posição.
- Se a posição for aberta, o flag de abertura de posição é resetado.
Etapa 3:
- Se houver um sinal para fechar posição e essa posição existir, imprime-se no log uma mensagem sobre o sinal para fechamento de posição e fecha-se a posição.
- Se a posição não existir, o flag de fechamento de posição é resetado.
Etapa 4:
- Se houver um sinal para fechar posição por expiração do tempo de retenção e essa posição existir, fecha-se a posição cujo tempo de retenção expirou.
- Se a posição não existir, o flag de fechamento por tempo de retenção é resetado.
Lista de funções
A seguir, o conjunto de funções do EA e suas descrições breves:
CheckState() — verificação do estado do ambiente:
- Se nenhum padrão for encontrado, retorna false.
- Se houver um erro ao confirmar o padrão pelo indicador, retorna false.
- Se o padrão não for confirmado pelo sinal do indicador, o flag de abertura de posição é resetado.
- Se o fechamento por tempo de retenção da posição for especificado, o flag correspondente é configurado.
PositionOpen() — abertura de posição:
- Atualizam-se os dados do ambiente de negociação.
- Dependendo do sinal e, consequentemente, do tipo de posição, os preços de StopLoss e TakeProfit são ajustados para valores aceitáveis em relação ao preço de abertura e às restrições do servidor.
- Abre-se a posição.
- Se a posição não for aberta, o erro é registrado no log e retorna-se false.
- Em caso de abertura bem-sucedida, retorna-se true.
CloseBySignal() — fechamento de posição por sinal:
- Se não houver sinal para fechamento, a função retorna.
- Determina-se o tipo de posição a ser fechada com base na direção do sinal.
- Fecham-se todas as posições abertas pelo EA, cujo tipo corresponda à direção do sinal.
CloseByTime() — fechamento de posições com tempo de retenção expirado:
- Se não houver posições abertas pelo EA, a função retorna.
- Fecham-se todas as posições abertas pelo EA, cujo tempo de retenção tenha expirado.
PositionExist() — retorna o flag de existência de posição na direção do sinal:
- Determina-se o tipo de posição correspondente à direção do sinal.
- Retorna-se o flag de existência de posição aberta pelo EA com o tipo correspondente à direção do sinal.
PositionExpiredByTimeExist() — retorna o flag de existência de posição com tempo de retenção expirado:
- Determina-se a quantidade de candles que a posição esteve aberta.
- Retorna-se o flag de existência de posição, se o tempo de retenção for maior que a quantidade de candles especificada nas configurações.
BarsHold() — retorna o número de candles de retenção da posição:
- Determina-se e retorna-se o número de candles entre o momento de abertura da posição e o horário atual do servidor.
Open(), Close(), Low(), High() — retornam o preço correspondente do candle pelo índice:
- Solicitam-se os preços correspondentes do candle especificado.
- Se os preços não forem obtidos, o flag de erro é definido.
- Retornam-se os preços obtidos.
MidPoint(), MidOpenClose(), AvgBody() — retornam preços médios calculados.
CheckPattern() — verificação da existência de padrão:
- Executa-se o algoritmo de busca de padrão na direção Short.
- Se um padrão for encontrado, o flag de padrão detectado é configurado, e retorna-se true.
- Executa-se o algoritmo de busca de padrão na direção Long.
- Se um padrão for encontrado, o flag de padrão detectado é configurado, e retorna-se true.
- Se nenhum padrão for encontrado, o flag de erro é retornado, que pode ser definido como false nas funções de obtenção de preços.
CheckConfirmation() — verifica e configura o flag de confirmação do sinal do padrão com base no sinal do indicador.
CheckCloseSignal() — verifica as condições para o sinal de fechamento de posições com base nos valores do indicador; se houver sinal, configura o flag de fechamento da posição.
Considerações finais
Todos os 28 EAs apresentados na pasta Experts\Free Robots operam com base na mesma lógica. A diferença entre eles está apenas nos algoritmos de identificação dos padrões de velas e na utilização de dados de quatro indicadores diferentes para confirmação dos sinais dos padrões. Assim, qualquer um desses EAs pode ser usado como modelo para criar outros EAs que trabalhem com diferentes formações de velas e utilizem a confirmação dos padrões a partir de outros indicadores. Para isso, é necessário modificar a lógica de busca dos padrões nas direções Long e Short na função CheckPattern(), que é chamada a partir da função CheckState(), utilizada no primeiro passo da operação do EA:
//+------------------------------------------------------------------+ //| Returns true in case of successful pattern check | //+------------------------------------------------------------------+ bool CheckPattern() { ExtPatternDetected=false; //--- check if there is a pattern ExtSignalOpen=SIGNAL_NOT; ExtPatternInfo="\r\nPattern not detected"; ExtDirection=""; //--- check 3 Black Crows if((Open(3)-Close(3)>AvgBody(1)) && // long black (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // lower midpoints (MidPoint(1)<MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_SELL; ExtPatternInfo="\r\n3 Black Crows detected"; ExtDirection="Sell"; return(true); } //--- check 3 White Soldiers if((Close(3)-Open(3)>AvgBody(1)) && // long white (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // higher midpoints (MidPoint(1)>MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_BUY; ExtPatternInfo="\r\n3 White Soldiers detected"; ExtDirection="Buy"; return(true); } //--- result of checking return(ExtCheckPassed); }
Para substituir o indicador confirmador, é necessário ajustar os parâmetros de entrada, especificando as propriedades do indicador desejado em vez das definidas, por exemplo, para o CCI:
//--- Input parameters input int InpAverBodyPeriod=12; // period for calculating average candlestick size input int InpPeriodCCI =37; // CCI period input ENUM_APPLIED_PRICE InpPrice=PRICE_CLOSE; // price type
No manipulador OnInit(), substitua o bloco de criação do indicador CCI por outro indicador:
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Print("InpSL=", InpSL); Print("InpTP=", InpTP); //--- set parameters for trading operations ExtTrade.SetDeviationInPoints(InpSlippage); // slippage ExtTrade.SetExpertMagicNumber(InpMagicNumber); // Expert Advisor ID ExtTrade.LogLevel(LOG_LEVEL_ERRORS); // logging level ExtAvgBodyPeriod=InpAverBodyPeriod; //--- indicator initialization ExtIndicatorHandle=iCCI(_Symbol, _Period, InpPeriodCCI, InpPrice); if(ExtIndicatorHandle==INVALID_HANDLE) { Print("Error creating CCI indicator"); return(INIT_FAILED); } //--- OK return(INIT_SUCCEEDED); }
Além disso, no EA, nas funções de confirmação dos sinais dos padrões (CheckConfirmation()) e nas funções de fechamento de posições com base nos sinais dos indicadores (CheckCloseSignal()), utilize os dados do novo indicador com os valores exigidos para confirmar os padrões nas direções Long e Short.
//+------------------------------------------------------------------+ //| Returns true in case of successful confirmation check | //+------------------------------------------------------------------+ bool CheckConfirmation() { ExtConfirmed=false; //--- if there is no pattern, do not search for confirmation if(!ExtPatternDetected) return(true); //--- get the value of the stochastic indicator to confirm the signal double signal=CCI(1); if(signal==EMPTY_VALUE) { //--- failed to get indicator value, check failed return(false); } //--- check the Buy signal if(ExtSignalOpen==SIGNAL_BUY && (signal<-50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI<-50"; } //--- check the Sell signal if(ExtSignalOpen==SIGNAL_SELL && (signal>50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI>50"; } //--- successful completion of the check return(true); }
//+------------------------------------------------------------------+ //| Check if there is a signal to close | //+------------------------------------------------------------------+ bool CheckCloseSignal() { ExtSignalClose=false; //--- if there is a signal to enter the market, do not check the signal to close if(ExtSignalOpen!=SIGNAL_NOT) return(true); //--- check if there is a signal to close a long position if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) { //--- there is a signal to close a long position ExtSignalClose=CLOSE_LONG; ExtDirection="Long"; } //--- check if there is a signal to close a short position if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)>80) && (CCI(2)<80))) { //--- there is a signal to close a short position ExtSignalClose=CLOSE_SHORT; ExtDirection="Short"; } //--- successful completion of the check return(true); }
Dessa forma, percebemos que esses EAs oferecem uma base útil para criar e testar algoritmos personalizados, capazes de verificar diversas formações de velas com confirmação de praticamente qualquer indicador adequado.
Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/15479
Aviso: Todos os direitos sobre esses materiais pertencem à MetaQuotes Ltd. É proibida a reimpressão total ou parcial.
Esse artigo foi escrito por um usuário do site e reflete seu ponto de vista pessoal. A MetaQuotes Ltd. não se responsabiliza pela precisão das informações apresentadas nem pelas possíveis consequências decorrentes do uso das soluções, estratégias ou recomendações descritas.





- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Comparado, daí a pergunta:
Eu não criei esses códigos. É por isso que escrevi: Se você notar alguma inconsistência, basta adicioná-la ao seu código.
Entendo que isso faz parte da atualização do MT5. Vou adicioná-lo ao meu código - ele será apagado durante a próxima atualização do terminal.
Entendo que isso faz parte da atualização do MT5. Vou adicioná-lo para mim - ele será apagado durante a próxima atualização do terminal.
O que o impede de copiar o Expert Advisor em uma pasta separada e alterar tudo o que for necessário?
Eles são de treinamento, apenas exemplos.
Eles são tutoriais, apenas exemplos.
Aprendemos com os erros... a cometer erros ;)
verificar Piercing Line
Você tem razão: as condições não estão escritas simetricamente. Verifiquei a fonte original (o livro "Strategies of the World's Best Traders") e ela diz a mesma coisa.
Portanto, o erro não é nosso, mas é necessário fazer as correções. Vou procurar em outras fontes, pois está escrito lá. Parece que o autor esqueceu de acrescentar uma condição