Croix universelle MA EA - page 64

 

Bonjour, quelqu'un pourrait-il ajouter un code de seuil de rentabilité à cette Ea.

Le prix se déplace de x pips, le stop se déplace jusqu'au seuil de rentabilité, plus x pips. J'ai essayé mais j'obtiens toujours plusieurs erreurs.https://www.mql5.com/en/forum

Merci d'avance pour toute aide.

Dossiers :
 

Est-ce que c'est ce que vous recherchez ?

Mjack59_59@yahoo.com:
Bonjour, quelqu'un pourrait-il ajouter un code breakeven à cette Ea ?

Le prix se déplace de x pips. Déplacez le stop pour atteindre le seuil de rentabilité Plus x pips. J'ai essayé mais j'obtiens de multiples erreurs.https://www.mql5.com/en/forum

Merci d'avance pour toute aide.

ce n'est pas exactement ce que vous voulez, je suppose, puisque je ne comprends pas bien ce que vous voulez dire... mais commencez avec ceci et faites-moi savoir...

sn

Dossiers :
 

Cela n'a pas fonctionné pour le patron du courtier à 5 chiffres ?

firedave:
J'essaie de faire un EA pour n'importe quelle stratégie de croisement de moyennes mobiles, j'essaie de le rendre universel. Donc, s'il vous plaît laissez-moi savoir si vous avez des suggestions à ajouter à cet EA.

Paramètres communs :

-----------------

StopLoss (par défaut 100)

Définissez votre Stop Loss. Utilisez 0 (zéro) si vous n'aimez pas utiliser le Stop Loss (non recommandé).

TakeProfit (par défaut 200)

Définissez votre Take Profit. Utilisez 0 (zéro) si vous souhaitez utiliser un objectif ouvert.

Réglage du Trailing Stop :

----------------------

ver.6 TrailingStopType (par défaut 1)

