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

 
Kod yazmayı öğrenmeye başlayın ve konunuzu çarpıtmayı bırakın.
 

Sadece biraz yardıma ihtiyacım var, o zaman her şey yoluna girecek.

sana çok teşekkürler.

 int LastOpenTicketForBuy(){
     datetime lastTime  = 0 ;
     int       lastTicket = - 1 ; // None open.
     int magi.number= 0 ;
    //for(int pos=0; pos<OrdersTotal(); i++) {
      OrderSelect(pos, SELECT_BY_POS);
     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.
    &&   OrderOpenTime ()     >  lastTime
    && OrderType ()==OP_BUY
    ){
      lastTime   = OrderOpenTime ();
      lastTicket = OrderTicket ();
    }
     return (lastTicket);
}

int LastOpenTicketForSell(){
     datetime lastTime  = 0 ;
     int       lastTicket = - 1 ; // None open.
     int magi.number= 0 ;
     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.
    &&   OrderOpenTime ()     >  lastTime
    && OrderType ()==OP_SELL
    ){
      lastTime   = OrderOpenTime ();
      lastTicket = OrderTicket ();
    }
     return (lastTicket);
}

int previousorderforbuy(){
     datetime lastTime  = 0 ;
     int       lastTicket = - 1 ; // None open.
     int magi.number= 0 ;
     for ( int 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.
    &&   OrderOpenTime ()     >  lastTime
    && OrderType ()==OP_BUY
    ){
      lastTime   = OrderOpenTime ();
      lastTicket = OrderTicket ();
    }
     return (lastTicket);
}

int previousorderforsell(){
     datetime lastTime  = 0 ;
     int       lastTicket = - 1 ; // None open.
     int magi.number= 0 ;
     for ( int 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.
    &&   OrderOpenTime ()     >  lastTime
    && OrderType ()==OP_SELL
    ){
      lastTime   = OrderOpenTime ();
      lastTicket = OrderTicket ();
    }
     return (lastTicket);
}
 

çocuklar,

Bir göz atıp neyin yanlış olduğunu söyler misin?


için bazı işlevler oluşturmam gerekiyor:
1- Satın almak için son sipariş açık fiyatını alma ve saklama işlevi.
2- Satış için son sipariş açık fiyatını alma ve saklama işlevi.
3- Alım veya satım ne olursa olsun son kapanış emrini alma ve saklama işlevi

 int LastOpenTicketForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ;
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.
&& OrderType ()==OP_BUY )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}

int LastOpenTicketForSell()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open.

int magi.number= 0 ;
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.
&& OrderType ()==OP_SELL )
{ lastTime = OrderOpenTime (); 

lastTicket = OrderTicket (); }
return (lastTicket);}

int lastcloseorder()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; 
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.
&& OrderCloseTime () > lastTime
&& OrderType ()==OP_BUY||OP_SELL )
{ lastTime = OrderCloseTime (); lastTicket = OrderTicket (); }
return (lastTicket);}




sonra if ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Pozisyonu kapat koyacağım

 
Senin fikrine göre. . ne döndürür (lastTicket); yapmak ?
 

yapmam gerektiğini mi söylüyorsun

1- int yerine double LastOpenForBuy() koyun

2-sipariş için çift sırala, sonra iade et (sipariş için satın al)

Bu sayede sadece satın almak için son siparişimi açabiliyorum.

 double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; double orderforbuy;
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.
&& OrderType ()==OP_BUY )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}

 
Hand :

yapmam gerektiğini mi söylüyorsun

Bu bir soru . . . dışında bir şey kastetmiyorum. . . cevabın nedir?

Yardım etmemi istiyorsan soruma cevap vermelisin. . . ve "Bilmiyorum" kabul edilebilir bir cevap değildir. Biraz düşün.

 

Senin fikrine göre. . ne döner(lastTicket); yapmak ?

Halihazırda seçili sipariş için bilet numarasını döndürür.

 
Hand :

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.

bu gerçekten işe yarıyor mu???

ilk döngü

 for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--) if (

ikinciye girer

 for (pos--; pos >= 0 ; pos--) if (

sıfıra kadar azalan pos. ikinci döngü biter --> ilk döngüye geri döner ve ilk döngü son seferden beri pos'un nerede kaldığını bilmez. şans, pos = sıfır.

 

bu kod muhtemelen işe yarayabilir ... sadece 1 şeyi değiştirmeniz gerekiyor:

ifade için ikinci

 for (pos--; pos >= 0 ; pos--) if (

gibi farklı bir yineleyiciye

 for ( int a=pos--; a>= 0 ; a--) if ( // abort the use of pos again and introduce a new iterator, a

ve benzer şekilde, YALNIZCA tüm ikinci döngü mantığında yeni yineleyiciye pos değiştirin (bu durumda, a).

 
Hand :

Senin fikrine göre. . ne döner(lastTicket); yapmak ?

Seçili siparişin bilet numarasını döndürür.

Dedin . . .

" için bazı işlevler oluşturmam gerekiyor:
1- Satın almak için son sipariş açık fiyatını alma ve saklama işlevi.
2- Satış için son sipariş açık fiyatını alma ve tutma işlevi.

3- Alım veya satım ne olursa olsun son kapanış emrini alma ve saklama işlevi "

Peki neden bilet numarasını iade ediyorsunuz? Kopyalayıp yapıştırdığınız kodu okuyun, anlayın, öğrenin. . .