string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); } : datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift(NULL,0, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. int iHi = iHighest(NULL,0, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. Print( "High since order opened on ", TimeToStr(OOT)," is ", PriceToStr(HH) );
Voici quelques erreurs pour le code ci-dessus.
'(' - définition de fonction inattendue D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (343, 18)
cette erreur pour la chaîne PriceToStr(double p)
pour cette erreur je ne sais pas comment la corriger
'iBarCurrent' - variable non définie D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (348, 30)
cette erreur parce que vous définissez #define iBarCURRENT puis vous le mettez comme iBarCurrent
Je vais la corriger.
2 erreur(s),
Mettez cette ligne à la toute fin de votre code, en dehors de la fonction start ....
string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }
et commencez à lire ceci si vous voulez apprendre à coder : https://book.mql4.com//
C'est clair les gars (RaptorUK et WHRoeder),
Merci.
datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. int iHi = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. int iLi = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT); double LL = Low[iLi]; // Lowest low.
J'ai une autre question :
Si j'ai 2 ordres ouverts, un pour l'achat et l'autre pour la vente :
comment puis-je laisser mon EA comprendre et prendre la iOOT = iBarShift("EURUSD",PERIOD_H1, OOT) ; // Barre de l'ouverture. Pour la barre où j'ai obtenu une position d'achat et calculer le plus haut à partir de ce point.
Et
Prenez le iOOT = iBarShift("EURUSD",PERIOD_H1, OOT) ; // Barre de l'ouverture. Pour la barre où j'ai obtenu une position de vente et calculer le plus bas à partir de ce point.
Merci beaucoup
for(pos = OrdersTotal()-1; pos >= 0 ; pos--) if ( OrderSelect(pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == magic.number // my magic number && OrderSymbol() == Symbol() // and my pair. ){ datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. if (OrderType == OP_BUY){ int iHi = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. } else{ int iLi = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT); double LL = Low[iLi]; // Lowest low. } }
Pour obtenir OOT, vous devez avoir déjà effectué un orderSelect.
Merci à tous.
J'ai également une autre question :
Comment puis-je faire ces conditions : if (last OrderClosePrice() for sell > before the last OrderClosePrice for sell ) && ( before the last OrderClosePrice for sell >= bid)
fermer la position
si quelque chose comme ceci est correct
if ( (OrderType == OP_SELL)&& OrderSelect(pos+1, SELECT_BY_POS,MODE_TRADES ) ) { if( pos>pos+1 && pos+1>MarketInfo("EURUSD",MODE_BID); // close the position
Juste,
Je veux savoir comment je peux obtenir : l'ordre avant le dernier ordre (ouverture ou fermeture) le prix () pour (achat ou vente) pour les ajouter pour certaines claculations.
Merci beaucoup.
Je veux savoir comment je peux obtenir : l'ordre avant le dernier ordre (ouverture ou fermeture) le prix() pour (achat ou vente) pour les ajouter pour certaines claculations.
for(pos = OrdersTotal()-1; pos >= 0 ; pos--) if ( OrderSelect(pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == magic.number // my magic number && OrderSymbol() == Symbol() // and my pair. ){ datetime OOTlatest = OrderOpenTime(); // found latest open order break; } for(pos--; pos >= 0 ; pos--) if ( OrderSelect(pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == magic.number // my magic number && OrderSymbol() == Symbol() // and my pair. ){ datetime OOTprevious = OrderOpenTime(); // found the previous break; } if (OOTlastest == 0) // no open orders if (OOTprevious == 0) // no previous :
Merci WHRoeder,
Si j'ai besoin d'obtenir le dernier ordre d'achat et le dernier ordre de vente, puis de les comparer en faisant :
si ( le dernier ordreopenforbuy == OOTlastest )
{ faire quelque chose }
sinon
{ } ....... est le code ci-dessous fonctionnera.
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if ( OrderSelect(pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == magic.number // my magic number && OrderSymbol() == Symbol() // and my pair. ){ if (OrderType() == OP_BUY){ int lastorderforbuy= OrderOpenPrice(); } else{ int lastorderforsell= OrderOpenPrice(); } } for(pos--; pos >= 0 ; pos--) if ( OrderSelect(pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == magic.number // my magic number && OrderSymbol() == Symbol() // and my pair. ){ if (OrderType() == OP_BUY){ int previousorderforbuy= OrderOpenPrice(); } else{ int previousorderforsell= OrderOpenPrice(); } } if ( ((lastorderforbuy+ previousorderforsell)/2)<=MarketInfo("EURUSD",MODE_BID)) { CLOSESHORT("EURUSD") ;}
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Chers amis,
Quelqu'un peut-il vérifier le lien ci-dessous et répondre à ma question (comment puis-je obtenir le prix le plus élevé après l'ouverture de la commande).
http://www.forexfactory.com/showthread.php?t=307937