Définit le type de trailing stop. 1:commencera le trailing si le profit en pips est supérieur / identique au TrailingStop. 2:commencera le trailing dès que la transaction sera profitable. (nous ajouterons d'autres types de trailing stop si nécessaire, la dernière suggestion étant SafeZone trailing stop post #99 https://www.mql5.com/en/forum/general )

TrailingStop (par défaut 40)

Définit le Trailing Stop. Utilisez 0 (zéro) si vous n'utilisez pas la fonction de trailing stop.

Réglage de la moyenne mobile :

------------------------

FastMAPeriod (par défaut 10)

Période de la moyenne mobile rapide.

FastMAType (par défaut EMA / 1)

Type de moyenne mobile rapide 0:SMA 1:EMA 2:SMMA 3:LWMA

FastMAPrice (par défaut Close / 0)

Prix appliqué de la moyenne mobile rapide 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 FastMAshift (par défaut 0)

Décalage de la moyenne mobile rapide

SlowMAPeriod (par défaut 80)

Période de la moyenne mobile lente.

SlowMAType (par défaut EMA / 1)

Type de moyenne mobile lente 0:SMA 1:EMA 2:SMMA 3:LWMA

SlowMAPrice (par défaut Close / 0)

Prix appliqué de la moyenne mobile lente 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 FastMAshift (par défaut 0)

Décalage de la moyenne mobile lente

Distance minimale de croisement :

------------------------

ver.2 MinCrossDistance (par défaut 0)

Définit la distance minimale entre FastMA et SlowMA pour être considéré comme un croisement valide. Utilisez 0 (zéro) pour désactiver ce filtre.

ver.7 MaxLookUp (par défaut 1)

Définit le nombre de barres après le cross pour continuer à vérifier la condition d'entrée par rapport à la distance minimale entre FastMA et SlowMA. Nécessite MinCrosDistance > 0 pour activer cette fonction. Utilisez 0 (zéro) pour désactiver cette fonction.

Exit Setting :

-------------

StopAndReverse (par défaut true)

Si cette option est réglée sur TRUE, elle permet de sortir d'une transaction et d'inverser la position lorsque le signal change.

PureSAR (par défaut false)

S'il est réglé sur TRUE, il n'y aura pas de Stop Loss - Take Profit - et de Trailing Stop. Ce paramètre est toujours en jeu.

ver.7.2 ExitOnCross (par défaut false)

Si cette option est réglée sur TRUE, la transaction sera abandonnée s'il y a un croisement opposé sans tenir compte d'aucun filtre supplémentaire. Ainsi, la sortie est purement basée sur le croisement de la moyenne mobile.

Réglage de la troisième MA :

------------------

ver.5 UseThirdMA (par défaut false)

S'il est réglé sur TRUE (et UseCounterTrend = FALSE), le trade se fera uniquement selon la direction de la ThirdMA, au-dessus pour BUY et en dessous pour SELL.

ver.5 UseCounterTrend (par défaut false)

Si la valeur est TRUE, la transaction sera maintenue même si la direction de la ThirdMA est contraire, mais avec des StopLoss et TakeProfit différents. UseThirdMA = TRUE est nécessaire pour activer cette fonction.

ver.7 OnlyCounterTrend (par défaut false)

S'il est réglé sur TRUE, l'EA ne négociera que des transactions à contre-tendance, c'est-à-dire qu'il achètera si le croisement est inférieur à la ThirdMA et vendra si le croisement est supérieur à la ThirdMA. Il faut que UseCounterTrend = TRUE pour activer cette fonction.

ver.5 ThirdMAPeriod (defaul 100)

Troisième période de moyenne mobile.

ver.5 ThirdMAType (par défaut EMA / 1)

Type de troisième moyenne mobile 0:SMA 1:EMA 2:SMMA 3:LWMA

ver.5 ThirdMAPrice (par défaut Close / 0)

Troisième moyenne mobile appliquée au prix 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 ThridMAshift (par défaut 0)

Décalage de la troisième moyenne mobile

ver.5 CTStopLoss (par défaut 0)

Définissez votre Stop Loss pour une transaction CounterTrend. Utilisez 0 (zéro) si vous n'aimez pas utiliser le Stop Loss (non recommandé).

ver.5 CTTakeProfit (par défaut 0)

Définit votre Take Profit pour la transaction CounterTrend. Utilisez 0 (zéro) si vous souhaitez utiliser un objectif ouvert.

Réglage du filtre Pivot :

-------------------

ver.8.0 Use.Pivot.Filter (par défaut false)

Définissez à true si vous souhaitez filtrer le trade, seulement BUY si le croisement de Slow et Fast MA se produit entre S1 et S2 et seulement SELL si le croisement de Slow et Fast MA se produit entre R1 et R2.

Réglage des ordres :

--------------

ReverseCondition (par défaut false)

Mettre TRUE pour inverser la condition d'entrée.

ver.3 ConfirmedOnEntry (par défaut true)

Si cette option est réglée sur TRUE, l'ordre entrera/sortira sur la prochaine barre après la confirmation du croisement. S'il a la valeur FALSE, il entrera/sortira du marché dès qu'il y aura un croisement.

ver.4 OneEntryPerBar (par défaut true)

Si la valeur est TRUE, la transaction ne sera effectuée qu'une seule fois sur une barre. S'il a la valeur FALSE, il négociera plus d'une fois sur une barre si la condition d'entrée est toujours valide, mais toujours une seule transaction à la fois.

NumberOfTries (par défaut 5)

Nombre de tentatives si l'ordre est rejeté par le système.

Slippage (par défaut 5)

Réglage du slippage.

MagicNumber (par défaut 1234)

Permet de générer le numéro magique. Changez ce numéro UNIQUEMENT si vous souhaitez exécuter l'EA sur la même paire et le même cadre temporel mais avec des paramètres différents.

Réglage de l'ouverture multiple des positions :

-----------------------------

ver.5 MaxOpenTrade (par défaut 2)

Nombre maximum de trades ouverts en une seule fois. Ce paramètre est utilisé lorsque StopAndReverse / PureSAR = FALSE afin que l'EA ne ferme pas l'ordre ouvert lorsqu'il y a un signal contraire, mais plutôt qu'il ouvre un nouveau trade. Définissez le nombre de trades ouverts autorisés. Si StopAndReverse / PureSAR = TRUE, ce paramètre sera toujours = 1, ce qui signifie une seule transaction à la fois.

ver.6 MinPriceDistance (par défaut 5)

Si le nombre de trades ouverts est activé (en fixant MaxOpenOrder>1 et OneEntryPerBar=FALSE), ce nombre déterminera la distance minimale entre chaque trade dans la même direction.

Réglage du filtre temporel :

-------------------

UseHourTrade (par défaut false)

Si cette option est réglée sur TRUE, l'EA ne sera actif qu'à certaines heures.

StartHour (par défaut 10)

Heure à laquelle l'EA commence à être actif (à utiliser avec UseHourTrade = TRUE).

EndHour (par défaut 11)

Heure à laquelle l'EA s'arrête (à utiliser avec UseHourTrade = TRUE).

Paramètres de gestion des lots et de l'argent :

------------------------------------

Lots (par défaut 1)

Nombre de lot par transaction.

MM (par défaut false)

Si ce paramètre est réglé sur TRUE, il utilisera la gestion monétaire intégrée.

AccountIsMicro (par défaut false)

Si vous utilisez un compte Micro, mettez ce paramètre sur TRUE.

Risk (par défaut 10)

A utiliser avec MM = TRUE pour définir le risque par transaction.

Réglage des alertes croisées :

--------------------

ver.5 EnableAlert (par défaut true)

Sonnera une alerte quand il y a un croisement de moyenne mobile, un croisement HAUT ou un croisement BAS.

ver.5 SoundFilename (par défaut "alert.wav")

Le nom de fichier pour l'alerte.

Réglage du BackTest :

------------------

PrintControl (par défaut true)

Imprimer un commentaire sur le backtesting.

Show_Settings (par défaut true)

Affiche les paramètres sur le graphique.

Faites-moi savoir si vous avez encore des problèmes avec les paramètres. Merci à codersguru et pengie pour plusieurs codes partiels. J'espère que cela vous aidera.

Journal :

-----------

version.6:

- correction du bug ConfirmedOnEntry.

- ajout d'un trailing stop immédiat.

- ajout d'une MinPriceDistance pour les trades ouverts multiples.

version.7:

- ajout de la fonction MaxLookUp pour continuer à vérifier l'entrée après une certaine barre du croisement concernant la MinCrossDistance.

- ajout de la fonction OnlyCounterTrend si vous utilisez le filtre ThirdMA.

version.7.1:

- correction du bug MinCrossDistance.

version.7.2:

- correction du bug MinCrossDistance pour ConfirmedOnEntry = FALSE.

- ajout du paramètre MA shift.

- ajout de la fonction ExitOnCross.

version.7.3:

- correction de l'affichage à l'écran COMMENT.

version.8.0:

- ajout du filtre Pivot.

version.8.1:

- révision de certains codes à cause des bogues de Build 206.
 

stoploss / takeprofitinvalide

Salut Serpentsnoir,

J'ai testé cette version sur 5 chiffres, avec

StopLoss=30

TakeProfit=40

et l'erreur générée comme indiqué ici ;

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5 : sn Debug on sell : Bid,Slippage,aStopLoss,aTakeProfit 0.88554/30.00000/0.88466/0.89066

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5 : sn Debug on sell : ticket,err,count -1/130/5

Pourriez-vous m'apprendre comment résoudre le problème des 130 est des stops invalides (TP, SL) ?

Merci

Takingpip

 

stop loss invalide, erreur 130

Les niveaux StopLoss et TakeProfit ne peuvent pas être trop proches du marché. La distance minimale des niveaux de stop en points peut être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. Dans le cas de niveaux de stop erronés ou non normalisés, l'erreur 130 (ERR_INVALID_STOPS) sera générée.

Le texte ci-dessus est tiré de la documentation de Metaquotes.

L'erreur 130 se produit lorsque vous fixez le stop loss trop près du prix Bid/Ask. Cela signifie généralement que vous devez augmenter le seuil de déclenchement pour corriger le problème ou, éventuellement, que vous ne devez pas modifier l'ordre pour définir un seuil de déclenchement, mais plutôt le fermer car il est très proche du seuil de déclenchement actuel de l'ordre.

Notez que MarketInfo avec Mode_Stoplevel peut retourner un zéro, du moins c'est le cas avec mon courtier FXCM, donc vous devrez peut-être le régler manuellement.

 

stop loss invalide, erreur 130

Merci pour l'explication Tzuman.

Par exemple, même si j'ai défini le

SL = 200

TP = 150

il génère toujours l'erreur 130 et mon courtier n'a besoin que d'un minimum de 10pip pour le stoploss ou le take profit.

Je suis nouveau dans la programmation MT, j'apprends encore. Pourriez-vous m'expliquer où insérer le paramètre de contrôle MODE_STOPLEVEL dans le code ?

Merci

 
serpentsnoir:
Ce n'est pas exactement ce que vous voulez, je suppose, puisque je ne comprends pas bien ce que vous voulez dire... mais commencez avec ceci et tenez-moi au courant... sn...

Bonjour, j'ai téléchargé votre version avec la fonctionnalité BE mais lors de la compilation j'ai eu cette erreur : "'UseBreakEven' - expression de comparaison attendue".

S'il vous plaît, pouvez-vous le vérifier?

Merci

 
FxCba:
Bonjour, j'ai téléchargé votre version avec la fonction BE mais lors de la compilation j'ai eu cette erreur : "'UseBreakEven' - expression de comparaison attendue".

S'il vous plaît, pouvez-vous le vérifier ?

Merci pour votre aide

Je préfère utiliser des entiers pour les drapeaux plutôt que des booléens. Cela n'affecte pas le fonctionnement de l'EA. Changez simplement le type en booléen si vous voulez que l'erreur disparaisse.

sn

 
serpentsnoir:
Je préfère utiliser des entiers pour les drapeaux plutôt que des booléens. Cela n'affecte pas le fonctionnement de l'EA. Changez simplement le type en booléen si vous voulez que l'erreur disparaisse. sn

Voulez-vous ajouter une ligne comme celle-ci ? " bool UseBreakEven = false;"

(désolé pour la question mais je ne comprends pas le code Metatrader)

Je l'ai fait de cette façon et je n'ai pas eu d'erreur.

 

Ajout d'une limite de profit quotidienne à l'EA.

Bonjour à tous,

J'aimerais savoir si quelqu'un pourrait ajouter la fonctionnalité ci-dessous, à l'EA croisé UMA ci-joint.

extern string DayProfitHelp = "--Entrez soit DayProfitLimit en USD soit DayProfitLimitPct en pourcentage du solde du dernier jour. Réglez les deux à 0 pour les désactiver" ;

extern double DayProfitLimit = 0.0 ;

extern double DayProfitLimitPct = 0.0 ;

extern int DayProfitResetHour = 0 ;

extern bool DayProfitGlobal = FALSE ;

J'ai trouvé cette fonction très pratique sur un autre EA, et fondamentalement ce qu'elle fait est d'arrêter l'EA ouvrant des ordres si un "x%" a été atteint avant le temps d'arrêt.

De plus, les fonctions de suivi ne fonctionnent pas correctement sur l'UMAcrossEA. Si quelqu'un pouvait m'aider, je l'apprécierais.

Merci beaucoup.

===============================

extern int SL_pips = 290 ;

extern int MA_distance_pips = 20 ;

extern int MA_period = 16 ;

extern int TP_pips = 20 ;

extern int TradeVolume = 1 ;

extern string HourTradeHelp = "--Set if EA will work only on a specific period of the day. ForceClose fermera tous les ordres ouverts" ;

extern bool UseHourTrade = FALSE ;

extern int StartHourTrade = 21 ;

extern int EndHourTrade = 3 ;

extern bool ForceClose = FALSE ;

extern string MinToKeepTradeHelp = "--Fermeture de l'ordre lorsque sa durée de vie est supérieure à MinutesToKeepTrade. Mettez 0 pour désactiver." ;

extern int MinutesToKeepTrade = 0 ;

extern string DayProfitHelp = "--Entrez soit DayProfitLimit en USD soit DayProfitLimitPct en pourcentage du solde du dernier jour. Réglez les deux sur 0 pour les désactiver." ;

extern double DayProfitLimit = 0.0 ;

extern double DayProfitLimitPct = 0.0 ;

extern int DayProfitResetHour = 0 ;

extern bool DayProfitGlobal = FALSE ;

extern int ModifyIntervalMin = 1 ;

extern int MagicNumber = 2265 ;

extern bool Hedge=false ;

int g_ord_total_172 ;

int g_ticket_176 ;

int g_ticket_180 ;

int g_minute_184 ;

bool g_bool_188 ;

bool gi_192 ;

bool gi_196 ;

bool gi_200 ;

bool gi_204 ;

double g_prix_208 ;

double gd_216 ;

double g_price_224 ;

double gd_232 ;

double gd_240 ;

double gd_248 ;

double gd_256 ;

double gd_264 ;

double gd_272 ;

double gd_280 ;

double g_ima_288 ;

double gd_296 ;

double gd_304 ;

double gd_312 ;

double g_lots_320 ;

void init() {

gd_240 = MarketInfo(Symbol(), MODE_STOPLEVEL) ;

gd_256 = gd_240 * Point ;

gd_248 = (gd_240 + 1,0) * Point ;

gd_216 = SL_pips * Point ;

gd_232 = Distance MA_pips * Point ;

gd_280 = TP_pips * Point ;

g_minute_184 = Minute() ;

}

int start() {

double ld_8 ;

double ld_16 ;

si (AccountBalance() - gd_304 !.= 0.0) ld_8 = 100.0 * (gd_304 / (AccountBalance() - gd_304)) ;

sinon ld_8 = 0 ;

si (AccountBalance() - gd_304 !.= 0.0) ld_16 = 100.0 * ((AccountBalance() - gd_304 + gd_312) / (AccountBalance() - gd_304)) - 100.0 ;

sinon ld_16 = 0 ;

gd_296 = Ask - Bid ;

gd_304 = GetDailyProfit() ;

g_lots_320 = Lots() ;

si (DayProfitLimitPct > 0,0) gd_312 = (AccountBalance() - gd_304) * (DayProfitLimitPct / 100,0) ;

sinon gd_312 = DayProfitLimit ;

g_bool_188 = !(UseHourTrade && !IsTradeTime(StartHourTrade, EndHourTrade)) ;

if (g_bool_188 && GlobalVariableGet("gISEAStop") == 1.0) g_bool_188 = FALSE ;

string ls_0 = "Symbole : " + Symbole()

+ "\nSpread : " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD) / 10.0, 1) + " pips" + "\nDaily Pips

