PositionSelectByTicket

Pozisyon üzerinde belirtilen fiş numarasını kullanarak bir açık pozisyonu seçer. Başarılı ise 'true', aksi durumda 'false' dönüşü yapar. Hata detayları için GetLastError() çağrısını kullanın.

bool  PositionSelectByTicket(
   ulong   ticket     // pozisyon fişi
   );

Parametreler

ticket

[in]  Pozisyon fişi.

Dönüş Değeri

bool tipli bir değişken.

Not

PositionSelectByTicket() foksionu pozisyonun verilerini program ortamına kopyalar. PositionGetDouble(), PositionGetInteger() ve PositionGetString() fonksiyonlarının sonraki çağrıları daha önceden kopyalanmış bu verilere dönüş yapar. Yani, pozisyonun kendisi artık mevcut olmasa da (veya yön, hacim vb. değiştirilmiş olsa da), ilgili veri hala elde edilebilir. En güncel verinin alındığından emin olmak için PositionSelectByTicket() çağrısını verilere erişmeden önce yaptığınızdan emin olmalısınız.

Örnek:

#define   EXPERT_MAGIC  123456   // sihirli sayı
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- talep ve sonuç yapılarını bildir ve başlat
   MqlTradeRequest request={};
   MqlTradeResult  result ={};
   
//--- bir alış pozisyonu açmak için işlem talebi parametrelerini doldur
   request.action    = TRADE_ACTION_DEAL;                      // işlem türü
   request.symbol    = Symbol();                               // sembol
   request.volume    = 0.1;                                    // 0.1 lotluk hacim
   request.type      = ORDER_TYPE_BUY;                         // emir türü
   request.price     = SymbolInfoDouble(Symbol(), SYMBOL_ASK); // açılış fiyatı
   request.deviation = 5;                                      // fiyattan izin verilen sapma
   request.magic     = EXPERT_MAGIC;                           // emir sihirli sayısı
   
//--- bir talep gönder. Talep gönderilemediyse, hata kodunu görüntüle ve operasyonu tamamla
   if(!OrderSend(requestresult))
     {
      PrintFormat("OrderSend error "GetLastError());
      return;
     }
      
//--- işlem verilerini görüntüle
   PrintFormat("Trade request result: retcode: %u, deal: %I64u, order: %I64u"result.retcoderesult.dealresult.order);
   
//--- işlem sonucundan pozisyon fişini al ve pozisyonu fişe göre seç
//--- yeni açılan bir pozisyonun fişi, işlemi oluşturan emrin fişine karşılık gelir
   ulong ticket=result.order;
   ResetLastError();
   if(!PositionSelectByTicket(ticket))
     {
      PrintFormat("PositionSelectByTicket(%I64u) failed. Error %d"ticketGetLastError());
      return;
     }
 
//--- fiş ile seçilen pozisyonun verilerini günlükte görüntüle
   ENUM_POSITION_TYPE type  = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   long               time  = PositionGetInteger(POSITION_TIME_MSC);
   double             price = PositionGetDouble(POSITION_PRICE_OPEN);
   double             volumePositionGetDouble(POSITION_VOLUME);
   string             symbolPositionGetString(POSITION_SYMBOL);
   int                digits= (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   PrintFormat("Current selected position: %s %.2f %s #%I64u at %.*f, %s",
               symbolvolume, (type==POSITION_TYPE_BUY ? "Buy" : "Sell"), ticketdigitspriceTimeMscToString(time));
   /*
   sonuç:
   Trade request resultretcode10009deal2778100901order2803905975
   Current selected positionEURUSD 0.10 Buy #2803905975 at 1.106722024.09.02 12:09:51.239
   */
  }
//+------------------------------------------------------------------+
//| Milisaniyeli zamanı geri döndür                          |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Ayrıca bakınız

PositionGetSymbol(), PositionsTotal(), Pozisyon Özellikleri