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

[Silindi]  

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) );
[Silindi]  
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//

[Silindi]  

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. 
    }
}
[Silindi]  
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
[Silindi]  

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.

[Silindi]  
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
:
[Silindi]  

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") ;}