![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Aide sur les attentes mathématiques, s'il vous plaît
Bonjour
Il semble que je me sois un peu trompé.
J'essaie d'utiliser une formule d'espérance dans mon EA. J'ai la formule 1-avgwin/avgloss*system accuracy+1 et cela fonctionne bien, mais je voudrais savoir comment calculer et afficher la différence entre l'ordre et le StopLoss, par ex.
OP_SELLSTOP 1.63406
StopLoss 1.63603
1.63406 - 1.63603 = -0.00197 Je pense que cela doit être un nombre positif.
Une espérance de 1.45
Donc pour calculer le TakeProfit -0.00197 * 1.45 = -0.00285
Placez le TP à OP_SELLSTOP 1.63406 - 1.63121
et vice versa pour la position longue
Tout cela fait partie de ce fil de discussion https://www.mql5.com/en/forum/178980 et si vous jetez un coup d'œil à la feuille Excel, vous verrez que j'y suis presque.
Toute aide serait la bienvenue.
Salutations Beno
Bonjour
J'ai l'impression de m'être un peu trompé.
J'essaie d'utiliser une formule d'espérance dans mon EA. J'ai la formule 1-avgwin/avgloss*system accuracy+1 et cela fonctionne bien, mais je voudrais savoir comment calculer et afficher la différence entre l'ordre et le StopLoss, par ex.
OP_SELLSTOP 1.63406
StopLoss 1.63603
1.63406 - 1.63603 = -0.00197 Je pense que cela doit être un nombre positif.
Une espérance de 1.45
Donc pour calculer le TakeProfit -0.00197 * 1.45 = -0.00285
Placez le TP à OP_SELLSTOP 1.63406 - 1.63121
et vice versa pour la position longue
Tout cela fait partie de ce fil de discussion https://www.mql5.com/en/forum/178980 et si vous jetez un coup d'œil à la feuille Excel, vous verrez que j'y suis presque.
Toute aide serait la bienvenue.
Santé BenoLa méthode la plus simple est de ne pas penser à cela et d'utiliser :
double MathAbs(double valeur)
MathAbs - Documentation MQL4
Salutations
Bonjour CRN
Merci pour votre réponse, c'est ce que j'ai essayé.
Je pense que c'est correct mais il n'y a que des impressions PipSL 15769.68328362
1 2011.01.04 00:00 vendre stop 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
2 2011.01.07 08:20 vendre 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
3 2011.01.07 08:20 modifier 1 0.01 1.54279 1.57712 0.00000 0.00 10000.00
4 2011.01.11 23:40 clôture au stop 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34
et je demande la différence réelle entre la vente et le SL
Quelqu'un peut m'aider.
Bonjour et joyeux Noël à tous.
Tout d'abord, je suis un nouveau venu sur ce forum. J'ai un problème avec l'EA et quelqu'un peut-il le résoudre pour moi ? Le problème est de savoir comment configurer cet EA pour le trading réel et l'EA est juste de couleur grise sur mon trade en direct.
Voici la pièce jointe :
spielershedge_library.mqh
spielershedge_pipstar.mq4
spielershedge_ea_v2.8.1.ex4
spielershedge_divergence_v5.1.ex4
-Bien qu'il s'agisse d'un ancien logiciel, je pense que nous pouvons partager et prendre quelque chose qui sera bénéfique pour nous tous.
-Je viens de trouver ceci dans Hedge trading spieler system derived from futures spread trading - Page 193 @ Forex Factory ( SpielersHedge PipStar.mq4 ) et le reste dans Hedge trading spieler system derived from futures spread trading - Page 87 @ Forex Factory.
-Désolé pour mon mauvais anglais.
P/S : Je suis très apprécié pour les leçons, les guides, les commentaires et les critiques de vous tous pour mon amélioration. Je crois que plus nous donnons notre connaissance, plus nous gagnons la connaissance.
Bonjour CRN
Merci pour la réponse, c'est ce que j'ai essayé.
Je pense que c'est juste, mais il ne fait qu'imprimer PipSL 15769.68328362
1 2011.01.04 00:00 vendre stop 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
2 2011.01.07 08:20 vendre 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
3 07.01.2011 08:20 modifier 1 0.01 1.54279 1.57712 0.00000 0.00 10000.00
4 2011.01.11 23:40 fermer au stop 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34
et je demande la différence réelle entre la vente et le SL.Si vous avez besoin d'utiliser iClose(0,0,0)-OrderStopLoss().
mais sélectionnez d'abord le bon ordre par OrderSelect ;
Salutations
Filtre temporel avec CloseAll - Aide, s'il vous plaît
Bonjour
J'ai un filtre temporel qui fonctionne sur l'EA mais j'ai essayé d'y attacher un closeall pour que si le temps est égal au temps de fermeture, le closeall ouvre des positions.
extern int gmtshift=1; // gmt offset of the broker
extern bool generalfilter=false; // enable time filter
extern int starthour=7; // start hour to trade after this hour
extern int startminutes=0; // minutes of the start hour
extern int endhour=21; // stop to trade after this hour
extern int endminutes=0; // minutes of the start hour
extern bool tradesunday=true; // trade on sunday
extern bool fridayfilter=false; // enable special time filter on friday
extern int fridayhour=21; // stop to trade after this hour
extern int fridayminutes=0; // minutes of the friday hour[/CODE]
[CODE]void start() {
if(generalfilter){
nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;
if(nstarthour<10)istarthour="0"+nstarthour;
if(nstarthour>9)istarthour=nstarthour;
if(startminutes<10)istartminutes="0"+startminutes;
if(startminutes>9)istartminutes=startminutes;
tstart=StrToTime(istarthour+":"+istartminutes);
nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;
if(endhour<10)iendhour="0"+nendhour;
if(endhour>9)iendhour=nendhour;
if(endminutes<10)iendminutes="0"+endminutes;
if(endminutes>9)iendminutes=endminutes;
tend=StrToTime(iendhour+":"+iendminutes);
}
if(fridayfilter){
nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;
if(nfridayhour<10)ifridayhour="0"+nfridayhour;
if(nfridayhour>9)ifridayhour=nfridayhour;
if(fridayminutes<10)ifridayminutes="0"+fridayminutes;
if(fridayminutes>9)ifridayminutes=fridayminutes;
tfriday=StrToTime(ifridayhour+":"+ifridayminutes);
}
if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))
|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);
if (TimeCurrent() >= tend) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==TradeSymbol) {
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);
}
}
}
}
}aidez-moi s'il vous plaît
extern int BuyStopTakeProfit=10;
extern int BuyStopSL=1000;
comment coder
si BuyStopTakeProfit Hit TakeProfit, Supprimer tous les ordres en attente
s'il vous plaît, quelqu'un peut m'aider![](https://c.mql5.com/forextsd/smiles/biggrin.png)
Aide !!!! SVP !!!! fonction iCustom
Aide,
J'ai tout essayé pour que mon C_EA_rev6.mq4 appelle le tampon quelconque de l'indicateur personnalisé VSATEXTSIGNALS.mq4. J'ai utilisé la fonction iCustom mais elle renvoie toujours 2147483647 qui est un code d'erreur. L'indicateur personnalisé place des signaux de texte sur le graphique en se basant sur des techniques d'analyse de propagation de volume. L'indicateur personnalisé fonctionne bien lorsque je l'attache à un graphique. J'ai passé d'innombrables heures sur ce problème et j'ai essayé toutes les combinaisons que je connais. Toute aide serait grandement appréciée. J'ai également une question : peut-on utiliser la fonction iCustom sur un indicateur personnalisé qui appelle un script ou un fichier .dll ?
Voir les pièces jointes pour le code de l'indicateur et de l'EA.
Merci,
cmfxtrader
Aide,
J'ai tout essayé pour que mon C_EA_rev6.mq4 appelle le tampon quelconque de l'indicateur personnalisé VSATEXTSIGNALS.mq4. J'ai utilisé la fonction iCustom mais elle renvoie toujours 2147483647, ce qui est un code d'erreur. L'indicateur personnalisé place des signaux de texte sur le graphique en se basant sur des techniques d'analyse de propagation de volume. L'indicateur personnalisé fonctionne bien lorsque je l'attache à un graphique. J'ai passé d'innombrables heures sur ce problème et j'ai essayé toutes les combinaisons que je connais. Toute aide serait grandement appréciée. J'ai également une question : peut-on utiliser la fonction iCustom sur un indicateur personnalisé qui appelle un script ou un fichier .dll ?
Voir les pièces jointes pour le code de l'indicateur et de l'EA.
Merci,
cmfxtraderHey,
Le problème est que pendant que vous essayez de lire le tampon de l'indicateur, il sort des messages texte, qui ne sont pas des tampons. C'est pourquoi vous obtenez la valeur 2147483647 qui est EMPTY_VALUE et non une erreur.
Quoi qu'il en soit, je suppose que vous souhaitez automatiser les signaux de cet indicateur. Il y a une solution simple pour cela. L'indicateur est déclaré avoir 7 buffers (#property indicator_buffers 7) mais il n'en utilise que 5. Les indicateurs peuvent utiliser un maximum de 8 buffers. Cela signifie que vous pouvez déclarer un autre tampon supplémentaire juste pour vos calculs et le remplir de messages d'identification. Vous trouverez les numéros des messages dans la fonction TextOutput. Il suffit d'ajouter des numéros à votre tampon en fonction du message affiché. Par exemple, si le texte est : "UPTHRUST / Weakness_" alors ajoutez 1 à votre tampon, si le message est PSEUDO UPTHRUST / Weakness_ alors ajoutez 4 et ainsi de suite. L'index du tampon sera le même que la valeur de la variable "i".
Pour votre deuxième question : vous pouvez toujours utiliser la fonction iCustom pour un indicateur (pas un script) et lire les valeurs si elles remplissent les tampons déclarés dans l'indicateur. Par exemple, si l'indicateur dessine des lignes, vous pouvez lire les valeurs des lignes, car pour dessiner quelque chose (sauf les étiquettes), l'indicateur doit remplir des tampons. Si l'indicateur doit créer des objets graphiques (comme celui que vous avez joint) alors vous devrez : a) lire les valeurs des objets graphiques, ou b) recoder l'indicateur (comme je l'ai suggéré ci-dessus). Cela n'a pas d'importance si l'indicateur utilise une DLL ou non - il a juste besoin de remplir le tampon correctement pour lire ses valeurs depuis la fonction iCustom.
Bonne journée
J'ai un filtre de temps qui fonctionne sur l'EA mais j'ai essayé d'y attacher un closeall pour que si le temps est égal au temps de fermeture, alors le closeall ouvre des positions.
extern int gmtshift=1; // gmt offset of the broker
extern bool generalfilter=false; // enable time filter
extern int starthour=7; // start hour to trade after this hour
extern int startminutes=0; // minutes of the start hour
extern int endhour=21; // stop to trade after this hour
extern int endminutes=0; // minutes of the start hour
extern bool tradesunday=true; // trade on sunday
extern bool fridayfilter=false; // enable special time filter on friday
extern int fridayhour=21; // stop to trade after this hour
extern int fridayminutes=0; // minutes of the friday hour[/CODE]
[CODE]void start() {
if(generalfilter){
nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;
if(nstarthour<10)istarthour="0"+nstarthour;
if(nstarthour>9)istarthour=nstarthour;
if(startminutes<10)istartminutes="0"+startminutes;
if(startminutes>9)istartminutes=startminutes;
tstart=StrToTime(istarthour+":"+istartminutes);
nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;
if(endhour<10)iendhour="0"+nendhour;
if(endhour>9)iendhour=nendhour;
if(endminutes<10)iendminutes="0"+endminutes;
if(endminutes>9)iendminutes=endminutes;
tend=StrToTime(iendhour+":"+iendminutes);
}
if(fridayfilter){
nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;
if(nfridayhour<10)ifridayhour="0"+nfridayhour;
if(nfridayhour>9)ifridayhour=nfridayhour;
if(fridayminutes<10)ifridayminutes="0"+fridayminutes;
if(fridayminutes>9)ifridayminutes=fridayminutes;
tfriday=StrToTime(ifridayhour+":"+ifridayminutes);
}
if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))
|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);
if (TimeCurrent() >= tend) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==TradeSymbol) {
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);
}
}
}
}
}Essayez de vérifier cette partie :
if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))
|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0) ;
l'autre partie du code pourrait être plus simple, mais elle devrait fonctionner.
Cependant, si vous quittez le script avant de fermer toutes les parties, cela ne fonctionnera pas, et il semble que le script le fasse.
Regardez cette partie par exemple :
(fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday) return(0) ;
En anglais, cela signifie : si c'est vendredi, et que le filtre friday est activé, et que la marque de temps a été dépassée (par exemple, l'heure de fin est 18.00 et il est 18.01), alors return(0).
Cela devrait être : si c'est vendredi, et que le filtre du vendredi est ON, et que le TimeMark a été dépassé CLOSE ALL et (ex. l'heure de fin est 18.00 et c'est 18.01) alors return(0).