orderopenprice açıldıktan sonra en yüksek nasıl alabilirim.
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) );
İşte yukarıdaki kod için bazı hatalar.
'(' - beklenmeyen işlev tanımı D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (343, 18)
PriceToStr dizesi için bu hata ( çift p)
bu hatayı nasıl düzeltebilirim bilmiyorum
'iBarCurrent' - değişken tanımlı değil D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (348, 30)
bu hata, çünkü #define iBarCURRENT tanımladınız, sonra onu iBarCurrent olarak koydunuz
Düzelteceğim.
2 hata(lar),
Bu satırı Kodunuzun en sonuna start fonksiyonunun dışına koyun. . .
string PriceToStr( double p){ return ( DoubleToStr (p, Digits ) ); }
ve kodlamayı öğrenmek istiyorsanız bunu okumaya başlayın: https://book.mql4.com//
Açıktır çocuklar ( RaptorUK ve WHRoeder ),
Teşekkür ederim.
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.
Başka bir sorum var:
2 adet emrim varsa biri alış diğeri satış için açıldı:
EA'mın iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); değerini anlamasına ve almasına nasıl izin verebilirim? // Açık bar. Aldığım bar için ondan pozisyon al ve o noktadan en yüksek olanı hesapla.
Ve
iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Açık bar. Aldığım bar için ondan satış pozisyonu alın ve o noktadan en düşük olanı hesaplayın.
Çok teşekkürler
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. } }
OOT almak için önceden bir sipariş vermiş olmanız gerekirSelect
Teşekkürler beyler.
Ayrıca başka bir sorum var:
Bu koşulları nasıl yapabilirim: if (satmak için son OrderClosePrice() > satış için son OrderClosePrice'den önce ) && (satmak için son OrderClosePrice'tan önce >= teklif)
pozisyonu kapat
böyle bir şey olur mu
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
Sadece,
Nasıl elde edebileceğimi bilmek istiyorum: (alış veya satış) için son siparişten önceki sipariş(açma veya kapama)fiyat(), bazı açıklamalar için onları ekledim.
Çok teşekkürler.
Nasıl elde edebileceğimi bilmek istiyorum: (alış veya satış) için son siparişten önceki sipariş(açma veya kapama)fiyat(), bazı açıklamalar için onları ekledim.
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 :
Teşekkürler WHRoeder,
Gerçek yardımın için. satın almak için son siparişi ve satış için son siparişi almam gerekirse, bunları aşağıdakileri yaparak karşılaştırın:
if (son siparişopenforbuy == OOTlatest )
{ bir şey yap }
başka
{ } ....... aşağıdaki kod çalışacaktır.
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") ;}
canlarım,
Birisi aşağıdaki bağlantıyı kontrol edebilir ve soruma cevap verebilir mi (orderopenprice açıldıktan sonra en yüksek seviyeye nasıl ulaşabilirim).
http://www.forexfactory.com/showthread.php?t=307937