orderopenprice açıldıktan sonra en yüksek nasıl alabilirim.

 

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

 
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) );
 
WHRoeder :


İş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

 
OOT almak için önceden bir sipariş vermiş olmanız gerekirSelect
 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. 
    }
}
 
WHRoeder :
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.

 
Cevap yok, sadece son emirden önce emri almam gerekiyor, alış veya satış için bile o emir açık veya kapalı emir olsa bile yardımınızı bekliyorum.
 
Hand :
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.
Son siparişi bul, hatırla, bir sonrakini daha önce bul.
     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") ;}