Ayuda a la codificación - página 111

 

¡Muchas gracias! ¡Eres muy bueno!

 

Hola,

¿Alguien conoce un indicador que trace sólo el punto de oscilación en el gráfico como se describe a continuación (como el de Pipware Dashboard):

Estrategia Fractal Breakout

Como se dijo anteriormente, la acción del precio se mueve en ondas. La dirección de la tendencia (hacia arriba o hacia abajo) se determina por los máximos y mínimos consecutivos.

TENDENCIA ALTA es cuando estas ondas están haciendo máximos y mínimos más altos.

TENDENCIA A LA BAJA es cuando estas ondas hacen mínimos y máximos más bajos.

Dado que los fractales son máximos y mínimos, se pueden utilizar para determinar la dirección de la tendencia.

Considere el gráfico H4 de GU (derecha). Antes del punto A, la tendencia es alcista, es decir, el segundo fractal bajo es más alto que el primero... el segundo fractal alto es más alto que el primero.

En el punto A se formó un nuevo fractal bajo que es más alto que los dos fractales bajos anteriores (continuando la tendencia ascendente). La vela inmediatamente posterior al punto A formó un nuevo fractal alto. Este fractal es más bajo que su fractal alto anterior, lo que indica un posible cambio en la dirección de la tendencia. La vela bajo el punto B "rompe" el nivel fractal del punto A (línea verde). Se dibuja una flecha roja que indica que la dirección de la tendencia ha cambiado a ABAJO.

Las flechas se pueden mostrar con ArrowsOn=true. Nota: las flechas se dibujan sólo cuando una ruptura fractal cambia la dirección de la tendencia. Por ejemplo, después del punto B, los fractales inferiores continúan rompiéndose (2 veces más).

Después del punto B, la tendencia se considera BAJA hasta que se rompe un fractal alto. Justo antes del punto C, se forma un fractal bajo más alto. La dirección de la tendencia se sigue considerando BAJA... todavía no se ha roto ningún fractal alto.

En el punto E, se rompe el fractal alto del punto C. Aunque se trata de una pequeña ruptura, se dibuja una flecha verde en el punto D que indica un cambio en la dirección de la tendencia. Ahora se considera que la tendencia es ascendente hasta la próxima ruptura del fractal bajo.

Muchas gracias por su ayuda.

Un saludo,

Gringoh

Archivos adjuntos:
 

¡¡¡Gracias Mladen, es perfecto!!! Si quiero añadir otra línea al indicador como este, ¿cómo mod el código? gracias de antemano....

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

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

//| |

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

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

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

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

for( i = 0; i < limit; i++)

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

 
k3rn3l:
¡¡¡Gracias Mladen, es perfecto!!! Si quiero añadir otra línea al indicador así, ¿cómo modifico el código? gracias de antemano....

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

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

//| |

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

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

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

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

for( i = 0; i < limit; i++)

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

k3rn3l

Ya lo has hecho (hay 2 líneas en el indicador). Si te refieres a una más (para tener 3) simplemente haz lo mismo que hiciste para la segunda línea

 

Estimados codificadores,

encontré este indicador METASTOCK muy bueno, ¿puede por favor hacerlo para mt4?

x:=Input("Cierres inferiores consecutivos - Entrada",

0,21,5);

y:=Input("Cierres consecutivos superiores - Salida",

0,21,5);

delay:=Input("Retraso de entrada y salida",0,5,0);

plot:=Input("señales: [1]Limpio, [2]Todo",

1,2,2);

In:=Suma(C<Ref(C,-1),x)=x;

Out:=Suma(C>Ref(C,-1),y)=y;

Init:=Suma(In+Out>-1)=1;

InInit:=Suma(In)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInit;

signals:=(InInit AND Alert(InInit=0,2)

OR flag AND Alert(flag=0,2))

-(flag=0 AND Alert(flag,2));

0;Ref(If(plot=1,signals,In-Out),-delay)

 
debashis:
Queridos codificadores,

Este indicador METASTOCK me parece muy bueno, ¿podrían hacerlo para mt4?

x:=Input("Cierres inferiores consecutivos - Entrada",

0,21,5);

y:=Input("Cierres consecutivos superiores - Salida",

0,21,5);

delay:=Input("Retraso de entrada y salida",0,5,0);

plot:=Input("señales: [1]Limpio, [2]Todo",

1,2,2);

In:=Suma(C<Ref(C,-1),x)=x;

Out:=Suma(C>Ref(C,-1),y)=y;

Init:=Suma(In+Out>-1)=1;

InInit:=Suma(In)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInit;

signals:=(InInit AND Alert(InInit=0,2)

OR flag AND Alert(flag=0,2))

-(flag=0 AND Alert(flag,2));

0;Ref(If(plot=1,signals,In-Out),-delay)

debashis

¿Cuál es el nombre de ese indicador?

 

gurú

se llama "sistema de patrones básicos". http://www.metastocktools.com/MetaStock/Pattern01.txt

 

Hola malden, gracias por ayudarme con el ASCTrend. Me pregunto si usted podría ayudarme a hacer un ea para este indicador. hay otro indicador llamado MaonMa. (Voy a adjuntar) Mi pensamiento es cuando las flechas ASCTrend arriba y la barra está por encima de la línea amarilla (60 MA), poner un comercio de largo, la pérdida de la parada será el menor anterior, del mismo modo, cuando las flechas ASCTrend abajo y la barra está por debajo de la línea amarilla (60 MA), poner un comercio corto, la pérdida de la parada será el mayor anterior. Gracias.

Archivos adjuntos:
 

Hola Mladen,

Necesito su ayuda de nuevo. Hice el siguiente código para un indicador basado en la flecha. pero su PC de congelación. si se trata de evitar el retraso, puede escribir el código de nuevo utilizando el original rsi, cci y cmo códigos en el indicador sin función icustom.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Crimson

#property indicator_color2 RoyalBlue

//---- parámetros de entrada

extern int barsToProcess=100;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

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

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

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

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| Función de desinicialización del indicador personalizada ||

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

int deinit()

{

//----

//----

return(0);

}

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

//| Función de iteración del indicador personalizada ||

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

int inicio()

{

int counted_bars=IndicatorCounted(),

límite;

if(counted_bars>0)

barras_contadas--;

limit=Barras_contadas;

si(límite>barrasParaProcesar)

limit=barrasParaProcesar;

for(int i=0;i<limit;i++)

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i);

double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i);

if(rsi>60.0 && cci>150.0&&cmo>30.0)

ExtMapBuffer1=Alto+5*Punto;

si no

ExtMapBuffer1=0,0;

if(rsi<10.0 && cci<-150.0&&cmo<-30.0)

ExtMapBuffer2=Bajo-5*Punto;

si no

ExtMapBuffer2=0,0;

}

return(0);

}

 
anonimm:
Hola Mladen,

necesito su ayuda de nuevo. he puesto el siguiente código para un indicador basado en la flecha. pero su PC de congelación. si sería evitar el retraso, puede escribir el código de nuevo utilizando el original rsi, cci y cmo códigos en el indicador sin función icustom.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Crimson

#property indicator_color2 RoyalBlue

//---- parámetros de entrada

extern int barsToProcess=100;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

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

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

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

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| Función de desinicialización del indicador personalizada ||

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

int deinit()

{

//----

//----

return(0);

}

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

//| Función de iteración del indicador personalizada ||

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

int inicio()

{

int counted_bars=IndicatorCounted(),

límite;

if(counted_bars>0)

barras_contadas--;

limit=Barras_contadas;

si(límite>barrasParaProcesar)

limit=barrasParaProcesar;

for(int i=0;i<limit;i++)

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i);

double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i);

if(rsi>60.0 && cci>150.0&&cmo>30.0)

ExtMapBuffer1=Alto+5*Punto;

si no

ExtMapBuffer1=0,0;

if(rsi<10.0 && cci<-150.0&&cmo<-30.0)

ExtMapBuffer2=Bajo-5*Punto;

si no

ExtMapBuffer2=0,0;

}

return(0);

}

En lugar de utilizar iCustom() para rsi y cci utilice las funciones incorporadas.

Parámetros necesarios para RSI :

timeframe period, applied_price TR Parámetros necesarios para el iCCI( [TD]string symbol, int timeframe, int period, int applied_price, int shift)
double iRSI([/TD] string symbol, int , int int , int shift)[/TD]

[/

]

[/TABLE]

CCI :

[TABLE="class: docvar"]

[TR]

[TD]double

Y para CMO, el primer parámetro es LastBarOnly y el segundo es CMO_Range, por lo que la llamada a iCustom() debería ser algo así como :

iCustom(NULL,0, "cmo",false,CMORange,0,i);

donde CMORange sería algún parámetro

Razón de la queja: