Robô Baseado em candles de volume

 

Olá,

Eu programo regras de coloração e execução para o Profit Pro, porém recentemente resolvi me aventurar no MetaTrader5.

Eu criei um indicador que coloca linhas de suporte e resistência nas máximas e mínimas dos candles.

No primeiro dia o indicador funcionou certinho, mas agora ele parece estar com problema. Sempre que eu compilo, aparece algo diferente no gráfico. É muito estranho.


o Código é basicamente esse:


""""""""""""""""""""""""""""""

   for (int i=0; i<rates_total; i++)

      {

          double tempH = 0;

          double tempL = 0;

          double tempO = 0;

          double tempC = 0;

          double tempM = 0; 

         

         if(volume[i] > 55000)

            {


               tempH = high[i];

               tempL = low[i];

               tempO = open[i];

               tempC = close[i];

               tempM = (tempH+tempL)/2; 


          

            }

          else

            {          

               PontoHBuffer[i] = tempH;

               PontoLBuffer[i] = tempL;

               PontoOBuffer[i] = tempO;

               PontoCBuffer[i] = tempC; 

            }

                             

      }


'''''''''''''''''''''''''''''''''''''''''''''

 

Em anexo imagens do que está ocorrendo e do que deveria ocorrer.


Alguém poderia me ajudar?


Obrigado.

Arquivos anexados:
Plot_bugado.PNG  11 kb
PlotOK.PNG  27 kb
 

Coloquei as variáveis fora do FOR, consegui o resultado anexo.

Agora gostaria de não exibir as linhas quando elas forem verticais. Como posso fazer isso?

Arquivos anexados:
 
Marconi Trader:

Coloquei as variáveis fora do FOR, consegui o resultado anexo.

Agora gostaria de não exibir as linhas quando elas forem verticais. Como posso fazer isso?

Pesquise por  

PlotIndexSetDouble()

e o #define

PLOT_EMPTY_VALUE

;)


 

Obrigado pela ajuda.


Consegui criar o indicador,

Estou com alguma dificuldade para transformar esse indicador em um Robô.

Estou me baseando em um exemplo da internet que utiliza a biblioteca CTrade.


Quando eu empacar, postarei as duvidas aqui.

 

O exemplo que eu me baseei é um cruzamento de medias. Ele executa as operações sempre que uma nova Barra surge e aconteceu um cruzamento de medias.

No caso do meu robô eu queria que ele apregoasse uma ordem no PontoM. Porem não estou conseguindo fazer isso funcionar. Simplesmente não executa nada.

trade.OrderOpen(_Symbol,ORDER_TYPE_SELL,lote, tempM, tempM, tempH, tempL);

Eu coloquei esse código no lugar onde eu imprimia as linhas na Tela.


Tudo isso fica dentro de uma função chamada Oncalculate().

Não sei isso está correto para uma estratégia de execução, porque no exemplo que peguei tudo está dentro de Ontick() e dentro de isNewBar()

De qualquer forma, não está funcionando. Tentei colocar o comando acima em diversos locais do código e no modo visual, não aparece nenhuma ordem apregoada.

 
Marconi Trader:

....

Indicador não envia ordens...Vc precisa criar outro algoritmo com as funções de manipulação do EA(OnTick, OnTrade, OnTradeTransaction).

dentro dele vc pode usar a função iCustom para copiar os dados do seu indicador e manipular as informações dentro do EA.

Razão: