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") ;}
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
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