Ajuda indicador de sinal entrada

 

Olá pessoal,

Blz com vocês?

Estou usando este indicador que plota bolinhas no gráfico quando vê uma boa entrada, mas eu já tentei de varias lógicas para fazer com que, quando a bolinha apareça o EA envie uma ordem, de compra ou venda, dependendo do sinal.

Alguem ja trabalhou com esse tipo de indicador e pode me ajudar me indicando uma lógica adequada?

Obrigado desde já.

:)

Arquivos anexados:
HLDG_V2.mq5  15 kb
 
João Bernardes:

Olá pessoal,

. . .

Olá João!


Em OnInit():

   int HandleHLDG;

   //--- HLDG indicator
   HandleHLDG = iCustom(_Symbol, PERIOD_CURRENT, "HLDG_V2", 14);
   if(HandleHLDG == INVALID_HANDLE)
     {
      Print(_Symbol, " - Error creating HLDG indicator...");
      return(INIT_FAILED);
     }



... Depois:

   double HLDG_Buy[1], HLDG_Sell[1];

   //--- HLDG indicator - Buy
   if(CopyBuffer(HandleHLDG, 1, 1, 1, HLDG_Buy) < 0)
     {
      Print(_Symbol, " - Failed to copy data from HLDG indicator...");
      return;
     }
   //--- HLDG indicator - Sell
   if(CopyBuffer(HandleHLDG, 0, 1, 1, HLDG_Sell) < 0)
     {
      Print(_Symbol, " - Failed to copy data from HLDG indicator...");
      return;
     }

   //--- Checks signals
   if(HLDG_Buy[0] > 0.0)
     {
      //--- Buy ...
     }
   if(HLDG_Sell[0] > 0.0)
     {
      //--- Sell ...
     }


... Em OnDeinit():

   //--- Free the handle of the indicators
   if(HandleHLDG != INVALID_HANDLE) {IndicatorRelease(HandleHLDG);}
 
Vinicius de Oliveira:

Olá João!


Em OnInit():



... Depois:


... Em OnDeinit():

Cara obrigado pela ajuda.

Muito legal as validações de erros.

É um ponto que preciso melhorar no meu código.

Uma diferença que eu estava fazendo é o buffer que eu estava copiando com os parametros: 0,0.1 e 1,0.1.

Agora esta certinho.

Pode me dizer oque é esse 1 do meio na declaração do copy buffer?

 
João Bernardes:

Cara obrigado pela ajuda.

Muito legal as validações de erros.

É um ponto que preciso melhorar no meu código.

Uma diferença que eu estava fazendo é o buffer que eu estava copiando com os parametros: 0,0.1 e 1,0.1.

Agora esta certinho.

Pode me dizer oque é esse 1 do meio na declaração do copy buffer?

Bom dia João!


Quando informo "1" nesse parâmetro, é copiado o valor correspondente à última barra fechada. Considerei que você iria verificar os sinais do indicador somente a cada nova barra.


Se for verificar os sinais do indicador a cada tick, altere esse valor para "0" (zero) e a função copia o valor correspondente à barra atual.

 
Vinicius de Oliveira:

Bom dia João!


Quando informo "1" nesse parâmetro, é copiado o valor correspondente à última barra fechada. Considerei que você iria verificar os sinais do indicador somente a cada nova barra.


Se for verificar os sinais do indicador a cada tick, altere esse valor para "0" (zero) e a função copia o valor correspondente à barra atual.

Legal mano.

Deu pra entender agora.

Fiz do jeito que você mostrou, esta dando certo porém, ainda em alguns casos ele ainda abre varias operações no mesmo candle:

Sabe porque isso pode estar ocorrendo ?

 
João Bernardes:

Legal mano.

Deu pra entender agora.

Fiz do jeito que você mostrou, esta dando certo porém, ainda em alguns casos ele ainda abre varias operações no mesmo candle:

Sabe porque isso pode estar ocorrendo ?

Pq antes de abrir uma operação vc tem o dever de checar se já existe uma Posição aberta, e caso tenha, tomar uma decisão baseado nisso!


 
Jonathan Pereira:

Pq antes de abrir uma operação vc tem o dever de checar se já existe uma Posição aberta, e caso tenha, tomar uma decisão baseado nisso!


E nao so isso, algumas corretoras sao lerdas pra responderem a criacao de posicao ou retornar uma ordem com status start, entao idealmente se tu abriu posicao quando nao tinha nada seria ideal salvar em algum lugar por alguns momentos. Digo isso porque uma corretora que eu uso demora uns 3 minutos pra confirmar a por**.
 
Jonathan Pereira:

Pq antes de abrir uma operação vc tem o dever de checar se já existe uma Posição aberta, e caso tenha, tomar uma decisão baseado nisso!


Fala man, blz?

ja estou fazedo essa verificação.

Dei uma olhada e vi que era stoploss curto quando a entrada é feita no meio de candles com pouco volume e a volatilidade é alta, ai acaba pegando o stop e ja abrindo outra ordem.

Sabem alguma tática pra evitar isso?


Vlw pessoal.

 
João Bernardes:

Fala man, blz?

ja estou fazedo essa verificação.

Dei uma olhada e vi que era stoploss curto quando a entrada é feita no meio de candles com pouco volume e a volatilidade é alta, ai acaba pegando o stop e ja abrindo outra ordem.

Sabem alguma tática pra evitar isso?


Vlw pessoal.

Olá João!


Uma forma seria usando isNewBar(), como nesse exemplo ...

Documentação sobre MQL5: Manipulação de eventos / OnTick
Documentação sobre MQL5: Manipulação de eventos / OnTick
  • www.mql5.com
OnTick - Manipulação de eventos - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5