

Buenas tardes S_SP:
Aqui tienes el codigo, aun asi, piensa que se podria producir un error, sobre todo trabajando en TimeFrame 1 Min, el motivo no seria otro que (high[i]-low[i]) podria ser 0, extraño! Si!, posible, provablemente en momentos que el mercado no se mueva o en pares de divisas con muy poco volumen.
Código://+------------------------------------------------------------------+ //| Fuerza Precio.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" #property version "1.00" #property strict #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 clrLimeGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 2 double VolumenBuffer[]; //------------------------------------------------------------------ //------------------------------------------------------------------ int OnInit() { string short_name; IndicatorDigits(Digits); IndicatorBuffers(1); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,VolumenBuffer); short_name="Fuerza Precio"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); return(INIT_SUCCEEDED); } //------------------------------------------------------------------ //------------------------------------------------------------------ void OnDeinit(const int reason) { return; } //------------------------------------------------------------------ //------------------------------------------------------------------ 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[]) { int limite=rates_total-prev_calculated; if(limite<=0) limite++; for( int i=0; i<limite; i++) { if((high[i]-low[i])!=0) VolumenBuffer[i]= tick_volume[i]/(high[i]-low[i]); else VolumenBuffer[i]= 0; } return(rates_total); } //------------------------------------------------------------------ //------------------------------------------------------------------
Un saludo
HermoForo de Forex Trading United

Hola a tod@s, he programado este indicador que divide el volumen entre la diferencia del precio de una vela, pero lo tengo que iniciar constantemente porque no se actualiza segun pasan las velas.
Alguien sabe porque pasa esto?
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1
//--- plot Volumen
#property indicator_label1 "Fuerza Precio"
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 clrLimeGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
double VolumenBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,VolumenBuffer,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[])
{
//---
int limite = rates_total - prev_calculated;
for( int i=0; i<limite; i++)
{
VolumenBuffer[i]= tick_volume[i]/(high[i]-low[i]);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+Foro de Forex Trading United
| Aviso Legal Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal |

