Programa Simples... Deveria ter funcionado.

Para adicionar comentários, por favor Faça o login ou registrar
AnarcoPhysic
186
AnarcoPhysic  

Olá a todos,


Mais uma vez, eu com dúvidas de pré-incipientes.

O programa que gostaria de fazer me informaria a razão volumeTick/VolumeReal de um determinado candle . Porém, ao rodá-lo, não consigo nenhuma saída. Fiz um esquema de printar um valor calculado. Este me retorna 0.0. Nos erros consta a mensagem 

possible loss of data due to type conversion Delta%Vol.mq5 54 25


Variáveis tipo long são convertidas facilmente paratipo double, não?

//+------------------------------------------------------------------+

//|                                                    Delta%Vol.mq5 |
//|                                                  Da B |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "DaB"
#property link     
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot DeltaVol
#property indicator_label1  "DeltaVol"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         DeltaVolBuffer[];
bool           PrimeiraVez = true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,DeltaVolBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,8); // tentei para outros valores também.. não somente 8
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   for(int i=0;i<rates_total;i++)
 {
      if(volume[i] != 0) 
    {      
      DeltaVolBuffer[i] = tick_volume[i]/volume[i] ;
    }   
  }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
  • www.mql5.com
Pergunte sobre análise técnica, converse sobre sistemas de negociação e melhore suas habilidades quanto a programação de estratégias de negociação em linguagem MQL5. Mantenha contato e compartilhe experiência com traders de todo o mundo e ajude com feedback os novatos no fórum - nossa comunidade está crescendo junto com você. Como plotar um...
Rogerio Giannetti Torres
3139
Rogerio Giannetti Torres  
AnarcoPhysic:

Olá a todos,


Mais uma vez, eu com dúvidas de pré-incipientes.

O programa que gostaria de fazer me informaria a razão volumeTick/VolumeReal de um determinado candle . Porém, ao rodá-lo, não consigo nenhuma saída. Fiz um esquema de printar um valor calculado. Este me retorna 0.0. Nos erros consta a mensagem 

possible loss of data due to type conversion Delta%Vol.mq5 54 25


Variáveis tipo long são convertidas facilmente paratipo double, não?


Ola,

pois então faltou exatamente isso,  fazer o casting para double!

Aproveitei e otimizei seu código. 


//---
   for(int i=prev_calculated;i<rates_total;i++)
     {
      if(volume[i]!=0)
        {
         DeltaVolBuffer[i]=(double) tick_volume[i]/(double) volume[i];
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total-1);
AnarcoPhysic
186
AnarcoPhysic  
Rogerio Giannetti Torres:

Ola,

pois então faltou exatamente isso,  fazer o casting para double!

Aproveitei e otimizei seu código. 


Mais uma vez, você me resgatando das profundezas! Te devo já duas  cervejas (ou dois sucos,caso não beba).

Muito obrigado!!!
AnarcoPhysic
186
AnarcoPhysic  
Como que se fecha um tópico?!?!? :X
Rodrigo Malacarne
Moderador
8088
Rodrigo Malacarne  
AnarcoPhysic:
Como que se fecha um tópico?!?!? :X

Não é possível para usuários fechar um tópico.

Atenciosamente,
Malacarne

Para adicionar comentários, por favor Faça o login ou registrar