Hola chicos, me gustó mucho este indicador, he estado aprendiendo sobre el perfil de mercado por un tiempo y esto es lo mejor que he encontrado.
Acabo de hacer un cambio en el método de cálculo del perfil, he utilizado la garrapata volumen en lugar de verificar sólo si el precio pasado en el punto. Hice esto porque si usted ve, los oficios y los diferentes tiempos tienen diferentes libras, se puede ver en el histograma de volumen. Así que no podemos juntamos cuenta si el precio está allí añadir uno.
¿Está de acuerdo?
El cambio que hice mostró diferencias entre en los dos mettods
Hola ¿Alguien sabe si es posible hacer que un robot traicione solo en estas lineas del POC? si es asi, ¿como puedo hacerlo? porque estoy probando todas las variables en el archivo ClassPriceHistogram y los valores son todos ceros, ¿alguien me puede ayudar?
Hola Luiz@Luiz Vinicius Pereira Rocha - así que amigo, soy nuevo en programación, y estaba trabajando en un EA que sólo rastrea POCs, valoraciones altas y bajas, y terminé encontrando este indicador. Sin embargo, no pude encontrar el lugar donde almacena los puntos Poc, cuando utilizo la función de impresión en algunas de las variables del autor como: Poc_value, aparecen valores cero. ¿puedes ayudarme?
en primer lugar: Gracias por tu gran artículo y trabajo.
Aunque hace mucho tiempo que lo publicaste, funciona bien.
Lo que tengo aqui para ti y la comunidad es una actualizacion, para que el histograma use el tickvolume, porque usar solo la accion del precio en areas de tiempo, donde el volumen es casi cero, no ayuda mucho.
Reemplace el código correspondiente en el archivo ClassPriceHistogram.mqh
bool CPriceHistogram::calculationPOCs()
{
int rates_total,rates_high,rates_time,rates_tv,index;
doubleiHigh[],iLow[];
long iTV[];
datetimeiTime[];
// Ïîëó÷àåì äàííûå çà ïåðèîä ñ time_start äî time_end / Obtenemos los datos desde time_start hasta time_endint err=0;
do
{
rates_time=CopyTime(NULL,PERIOD_M1,time_start,time_end,iTime);
rates_high=CopyHigh(NULL,PERIOD_M1,time_start,time_end,iHigh);
rates_total=CopyLow(NULL,PERIOD_M1,time_start,time_end,iLow);
rates_tv=CopyTickVolume(NULL,PERIOD_M1,time_start,time_end,iTV);
err++;
}
while((rates_time<=0 || (rates_total!=rates_high || rates_total!=rates_time || rates_tv!=rates_time)) && err<AMOUNT_OF_ATTEMPTS);
if(err>=AMOUNT_OF_ATTEMPTS)
{
return(false);
}
poc_start_time=iTime[0];
high_day=iHigh[ArrayMaximum(iHigh,0,rates_total)];
low_day=iLow[ArrayMinimum(iLow,0,rates_total)];
int count=int((high_day-low_day)/_Point)+1;
// Ïîäñ÷åò äëèòåëüíîñòè íàõîæäåíèÿ öåíû íà êàæäîì óðîâíå / Recuento de la duración de un hallazgo del precio en cada nivelint ThicknessOfLevel[]; // ñîçäàåì ìàññèâ äëÿ ïîäñ÷åòà òèêîâ / creamos una matriz para el recuento de ticsArrayResize(ThicknessOfLevel,count);
ArrayInitialize(ThicknessOfLevel,0);
for(int i=0;i<rates_total;i++)
{
double C=iLow[i];
long CTV=iTV[i];
// Distribuye el tickvolumen de la barra de minutos en todos los puntos posibles de la barra// Así que el incremento por punto será este ...int CInc=int(((iHigh[i]-iLow[i])/_Point));
while(C<iHigh[i])
{
int Index=int((C-low_day)/_Point);
ThicknessOfLevel[Index]+=CInc;
C+=_Point;
}
}
Admito que es un hack rápido y no he probado cada pieza de código, pero hasta ahora funciona bien.
Sólo un aviso... He descargado todos los archivos a sus directorios correspondientes, compilado, y recibió errores en relación con ClassPriceHistogram.mqh. En la línea 375 en el mismo, simplemente reemplazado
CPriceHistogram::Delete()
con
void CPriceHistogram::Delete()
Ahora funciona bien en AMP Futures' MT5 Version 5.00 Build 3661.
@Oleksandr, este "indicador" es técnicamente un Experto. Los buffers de indicadores no están disponibles en Expertos. Los buffers pueden ser recreados efectivamente usando arrays en Expertos pero solo los buffers de indicadores reales pueden ser llamados por iCustom así que para ese propósito, un nuevo indicador personalizado tendría que ser codificado desde cero. Desafortunadamente, ambas opciones están más allá de mi nivel de capacidad de codificación. Buena suerte en la búsqueda de una ayuda mejor.
Elimina el comando "Delete()" y funcionará.
Hola chicos, me gustó mucho este indicador, he estado aprendiendo sobre el perfil de mercado por un tiempo y esto es lo mejor que he encontrado.
Acabo de hacer un cambio en el método de cálculo del perfil, he utilizado la garrapata volumen en lugar de verificar sólo si el precio pasado en el punto. Hice esto porque si usted ve, los oficios y los diferentes tiempos tienen diferentes libras, se puede ver en el histograma de volumen. Así que no podemos juntamos cuenta si el precio está allí añadir uno.
¿Está de acuerdo?
El cambio que hice mostró diferencias entre en los dos mettods
Hola Dmitry
en primer lugar: Gracias por tu gran artículo y trabajo.
Aunque hace mucho tiempo que lo publicaste, funciona bien.
Lo que tengo aqui para ti y la comunidad es una actualizacion, para que el histograma use el tickvolume, porque usar solo la accion del precio en areas de tiempo, donde el volumen es casi cero, no ayuda mucho.
Reemplace el código correspondiente en el archivo ClassPriceHistogram.mqh
Admito que es un hack rápido y no he probado cada pieza de código, pero hasta ahora funciona bien.
Aquí un ejemplo con el índice SP500:
Estimado Dmitry
Espero que estés bien.
¿Sería posible que implementar búferes para las líneas?
Para cada POC, tal vez un Vwap y Mediana?
Muchas gracias de antemano
con
void CPriceHistogram::Delete()Ahora funciona bien en AMP Futures' MT5 Version 5.00 Build 3661.
@Oleksandr, este "indicador" es técnicamente un Experto. Los buffers de indicadores no están disponibles en Expertos. Los buffers pueden ser recreados efectivamente usando arrays en Expertos pero solo los buffers de indicadores reales pueden ser llamados por iCustom así que para ese propósito, un nuevo indicador personalizado tendría que ser codificado desde cero. Desafortunadamente, ambas opciones están más allá de mi nivel de capacidad de codificación. Buena suerte en la búsqueda de una ayuda mejor.
GRACIAS