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) );
Hier sind einige Fehler für den obigen Code.
'(' - Funktionsdefinition unerwartet D:\Programmdateien\FXDD Malta - MetaTrader 4\experts\test2.mq4 (343, 18)
dieser Fehler für den String PriceToStr(double p)
für diesen Fehler ich weiß nicht, wie ich ihn beheben kann
'iBarCurrent' - Variable nicht definiert D:\Programmdateien\FXDD Malta - MetaTrader 4\experts\test2.mq4 (348, 30)
dieser Fehler, weil Sie #define iBarCURRENT definieren , dann setzen Sie es als iBarCurrent
Ich werde ihn beheben.
2 Fehler(s),
Fügen Sie diese Zeile ganz am Ende Ihres Codes außerhalb der Startfunktion ein...
string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }
und fangen Sie an, dies zu lesen, wenn Sie programmieren lernen wollen: https://book.mql4.com//
Es ist klar Jungs ( RaptorUK und WHRoeder ),
Vielen Dank dafür.
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.
Ich habe eine andere Frage:
Wenn ich 2 Orders geöffnet habe, eine für Kauf und die andere für Verkauf:
Wie kann ich meinen EA verstehen lassen und die iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Bar der Eröffnung nehmen. Für die Bar, dass ich kaufen Position von ihm und berechnen Sie die höchste von diesem Punkt.
Und
Nehmen Sie die iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Bar der Eröffnung. Für die Bar, dass ich verkaufen Position von ihm und berechnen Sie die niedrigste von diesem Punkt.
Vielen Dank!
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. } }
Um OOT zu erhalten, müssen Sie bereits einen OrderSelect durchgeführt haben
Vielen Dank, Leute.
Ich habe noch eine andere Frage:
Wie kann ich diese Bedingungen erfüllen: if (last OrderClosePrice() for sell > before the last OrderClosePrice for sell ) && ( before the last OrderClosePrice for sell >= bid)
schließe die Position
ist so etwas wie das Folgende in Ordnung
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
Einfach,
Ich möchte wissen, wie ich: den Auftrag vor dem letzten Auftrag (öffnen oder schließen) Preis() für (kaufen oder verkaufen) zu erhalten, um sie für einige Berechnungen hinzugefügt.
Vielen Dank.
Ich möchte wissen, wie kann ich: die Reihenfolge vor der letzten Bestellung (öffnen oder schließen)Preis() für (kaufen oder verkaufen), um sie für einige Berechnungen hinzugefügt.
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 :
Danke WHRoeder,
Für Ihre wirkliche Hilfe. wenn ich die letzte Bestellung für Kauf und die letzte Bestellung für Verkauf erhalten muss, dann vergleichen Sie sie, indem Sie tun:
wenn ( die letzte Kaufbestellung == OOTlastest )
{ etwas tun }
sonst
{ } ....... ist der untenstehende Code wird funktionieren.
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") ;}

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Liebe Leute,
kann jemand den untenstehenden Link überprüfen und meine Frage beantworten (wie kann ich den höchsten Preis erhalten, nachdem die Bestellung geöffnet wurde).
http://www.forexfactory.com/showthread.php?t=307937