Identificar topos e fundos e fechamento entre 2 médias

 

Boa noite,

Estou tentando criar 2 funções booleanas: Uma para identificar topos e fundos e uma para identificar se o candle fechou entre 2 médias.

Estou desenvolvendo um EA que eu quero bloquear a compra quando o candle anterior fechou um topo e bloquear a venda se o candle anterioro fechou em um fundo e também quero bloquear entrada compra e venda quando o candle anterior fechar entre 2 médias exponenciais (Por exemplo, se o candle anterior fechar entre as medias de 9 e 50).

queria apenas que, em cada função, ele me retornasse true ou false caso entre em tal situação.

Já tentei ver diversos materiais, documentação de indicadores, etc, mas não tô conseguindo aplicar.

 
Diogo Silva:

Boa noite,

Estou tentando criar 2 funções booleanas: Uma para identificar topos e fundos e uma para identificar se o candle fechou entre 2 médias.

Estou desenvolvendo um EA que eu quero bloquear a compra quando o candle anterior fechou um topo e bloquear a venda se o candle anterioro fechou em um fundo e também quero bloquear entrada compra e venda quando o candle anterior fechar entre 2 médias exponenciais (Por exemplo, se o candle anterior fechar entre as medias de 9 e 50).

queria apenas que, em cada função, ele me retornasse true ou false caso entre em tal situação.

Já tentei ver diversos materiais, documentação de indicadores, etc, mas não tô conseguindo aplicar.

Poste algum código das suas tentativas, do contrário ninguém poderá te ajudar concretamente...

 
Flavio Jarabeck #:

Poste algum código das suas tentativas, do contrário ninguém poderá te ajudar concretamente...

Para as médias móveis, fiz uma função assim:

bool MediasMoveis() {

   double ask, bid, last;
   double smaArray1[];
   double smaArray2[];
   int smaHandle9;
   int smaHandle20;
   
   ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
   last = SymbolInfoDouble(_Symbol, SYMBOL_LAST);
   
   smaHandle9 = iMA(_Symbol, _Period, 9, 0, MODE_EMA, PRICE_CLOSE);
   smaHandle20 = iMA(_Symbol, _Period, 50, 0, MODE_EMA, PRICE_CLOSE);
   
   ArraySetAsSeries(smaArray1, true);
   ArraySetAsSeries(smaArray2, true);
   
   CopyBuffer(smaHandle9, 0, 0, 5, smaArray1);
   CopyBuffer(smaHandle20, 0, 0, 5, smaArray2);
   
   if ((last < smaArray1[1] && last > smaArray2[1]) || (last > smaArray1[1] && last < smaArray2[1])) {
      return false;
   } 
   
   return true;
   
}


Fiz a função e acho que a lógica do if não está correta. Eu quero fazer retornar false quando o candle anterior fechar entre as médias e retornar true quando ele fechar fora das médias, seja acima ou abaixo, mas nunca entre as 2.


Sobre o Topos e Fundos, tentei usar Bandas de Bollinger mas não funcionou como eu quis. Pensei usar o Indicador ZigZag ou HiLo para identificar topos e fundos mas não consegui nem adicionar o indicador. Preciso fazer algo semelhante das médias, quando estiver em um topo ou um fundo, retornar false e quando não estiver, retornar true.

Pensei em criar 2 funções booleanas VerificaFundo() e VerificaTopo(). usar o VerificaTopo para bloquear ordens de compra e VerificaFundo para bloquear ordens de venda, pois percebi que 80% dos stops do meu robô são quando ele abre ordem de compra em região de topo e ordem de venda em região de fundo, dai quero neutralizar isso.

Se eu conseguisse adicionar um indicador que me retorne quando formar um topo e um fundo, já me ajuda, pois aí pego e faço a logica pra travar quando o indicador me desse esse valor.

 
Diogo Silva #:

Para as médias móveis, fiz uma função assim:


Fiz a função e acho que a lógica do if não está correta. Eu quero fazer retornar false quando o candle anterior fechar entre as médias e retornar true quando ele fechar fora das médias, seja acima ou abaixo, mas nunca entre as 2.


Sobre o Topos e Fundos, tentei usar Bandas de Bollinger mas não funcionou como eu quis. Pensei usar o Indicador ZigZag ou HiLo para identificar topos e fundos mas não consegui nem adicionar o indicador. Preciso fazer algo semelhante das médias, quando estiver em um topo ou um fundo, retornar false e quando não estiver, retornar true.

Pensei em criar 2 funções booleanas VerificaFundo() e VerificaTopo(). usar o VerificaTopo para bloquear ordens de compra e VerificaFundo para bloquear ordens de venda, pois percebi que 80% dos stops do meu robô são quando ele abre ordem de compra em região de topo e ordem de venda em região de fundo, dai quero neutralizar isso.

Se eu conseguisse adicionar um indicador que me retorne quando formar um topo e um fundo, já me ajuda, pois aí pego e faço a logica pra travar quando o indicador me desse esse valor.

Qual seu conceito de topo e fundo? Consegue explicar para a gente?
 
Ricardo Rodrigues Lucca #:
Qual seu conceito de topo e fundo? Consegue explicar para a gente?


Conceito de topo e fundo que estou buscando é formação de pullbacks.

Quero impedir de realizar uma compra ou venda quando realizar uma retração. 

Se ele está realizando uma retração no topo, se eu entrar comprado, ele volta contra mim. Se ele tá realizando uma retração de fundo, se eu entro vendido, ele volta contra mim. Quero identificar esses movimentos e não permitir entradas de compra quando for fazer uma correção no topo e não permitir operação de venda quando for fazer uma correção no fundo.

Tendência pra mim é indiferente, pois o EA que estou desenvolvendo é pra Scalp, e os stops que ele tem tomado são quando realizam operações nesses movimentos.


Preciso identificar esses pontos e retornar true e false

 

Consegui resolver o lance dos topos e fundos inserindo o MACD.

Fiz uma função que identifica o nível do MACD colocando média rapida 12, lenta 26 e o SMA 9 aplicado ao preço de fechamento e bloqueio pra compra quando o MACD for maior que 150 e bloqueio pra venda quando for menor que -150

Dai atendeu o que precisava, e neutralizou os Loss nesses casos.

Valeu

 
Diogo Silva #:

Consegui resolver o lance dos topos e fundos inserindo o MACD.

Fiz uma função que identifica o nível do MACD colocando média rapida 12, lenta 26 e o SMA 9 aplicado ao preço de fechamento e bloqueio pra compra quando o MACD for maior que 150 e bloqueio pra venda quando for menor que -150

Dai atendeu o que precisava, e neutralizou os Loss nesses casos.

Valeu

Bom que conseguiu resolver, minha pergunta era mais pra ver se conseguia especificar uma forma de identificar os topos e fundos dai tu nao precisava nem responder so implementar ;)
Razão: