Aiuto per la codifica - pagina 111

 

Grazie mille, sei così bravo!

 

Salve,

Qualcuno conosce un indicatore che tracci solo il punto di oscillazione sul grafico come descritto qui sotto (come quello in Pipware Dashboard):

Strategia Fractal Breakout

Come detto in precedenza, l'azione dei prezzi si muove in onde. La direzione del trend (su o giù) è determinata dai massimi e minimi consecutivi.

UP TREND è quando queste onde fanno alti e bassi più alti.

DOWN TREND è quando queste onde fanno minimi e massimi più bassi.

Poiché i frattali sono alti e bassi, possono essere usati per determinare la direzione del trend.

Considera il grafico GU H4 (a destra). Prima del punto A il trend è al rialzo, cioè il secondo frattale basso è più alto del primo... il secondo frattale alto è più alto del primo.

Un nuovo frattale basso si è formato al punto A ed è più alto dei due precedenti frattali bassi (continuando il trend UP). La candela immediatamente dopo il punto A ha formato un nuovo alto frattale. Questo frattale è più basso del precedente frattale alto, indicando un possibile cambiamento nella direzione del trend. La candela sotto il punto B "rompe" il livello frattale del punto A (linea verde). Viene disegnata una freccia rossa che indica che la direzione del trend è cambiata in DOWN.

Le frecce possono essere visualizzate da ArrowsOn=true. Nota: le frecce sono disegnate solo quando una rottura frattale cambia la direzione del trend. Per esempio, dopo il punto B, i frattali inferiori continuano ad essere rotti (altre 2 volte).

Dopo il punto B, il trend è considerato DOWN fino a quando un frattale alto viene rotto. Appena prima del punto C, si forma un frattale superiore basso. La direzione del trend è ancora considerata DOWN ... nessun frattale alto è stato ancora rotto.

Al punto E, il frattale alto del punto C viene rotto. Anche se si tratta di una piccola rottura, viene disegnata una freccia verde al punto D che indica un cambiamento nella direzione del trend. Il trend è ora considerato UP fino alla prossima rottura del frattale basso.

Molte grazie per il vostro aiuto.

Il migliore,

Gringoh

 

Grazie Mladen, è perfetto! Se voglio aggiungere un'altra linea all'indicatore come questa, come modifico il codice? grazie in anticipo....

#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:
Grazie Mladen, è perfetto! Se voglio aggiungere un'altra linea all'indicatore come questa, come modifico il codice? grazie in anticipo....

#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

L'hai già fatto (ci sono 2 linee sull'indicatore). Se intendi una in più (per averne 3) fai semplicemente la stessa cosa che hai fatto per la seconda linea

 

cari codificatori,

ho trovato questo indicatore METASTOCK molto buono, puoi per favore renderlo per mt4?

x:=Input("Consecutive Lower Closes - Entry",

0,21,5);

y:=Input("Consecutive Higher Closes - Exit",

0,21,5);

delay:=Input("Ritardo entrata e uscita",0,5,0);

plot:=Input("segnali: [1]Pulito, [2]Tutti",

1,2,2);

In:=Somma(C<Rif(C,-1),x)=x;

Out:=Somma(C>Rif(C,-1),y)=y;

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

InInit:=Cum(In)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInit;

segnali:=(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:
cari codificatori,

Ho trovato questo indicatore METASTOCK molto buono, puoi per favore renderlo per mt4?

x:=Input("Consecutive Lower Closes - Entry",

0,21,5);

y:=Input("Consecutive Higher Closes - Exit",

0,21,5);

delay:=Input("Ritardo entrata e uscita",0,5,0);

plot:=Input("segnali: [1]Pulito, [2]Tutti",

1,2,2);

In:=Somma(C<Rif(C,-1),x)=x;

Out:=Somma(C>Rif(C,-1),y)=y;

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

InInit:=Cum(In)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInit;

segnali:=(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

Qual è il nome di questo indicatore?

 

guru

si chiama "basic pattern system". http://www.metastocktools.com/MetaStock/Pattern01.txt

 

Ciao Malden, grazie per avermi aiutato con l'ASCTrend. Mi sto chiedendo se puoi aiutarmi a fare un ea per questo indicatore. c'è un altro indicatore chiamato MaonMa. (Li allegherò) Il mio pensiero è quando l'ASCTrend frecce su E la barra è sopra la linea gialla (60 MA), mettere un trade lungo, stop lose sarà il minimo precedente, allo stesso modo, quando l'ASCTrend frecce giù E la barra è sotto la linea gialla (60 MA), mettere un trade corto, stop lose sarà il massimo precedente. Grazie.

 

Ciao Mladen,

ho bisogno del tuo aiuto di nuovo. ho impostato il seguente codice per un indicatore basato sulla freccia. ma il suo pc si blocca. se si può evitare il lagging, si può scrivere di nuovo il codice utilizzando i codici originali rsi, cci e cmo nell'indicatore senza funzione icustom.

#proprietà indicator_chart_window

#proprietà indicator_buffers 2

#proprietà indicator_color1 Crimson

#proprietà indicator_color2 RoyalBlue

//---- parametri di input

extern int barsToProcess=100;

//---- buffer

double ExtMapBuffer1[]

double ExtMapBuffer2[]

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

//|Funzione di inizializzazione dell'indicatore personalizzata

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

int init()

{

//---- indicatori

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);

}

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

//| Funzione personalizzata di deinizializzazione dell'indicatore |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore personalizzato |

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

int start()

{

int counted_bars=IndicatorCounted(),

limite;

if(counted_bars>0)

counted_bars--;

limit=Bars contate_bars;

se(limite>barsToProcess)

limit=barsToProcess;

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=High+5*Point;

altrimenti

ExtMapBuffer1=0.0;

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

ExtMapBuffer2=Low-5*Point;

altrimenti

ExtMapBuffer2=0.0;

}

return(0);

}

 
anonimm:
Ciao Mladen,

ho bisogno del tuo aiuto di nuovo. ho impostato il seguente codice per un indicatore basato sulla freccia. ma il suo pc si blocca. se si evitasse il lagging, puoi scrivere di nuovo il codice usando i codici originali rsi, cci e cmo nell'indicatore senza la funzione icustom.

#proprietà indicator_chart_window

#proprietà indicator_buffers 2

#proprietà indicator_color1 Crimson

#proprietà indicator_color2 RoyalBlue

//---- parametri di input

extern int barsToProcess=100;

//---- buffer

double ExtMapBuffer1[]

double ExtMapBuffer2[]

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

//|Funzione di inizializzazione dell'indicatore personalizzata

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

int init()

{

//---- indicatori

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);

}

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

//| Funzione personalizzata di deinizializzazione dell'indicatore |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore personalizzato |

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

int start()

{

int counted_bars=IndicatorCounted(),

limite;

if(counted_bars>0)

counted_bars--;

limit=Bars contate_bars;

se(limite>barsToProcess)

limit=barsToProcess;

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=High+5*Point;

altrimenti

ExtMapBuffer1=0.0;

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

ExtMapBuffer2=Low-5*Point;

altrimenti

ExtMapBuffer2=0.0;

}

return(0);

}

Invece di usare iCustom() per rsi e cci usate le funzioni integrate.

Parametri necessari per RSI :

iCCI( [TD]string symbol, int timeframe, int period, int applied_price, int shift)
double iRSI([/TD]string symbol, int timeframe, int period, int applied_price, int shift)[/TD]

[/TR]

[/TABLE]

Parametri necessari per CCI :

[TABLE="class: docvar"]

[TR]

[TD]double

E per CMO, il primo parametro è LastBarOnly e il secondo è CMO_Range, quindi la chiamata iCustom() dovrebbe essere qualcosa come :

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

dove CMORange sarebbe un qualche parametro

Motivazione: