OrderSelect

Çalışılmak istenen emri seçer. İşlem başarıyla tamamlanmışsa 'true', aksi durumda 'false' dönüşü yapar. Hata hakkında detaylı bilgi almak için GetLastError() çağrısını kullanın.

bool  OrderSelect(
   ulong   ticket      // Emir fişi 
   );

Parametreler

ticket

[in]  Emir fişi.

Dönüş Değeri

bool tipli değişken.

Not

Müşteri terminalinde Araçkutusunun "İşlem" sekmesinde birlikte gösterilen mevcut bekleyen emirler ve pozisyonlar birbirleriyle karıştırılmamalıdır.

Netleştirme (netting) sisteminde (ACCOUNT_MARGIN_MODE_RETAIL_NETTING ve ACCOUNT_MARGIN_MODE_EXCHANGE) bir sembol üzerinde sadece bir pozisyon bulunabilir. Bu pozisyon bir veya daha fazla işlemin sonucu açılmış olabilir. Müşteri terminalinde Araçkutusunun "İşlem" sekmesi içinde birlikte gösterilen mevcut bekleyen emirler ve pozisyonlar birbirleriyle karıştırılmamalıdır.

Çoklu pozisyonlara izin verilemsi durumunda (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) bir sembol üzerinde birden fazla pozisyon açılabilir.

OrderGetTicket() fonksiyonu bir emirle ilgili verileri program ortamına kopyalar ve OrderGetDouble(), OrderGetInteger() ve OrderGetString() çağrıları, daha önceden kopyalanmış bu verilere dönüş yapar. Yani, emir artık var olmasa da (veya fiyatı, Zarar Durdur/Kar Al seviyeleri veya zaman aşımı süresi değiştirilmiş olsa bile) emirle ilgili verilere yine de erişilebilir. Emirle ilgili güncel verileri alabilmek için OrderSelect() çağrısının değişikliklerden sonra yapıldığından emin olmalısınız.

Örnek:

#define   EXPERT_MAGIC  123456
#define   OFFSET        50                      // emri yerleştirmek için mevcut fiyattan puan cinsinden ofset
#define   DIRECTION     ORDER_TYPE_BUY_LIMIT    // emir türü
#define   VOLUME        1.0                     // hacim
#define   DEVIATION     2                       // fiyattan izin verilen sapma
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//-- işlem talebini, sonucu ve değişkenleri bildir ve başlat
   MqlTradeRequest request={};
   MqlTradeResult  result ={};
   double          order_price=0;
   
//--- bekleyen emir yerleştirme parametreleri
   request.action    = TRADE_ACTION_PENDING;                               // işlem türü
   request.symbol    = _Symbol;                                            // sembol
   request.volume    = VOLUME;                                             // hacim
   request.deviation = DEVIATION;                                          // fiyattan izin verilen sapma
   request.magic     = EXPERT_MAGIC;                                       // emir sihirli sayısı
   
//--- işlem türünü kontrol et
   switch(DIRECTION)
     {
      case ORDER_TYPE_BUY_LIMIT :
        request.type = ORDER_TYPE_BUY_LIMIT;                               // emir türü
        order_price  = SymbolInfoDouble(_SymbolSYMBOL_ASK)-OFFSET*_Point;// açılış fiyatı
        request.priceNormalizeDouble(order_price_Digits);              // normalleştirilmiş açılış fiyatı
        break;
      case ORDER_TYPE_SELL_LIMIT :
        request.type = ORDER_TYPE_SELL_LIMIT;                              // emir türü
        order_price  = SymbolInfoDouble(_SymbolSYMBOL_BID)+OFFSET*_Point;// açılış fiyatı
        request.priceNormalizeDouble(order_price,_Digits);               // normalleştirilmiş açılış fiyatı
        break;
      case ORDER_TYPE_BUY_STOP :
        request.type = ORDER_TYPE_BUY_STOP;                                // emir türü
        order_price  = SymbolInfoDouble(_SymbolSYMBOL_ASK)+OFFSET*_Point;// açılış fiyatı
        request.priceNormalizeDouble(order_price,_Digits);               // normalleştirilmiş açılış fiyatı
        break;
      case ORDER_TYPE_SELL_STOP :
        request.type = ORDER_TYPE_SELL_STOP;                               // emir türü
        order_price  = SymbolInfoDouble(_SymbolSYMBOL_BID)-OFFSET*_Point;// açılış fiyatı
        request.priceNormalizeDouble(order_price,_Digits);               // normalleştirilmiş açılış fiyatı
        break;
      default// beklemede olmayan veya Stop Limit emri seçilmişse
        Alert("This example is only for placing pending orders BuyLimit, SellLimit, BuyStop and SellStop");
        break;
     }
 
//--- bir talep gönder. Talep gönderilemediyse, hata kodunu görüntüle ve operasyonu tamamla
   if(!OrderSend(requestresult))
     {
      Print("OrderSend error "GetLastError());
      return;
     }
     
//--- işlem verilerini görüntüle
   PrintFormat("Trade request result: retcode=%u, order=%I64u"result.retcoderesult.order);
   
//--- işlem sonucundan emir fişini al ve emri fişe göre seç
   ulong ticket=result.order;
   ResetLastError();
   if(!OrderSelect(ticket))
     {
      PrintFormat("OrderSelect(%I64u) failed. Error %d"ticketGetLastError());
      return;
     }
 
//--- fiş ile seçilen emrin verilerini günlükte görüntüle
   ENUM_ORDER_TYPE   type  = (ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE);
   long              time  = OrderGetInteger(ORDER_TIME_SETUP_MSC);
   double            price = OrderGetDouble(ORDER_PRICE_OPEN);
   double            volumeOrderGetDouble(ORDER_VOLUME_CURRENT);
   string            symbolOrderGetString(ORDER_SYMBOL);
   int               digits= (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   PrintFormat("Current selected order: %s %.2f %s #%I64u at %.*f, %s",
               symbolvolumeOrderTypeDescription(type), ticketdigitspriceTimeMscToString(time));
   /*
   sonuç:
   Trade request resultretcode=10009order=2811006719
   Current selected orderEURUSD 1.00 Buy Limit #2811006719 at 1.105502024.09.04 10:38:28.563
   */
  }
//+------------------------------------------------------------------+
//| 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'));
  }
//+------------------------------------------------------------------+
//| Emir türü açıklamasını geri döndür                               |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case ORDER_TYPE_BUY              :  return("Buy");
      case ORDER_TYPE_SELL             :  return("Sell");
      case ORDER_TYPE_BUY_LIMIT        :  return("Buy Limit");
      case ORDER_TYPE_SELL_LIMIT       :  return("Sell Limit");
      case ORDER_TYPE_BUY_STOP         :  return("Buy Stop");
      case ORDER_TYPE_SELL_STOP        :  return("Sell Stop");
      case ORDER_TYPE_BUY_STOP_LIMIT   :  return("Buy Stop Limit");
      case ORDER_TYPE_SELL_STOP_LIMIT  :  return("Sell Stop Limit");
      default                          :  return("Unknown order type");
     }
  }

Ayrıca bakınız

OrderGetInteger(), OrderGetDouble(), OrderGetString(), OrderCalcProfit(), OrderGetTicket(), Emir Özellikleri