Ayuda a la codificación - página 466

 

Buenos días a todos.

He visto muchas versiones de este indicador y las velas rojas nunca me aparecen, podría corregir el error ????.

Muchas gracias.

#property indicador_separar_ventana

#property indicator_buffers 2

#property indicador_color1 verde lima

#property indicador_color2 Rojo

//---- búferes del indicador

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

//----

double CB = 0, valueh1 = 0, valuel = 0, valueh = 0, value = 0, price = 0, hi = 1, lo = 1;

double resh = 0, resl = 0, deltah = 0, deltal = 0;

int CurrentBar=0;

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

//| Función de inicialización del indicador personalizada ||.

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

int init()

{

//---- 1 buffer adicional utilizado para el conteo.

IndicatorBuffers(3);

//---- ajustes de dibujo

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3 asignación de buffers de indicadores

if(!SetIndexBuffer(0, ind_buffer1) &&

!SetIndexBuffer(1, ind_buffer2) &&

!SetIndexBuffer(2, ind_buffer3))

Print("¡no se pueden establecer búferes indicadores!");

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

IndicatorShortName("FuerzaDelta");

SetIndexLabel(0, "DF1");

SetIndexLabel(1, "DF2");

//---- inicialización realizada

return(0);

}

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

//| Fuerza Delta ||

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

int inicio()

{

for(CB = 0 ; CB <= Bares ; CB++)

{

CurrentBar = Bars - CB;

if(Close[CurrentBar] > Close[CurrentBar+1])

{

resl = 0;

if(resh == 0)

deltah = 0;

deltah = deltah + (Close[CurrentBar] - Close[CurrentBar+1]);

// valueh = High[CurrentBar];

resh= 1;

}

if(resh == 0)

deltah = 0;

ind_buffer1[CurrentBar] = deltah;

if(Close[CurrentBar] < Close[CurrentBar+1] )

{

resh = 0;

if(resl == 0)

deltal = 0;

deltal = deltal + (Close[CurrentBar+1] - Close[CurrentBar]);

//valuel = Low[CurrentBar];

resl= 1;

}

if(resl == 0 )

deltal=0;

ind_buffer2[CurrentBar] = deltal;

}

//---- hecho

return(0);

}

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

 
rookiespain:
Buenos días a todos.

He visto muchas versiones de este indicador y las velas rojas nunca me aparecen, podría corregir el error ????.

Muchas gracias.

#property indicador_separar_ventana

#property indicator_buffers 2

#property indicador_color1 LimeGreen

#property indicador_color2 Rojo

//---- búferes del indicador

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

//----

double CB = 0, valueh1 = 0, valuel = 0, valueh = 0, value = 0, price = 0, hi = 1, lo = 1;

double resh = 0, resl = 0, deltah = 0, deltal = 0;

int CurrentBar=0;

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

//| Función de inicialización del indicador personalizada ||.

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

int init()

{

//---- 1 buffer adicional utilizado para el conteo.

IndicatorBuffers(3);

//---- ajustes de dibujo

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3 asignación de buffers de indicadores

if(!SetIndexBuffer(0, ind_buffer1) &&

!SetIndexBuffer(1, ind_buffer2) &&

!SetIndexBuffer(2, ind_buffer3))

Print("¡no se pueden establecer búferes indicadores!");

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

IndicatorShortName("FuerzaDelta");

SetIndexLabel(0, "DF1");

SetIndexLabel(1, "DF2");

//---- inicialización realizada

return(0);

}

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

//| Fuerza Delta ||

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

int inicio()

{

for(CB = 0 ; CB <= Bares ; CB++)

{

CurrentBar = Bars - CB;

if(Close[CurrentBar] > Close[CurrentBar+1])

{

resl = 0;

if(resh == 0)

deltah = 0;

deltah = deltah + (Close[CurrentBar] - Close[CurrentBar+1]);

// valueh = High[CurrentBar];

resh= 1;

}

if(resh == 0)

deltah = 0;

ind_buffer1[CurrentBar] = deltah;

if(Close[CurrentBar] < Close[CurrentBar+1] )

{

resh = 0;

if(resl == 0)

deltal = 0;

deltal = deltal + (Close[CurrentBar+1] - Close[CurrentBar]);

//valuel = Low[CurrentBar];

resl= 1;

}

if(resl == 0 )

deltal=0;

ind_buffer2[CurrentBar] = deltal;

}

//---- hecho

return(0);

}

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

Pruébalo ahora : _test.mq4

Archivos adjuntos:
_test.mq4  3 kb
test.gif  68 kb
 
Big Be:
Stanwell,

Un par de fotos que muestren todo eso ayudaría.

Big Be

Hola Big Be,

Buen punto, voy a publicar algunos gráficos mañana.

cheers,

Stan

 

Aquí está el gráfico del AUD que he marcado manualmente. Los cuadros rojos son las barras superpuestas. A la izquierda, hay un cuadro que muestra sólo tres barras dentro de él, por lo que no se ajusta a la definición. Sin embargo, si este tramo es significativo, digamos mayor que 6 X ATR, los contaría como un swing también (sólo que es difícil de operar con sólo tres barras), pero pensé que este requisito complicaría la codificación, así que podemos dejarlo fuera por el momento.

Gracias.

Stan

Archivos adjuntos:
 

¡Hola Mladen y Mrtools !

Necesito su ayuda de nuevo, ¿son capaces de añadir una alerta visual / acústica a este indicador por favor?

¡Gracias de antemano, saludos!

Archivos adjuntos:
 

MLADEN, buenos días.

Muchas gracias, he probado su _test y aparece correctamente.

Cualquier ayuda la tengo aquí, aunque su dominio es mucho más que el mío, aunque en ProRealTime / VISUALCHART sí puedo ayudar más.

Un saludo.

 

Hola,

Tengo un indicador y quiero limitar el cálculo de las barras.

El código original era:

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);

¿Es correcto? El indicador parece funcionar bien pero tengo la duda de si realmente he limitado el cálculo de las barras.

 
thefxpros:
Hola,

Tengo un indicador y quiero limitar el cálculo de las barras.

El código original era

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);
¿Es correcto? El indicador parece funcionar bien pero tengo la duda de si realmente he limitado el cálculo de las barras.

thefxpros

No. Hazlo así :

int limit = MathMin(MathMin(Bars-counted_bars,Bars-1),NBars);

Pero en ese caso siempre tienes que asegurarte de que NBars es siempre > 0

 

Hola mladen

si puedes ayudarme,añade los ejes X e Y,entonces puedo ponerlo en la esquina,

y puede ajustar el tamaño de la fuente,lo siento por mi Inglés.

X2014-PIPSv2

muchas gracias.

Archivos adjuntos:
 
blueface:
Hola mladen

si usted puede ayudarme, añadir los ejes X e Y, entonces puedo poner en él a la esquina,

y puede ajustar el tamaño de la fuente, lo siento por mi Inglés.

X2014-PIPSv2

muchas gracias.

blueface

Ya los tienes : variables posX y posY en el código