+ "\nP/L quotidien : $" + DoubleToStr(gd_304, 2) + " (" + DoubleToStr(ld_8, 2) + " %)"

+ "\nLimit P/L : $" + DoubleToStr(gd_312, 2) + " (" + DoubleToStr(ld_16, 2) + "%)"

+ "\nCurrent P/L : $" + DoubleToStr(AccountProfit(), 2)

+ "\nNStop Level : " + DoubleToStr(gd_240 / 10.0, 1) + " pips "

+ "\NVolume : " + DoubleToStr(g_lots_320, 1) + " ($" + DoubleToStr(g_lots_320 * MarketInfo(Symbol(), MODE_LOTSIZE), 2) + ")" ;

if (gd_312 > 0.0 && gd_304 + AccountProfit() >= gd_312) {

Commentaire(ls_0

+ "\n\nAtteint le profit quotidien... A demain... Bonne nuit :-)") ;

RemoveAllOrders(1) ;

retour (0) ;

}

g_ord_total_172 = OrdersTotal() ;

gi_192 = FAUX ;

gi_196 = FAUX ;

gi_200 = FAUX ;

gi_204 = FAUX ;

for (int l_ord_total_24 = g_ord_total_172 ; l_ord_total_24 >= 0 ; l_ord_total_24--) {

if (OrderSelect(l_ord_total_24, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

si (OrderType() == OP_BUY) {

gi_200 = VRAI ;

Close_B(OrderTicket(), OrderLots()) ;

}

if (OrderType() == OP_SELL) {

gi_204 = VRAI ;

Close_S(OrderTicket(), OrderLots()) ;

}

if (OrderType() == OP_BUYLIMIT) {

gd_264 = NormalizeDouble(OrderOpenPrice(), Digits) ;

g_ticket_176 = OrderTicket() ;

gi_192 = VRAI ;

}

if (OrderType() == OP_SELLLIMIT) {

gd_272 = NormalizeDouble(OrderOpenPrice(), Digits) ;

g_ticket_180 = OrderTicket() ;

gi_196 = VRAI ;

}

}

}

if (g_bool_188) {

g_ima_288 = iMA(NULL, 0, MA_period, 0, MODE_LWMA, PRICE_TYPICAL, 0) ;

Modifier_ordre() ;

Ouvrir_ordre() ;

} else {

Dossiers :
Raison: