Aiuto per la codifica - pagina 492

 

Allarme troppo Re: Aiuto di codifica

Ciao Masters Grazie per il tuo grande lavoro, ho voluto condividere con tutti questo Alert TrendLine, che ha origine Suona quando il prezzo Bid attraversa qualsiasi linea di tendenza o linea orizzontale disegnata, l'ho modificato per far apparire anche l'Alert, l'unico problema è che allerta ogni tick quando il prezzo (bid) attraversa una linea, ho provato a modificarlo per allertare solo una ogni barra quando attraversa la linea aggiungendo una funzione time stamp alla fine di esso.Complie alright, ma non funziona affatto (nessun allarme). per favore, se avete tempo di guardarlo e indicarmi la giusta direzione. molti molti grazie!

static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

 
huang jin:
Ciao Masters Grazie per il tuo grande lavoro, ho voluto condividere con tutti questo TrendLine Alert, che ha origine Suona quando il prezzo Bid attraversa qualsiasi linea di tendenza o linea orizzontale disegnata, l'ho modificato per far apparire anche l'Alert, l'unico problema è che allerta ogni tick quando il prezzo (bid) attraversa una linea, ho provato a modificarlo per allertare solo una volta ogni barra quando attraversa la linea aggiungendo una funzione time stamp alla fine di esso.Complie alright, ma non funziona affatto (nessun allarme). per favore, se avete tempo di guardarlo e indicarmi la giusta direzione. molti molti grazie!
static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

Non stai mai assegnando un valore a Close_Time. Appena lo fai, ti avviserà solo una volta per barra

 

@mladen Ho trovato questo indicatore su TradingView ed è possibile fare questo per mt4?

Ecco il codice sorgente:

//Creato dall'utente ChrisMoody 4-24-2014

//Plot la maggior parte delle medie mobili

//Defaults to Current Chart Time Frame --- Ma può essere cambiato in time frame superiori o inferiori

//Seconda capacità MA con funzione Mostra incroci

study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)

//ingressi

src = chiudi

useCurrentRes = input(true, title="Use Current Chart Resolution?")

resCustom = input(title="Usa un timeframe diverso? Deseleziona la casella sopra", type=resolution, defval="D")

len = input(20, title="Moving Average Length - LookBack Period")

atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")

cc = input(true,title="Cambiare colore in base alla direzione?")

smoothe = input(2, minval=1, maxval=10, title="Smoothing colore - 1 = No Smoothing")

doma2 = input(false, title="Optional 2nd Moving Average")

len2 = input(50, title="Lunghezza media mobile - 2a MA opzionale")

atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")

cc2 = input(true,title="Cambia il colore in base alla direzione della 2a MA?")

warn = input(false, title="***Puoi attivare il parametro Show Dots qui sotto senza tracciare la 2a MA per vedere gli incroci***")

warn2 = input(false, title="***Se si usa la funzione Cross senza tracciare la 2a MA - assicurarsi che i parametri della 2a MA siano impostati correttamente***")

sd = input(false, title="Mostra punti sull'incrocio di entrambe le MA")

res = useCurrentRes ? period : resCustom

/definizione della ma di scafo

hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))

//definizione ema

ema1 = ema(src, len)

ema2 = ema(ema1, len)

ema3 = ema(ema2, len)

tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema

//2° Ma - definizione di hullma

hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2))

//seconda definizione MA TEMA

sema1 = ema(src, len2)

sema2 = ema(sema1, len2)

sema3 = ema(sema2, len2)

stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema

out = avg

out_two = avg2

out1 = sicurezza(tickerid, res, out)

out2 = sicurezza(tickerid, res, out_two)

ma_up = out1 >= out1[smoothe]

ma_down = out1 < out1[smoothe]

col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua

col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

circleYPosition = out2

plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col)

plot(doma2 e out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2)

plot(sd e cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)

 

Screenshot dell'indicatore:

File:
pepqyie.png  84 kb
 

Qualche esempio di accesso condiviso ai file da più istanze di codice?

 
apprentice coder:
Qualche esempio di accesso condiviso ai file da più istanze di codice?

Potete vedere un esempio qui: https: //www.mql5.com/en/forum/175881/page5

 
mladen:
Potete vedere un esempio qui: https: //www.mql5.com/en/forum/175881/page5

Capito

 

Posso sapere se c'è qualche ea che usa l'indicatore "HalfTrend-1.02"?

Ho bisogno di qualche codice di esempio.

Stavo cercando di utilizzare questo indi per il filtraggio, ma ho visto che manca molti trade.

Non so cosa c'è di sbagliato in questo ....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;
 
stevenpun:
Posso sapere se c'è qualche ea che usa l'indicatore "HalfTrend-1.02"?

Ho bisogno di qualche codice di esempio.

Stavo cercando di utilizzare questo indi per il filtraggio, ma ho visto che manca molti scambi.

Non so cosa c'è di sbagliato in questo ....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;

Ciao Stevenpun,

Due cose che puoi provare immediatamente:

1) Aggiungi Stampa e Commenti per vedere TUTTI i tuoi valori...e assicurati di ricevere correttamente tutti i valori del tuo indicatore...

Le stampe andranno nel LOG... e i commenti appariranno sullo schermo in modo da poterli vedere immediatamente.

2) Riduci a icona la tua "Trade Logic"...e prova OGNI segnale da solo... Poi se funzionano...inizia a combinarli di nuovo insieme.

Se non funzionano... allora hai trovato il tuo problema.

Meno "if annidati" hai, più facile sarà rintracciare i tuoi problemi senza fare scambi...

Inoltre... gli "if" multipli filtrano la maggior parte delle compravendite... quindi anche quando funziona bene... potrebbero non esserci molte compravendite...

Spero che questo aiuti,

Robert

 

Grazie Mladen,

mladen:
.................. avviserà solo una volta per barra

Questo è esattamente quello che voglio che faccia, vedi la foto che ho allegato, il prezzo salta su e giù con la linea ogni pochi tick, causa l'allarme indi ogni volta che passa o tocca la linea .......... quello che voglio che faccia è se la barra ha già un allarme, aspetta la nuova barra per dare di nuovo l'allarme se passa la linea. Ma il codice che ho aggiunto fa sì che l'indi non funzioni affatto (nessun Alert). potresti per favore dare un'altra occhiata a cosa ho fatto di sbagliato? emolte molte grazie!

Motivazione: