Bom dia,
Sua dúvida não está clara,
Qual o erro exatamente? É uma mensagem do MT5, um erro de compilação, etc.
O que você esperava obter e o que está obtendo? Um exemplo já ajudaria.
Bom dia,
Sua dúvida não está clara,
Qual o erro exatamente? É uma mensagem do MT5, um erro de compilação, etc.
O que você esperava obter e o que está obtendo? Um exemplo já ajudaria.
Obrigado pela ajuda, Gustavo.
Ao menos no meu computador, ao rodar as linhas acimas, não obtenho gráfico algum como resultado! Pelos vários testes que fiz, notei que a única coisa que me leva a um resultado inesperado (gráfico em branco) consta nesta linha :
DeltaVolBuffer[i] = (high[i]-low[i])/volume[i]
o que me levou a crer que aí estaria o erro, algo que não consegui dar sentido. Na verdade, se se substrai ou se multiplica (ou outra coisa qualquer), o gráfico apresentado é condizente com a operação.
Fui mais claro agora?
Alías, enquanto erro copilação ou de outra natureza enunciada, não percebi nenhum. Destaco que não é erro por haver operação com divisor 0.
Boa tarde
Como você não especificou qual a mesagem de erro que está aparecendo na aba "Expert" da "Caixa de Ferramentas" e que sua conclusão foi que poderia ser a divisão "/", então deduzo que o erro por ser "divisão por zero", sendo assim, sugiro a possível solução abaixo :
DeltaVolBuffer[i] = (high[i]-low[i])/(volume[i]+1) ;
AnarcoPhysic:
Caríssimos,
Sou leigo em programação, mas após vários testes, percebi, por mais de uma vez, que ao usar o operador matemático / , tenho problemas quais não sou capaz de entender. Sendo direto ao assunto, dou-lhes exemplo.
for(int i=0;i<rates_total;i++)
{
if(volume[i] != 0) {
DeltaVolBuffer[i] = (high[i]-low[i])/volume[i] ;
}}
E se quiserem, a versão de todo o arquivo
//+------------------------------------------------------------------+
//| Delta%Vol.mq5 |
//| Daniel Bandeira |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Daniel Bandeira"
#property link "https://www.mql5.com"
#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[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,DeltaVolBuffer,INDICATOR_DATA);
//---
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] = (high[i]-low[i])/volume[i] ;
}}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
O que está acontecendo afinal? Até eu dar conta, este erro comeu tempo meu!
Agradeço antecipadamente a quem responder.
Até!
Olá
coloca a seguinte instrução no OnInit() que a linha do indicador vai aparecer: IndicatorSetInteger(INDICATOR_DIGITS,8);
At.te
Rogério
Grande tiro no centro do alvo.
Acreditava que o algoritmo de construção gráfica já o reescalaria. Jamais poderia imaginar isso!
MUITO MUITO OBRIGADO!
Quando as esperanças morriam...
Foi uma das coisas que imaginei logo de início. Entre várias formas, tinha certeza que não era divisão por zero (algo que normalmente é avisado).
Obrigado pela ajuda. De qualquer forma, é sempre bom tomar esse cuidado.
Obrigado!
- 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
Caríssimos,
Sou leigo em programação, mas após vários testes, percebi, por mais de uma vez, que ao usar o operador matemático / , tenho problemas quais não sou capaz de entender. Sendo direto ao assunto, dou-lhes exemplo.
for(int i=0;i<rates_total;i++)
{
if(volume[i] != 0) {
DeltaVolBuffer[i] = (high[i]-low[i])/volume[i] ;
}}
E se quiserem, a versão de todo o arquivo
//+------------------------------------------------------------------+
//| Delta%Vol.mq5 |
//| Daniel Bandeira |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Daniel Bandeira"
#property link "https://www.mql5.com"
#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[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,DeltaVolBuffer,INDICATOR_DATA);
//---
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] = (high[i]-low[i])/volume[i] ;
}}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
O que está acontecendo afinal? Até eu dar conta, este erro comeu tempo meu!
Agradeço antecipadamente a quem responder.
Até!