Aide au codage - page 492

 

Trop d'alerte Re : Aide au codage

Bonjour Masters Merci pour votre excellent travail, j'ai voulu partager avec tout le monde cette TrendLine Alert, il origine Plays son lorsque le prix Bid traverse toute ligne de tendance ou ligne horizontale que vous dessinez, je mod il à popup Alert ainsi, le seul problème avec elle est qu'il Alert chaque tick lorsque le prix (bid) croiser une ligne, j'ai essayé de mod il à Alert seulement un chaque barre quand il traverse la ligne par l'ajout d'une fonction d'horodatage à la fin de celui-ci .J'ai essayé de le modifier pour qu'il ne donne qu'une seule alerte par barre lorsqu'il franchit la ligne en ajoutant une fonction d'horodatage à la fin du programme.

static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

 
huang jin:
Bonjour Masters Merci pour votre excellent travail, je voudrais partager avec tout le monde cette TrendLine Alert, il origine Plays son lorsque le prix Bid traverse une ligne de tendance ou une ligne horizontale que vous dessinez, je mod il à popup Alert ainsi, le seul problème avec elle est qu'il Alert chaque tick lorsque le prix (bid) traverse une ligne, j'ai essayé de mod il à Alert seulement un par barre quand il traverse la ligne par l'ajout d'une fonction d'horodatage à la fin de celui-ci .J'ai essayé de le modifier pour qu'il ne donne qu'une seule alerte par barre lorsqu'il franchit la ligne en ajoutant une fonction d'horodatage à la fin du programme.
static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

Vous n'attribuez jamais de valeur à Close_Time. Dès que vous faites cela, il n'y aura qu'une seule alerte par barre.

 

@mladen J'ai trouvé cet indicateur sur TradingView et est-il possible de le faire pour mt4 ?

Voici le code source :

//Créé par l'utilisateur ChrisMoody 4-24-2014

//Plaque la majorité des moyennes mobiles

//Defaults to Current Chart Time Frame --- But But Can Be Changed to Higher Or Lower Time Frames

//Capacité de la 2ème MA avec la fonction "Show Crosses".

étude(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)

//entrées

src = fermer

useCurrentRes = input(true, title="Utiliser la résolution actuelle du graphique ?")

resCustom = input(title="Use Different Timeframe ? Décochez la case ci-dessus", 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="Changer la couleur en fonction de la direction ?")

smoothe = input(2, minval=1, maxval=10, title="Lissage des couleurs - 1 = Pas de lissage")

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

len2 = input(50, title="Longueur de la moyenne mobile - 2ème MA optionnelle")

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="Change Color Based On Direction 2nd MA ?")

warn = input(false, title="***Vous pouvez activer le paramètre Show Dots ci-dessous sans tracer la 2ème MA pour voir les croisements***")

warn2 = input(false, title="***Si vous utilisez la fonction de croix sans tracer la 2ème MA, assurez-vous que les paramètres de la 2ème MA sont correctement définis***")

sd = input(false, title="Afficher les points sur le croisement des deux MA's")

res = useCurrentRes ? period : resCustom

/définition de la ma de la coque

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

//Définition du TEMPUS

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ème Ma - définition de hullma

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

//2ème définition de 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 = security(tickerid, res, out)

out2 = security(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 et out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2)

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

 

Capture d'écran de l'indicateur :

Dossiers :
pepqyie.png  84 kb
 

Un exemple d'accès partagé à un fichier à partir de plusieurs instances de code ?

 
apprentice coder:
Un exemple d'accès partagé à un fichier à partir de plusieurs instances de code ?

Vous pouvez voir un exemple ici : https://www.mql5.com/en/forum/175881/page5

 
mladen:
Vous pouvez voir un exemple ici : https://www.mql5.com/en/forum/175881/page5

C'est fait.

 

Puis-je savoir s'il existe une application utilisant l'indicateur "HalfTrend-1.02" ?

J'ai besoin d'un exemple de code.

J'ai essayé d'utiliser cet indicateur pour le filtrage, mais j'ai vu qu'il manque beaucoup de commerce.

Je ne sais pas ce qui ne va pas avec ce ....

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:
Puis-je savoir s'il existe une application utilisant l'indicateur "HalfTrend-1.02" ?

J'ai besoin d'un exemple de code.

J'ai essayé d'utiliser cet indice pour le filtrage, mais j'ai vu qu'il manque de nombreux échanges.

Je ne sais pas ce qui ne va pas avec ce ....

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;

Bonjour Stevenpun,

Deux choses que vous pouvez essayer immédiatement :

1) Ajoutez l'impression et les commentaires pour voir TOUTES vos valeurs... et assurez-vous que vous obtenez toutes les valeurs de vos indicateurs correctement...

Les impressions vont aller dans le LOG... et les commentaires vont s'afficher à l'écran pour que vous puissiez les voir immédiatement.

2) Minimisez votre "Trade Logic"...et testez CHAQUE signal par lui-même... Puis s'ils fonctionnent...commencez à les combiner ensemble.

S'ils ne fonctionnent pas... alors vous avez trouvé votre problème.

Moins vous avez de "ifs imbriqués", plus il sera facile de localiser vos problèmes sans faire de transactions...

De plus, les "si" multiples filtrent la plupart des transactions... donc, même si tout fonctionne bien, il se peut qu'il n'y ait pas beaucoup de transactions...

J'espère que cela vous aidera,

Robert

 

Merci Mladen ,

mladen:
.................. il n'y aura qu'une seule alerte par barre

C'est exactement ce que je veux qu'il fasse, voir l'image que je joins, le prix saute en haut et en bas avec la ligne tous les quelques tick, ce qui provoque l'alerte indi chaque fois qu'il passe ou touche la ligne .......... ce que je veux qu'il fasse est si la barre a déjà une alerte, attendre la nouvelle barre pour donner l'alerte à nouveau si elle passe la ligne. Mais le code que j'ai ajouté fait que l'indi ne fonctionne pas du tout (pas d'alerte). Pourriez-vous regarder à nouveau ce que j'ai fait de mal ? etun grand merci !

Raison: