CustomBookAdd

Kullanıcı-tanımlı sembol için Piyasa Derinliği durumunu aktarır. Fonksiyon, fiyatlar bir broker sunucusundan geliyormuş gibi Piyasa Derinliğini yayınlamayı sağlar.

bool  CustomBookAdd(
   const string        symbol,            // sembol adı
   const MqlBookInfo&  books[]            // Piyasa Derinliği elemanlarının açıklamalarını içeren dizi
   uint                count=WHOLE_ARRAY  // kullanılacak eleman sayısı
   );

Parametreler

symbol

[in]  Özel sembol adı.

books[]

[in]   Piyasa Derinliği durumunu tam olarak tanımlayan MqlBookInfo dizi verisi - tüm alım ve satım istekleri. Aktarılan Piyasa Derinliği durumu tamamen bir öncekinin yerine geçer.

count=WHOLE_ARRAY

[in]   Fonksiyona aktarılacak 'books' dizisi elemanlarının sayısı. Tüm dizi varsayılan olarak kullanılır.

Geri dönüş değeri

true – başarı, aksi takdirde – false. Hata hakkında bilgi edinmek için, GetLastError() fonksiyonunu çağırın.

Not

CustomBookAdd fonksiyonu sadece Piyasa Derinliğinin açıldığı özel sembollerde çalışır — platform arayüzü üzerinden veya MarketBookAdd fonksiyonu aracılığıyla.

Piyasa derinliği eklenirken, sembolün Alış ve Satış fiyatları güncellenmez. En iyi fiyatların değişimini kontrol etmelisiniz ve tikleri CustomTicksAdd fonksiyonunu kullanarak ilave etmelisiniz.

Fonksiyon, iletilen verilerin doğruluğunu kontrol eder: her öğe için tür, fiyat ve hacim belirtilmelidir. Ayrıca, MqlBookInfo.volume ve MqlBookInfo.volume_real sıfır veya negatif olmamalıdır; her iki hacim de negatifse, bu bir hata olarak kabul edilecektir. Hacimlerden herhangi birini veya her ikisini belirtebilirsiniz: belirtilen veya pozitif olan kullanılacaktır:

volume=-1 && volume_real=2 — volume_real=2 kullanılacaktır,
volume=3 && volume_real=0 — volume=3 kullanılacaktır.

MqlBookInfo elemanlarının 'books' dizisindeki sırası önemli değildir. Verileri kaydederken, terminal bunları fiyata göre sıralar.

Verileri kaydederken, alıcı özel sembolün "Book depth" (SYMBOL_TICKS_BOOKDEPTH) parametresi kontrol edilir. Satış isteklerinin sayısı aktarılan Piyasa Derinliğindeki bu değeri aşarsa fazlalıklar atılır. Aynısı alış istekleri için de geçerlidir.

'books' dizisinin örnek dolumu:

Piyasa Derinliği durumu

books[] dolumu

Örnek Piyasa Derinliği

books[0].type=BOOK_TYPE_SELL;
books[0].price=1.14337;
books[0].volume=100;   
books[1].type=BOOK_TYPE_SELL;
books[1].price=1.14330;
books[1].volume=50;   
books[2].type=BOOK_TYPE_SELL;
books[2].price=1.14335;
books[2].volume=40;   
books[3].type=BOOK_TYPE_SELL;
books[3].price=1.14333;
books[3].volume=10;   
books[4].type=BOOK_TYPE_BUY;
books[4].price=1.14322;
books[4].volume=10;   
books[5].type=BOOK_TYPE_BUY;
books[5].price=1.14320;
books[5].volume=90;  
books[6].type=BOOK_TYPE_BUY;
books[6].price=1.14319;
books[6].volume=100;   
books[7].type=BOOK_TYPE_BUY;
books[7].price=1.14318;
books[7].volume=10;

Örnek:

//+------------------------------------------------------------------+
//| Uzman Danışman başlatma fonksiyonu                               |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- veri alacağımız sembol için Piyasa Derinliğini etkinleştir
   MarketBookAdd(Symbol());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Uzman Danışman sonlandırma fonksiyonu                            |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Tik fonksiyonu                                                   |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   MqlTick ticks[];
   ArrayResize(ticks,1);
//--- mevcut fiyatları ortak sembolden özel olana kopyala
   if(SymbolInfoTick(Symbol(),ticks[0]))
     {
      string symbol_name=Symbol()+".SYN";
      CustomTicksAdd(symbol_name,ticks);
     }
  }
//+------------------------------------------------------------------+
//| Book fonksiyonu                                                  |
//+------------------------------------------------------------------+
void OnBookEvent(const string &book_symbol)
  {
//--- mevcut Piyasa Derinliği durumunu ortak sembolden özel olana kopyala
   if(book_symbol==Symbol())
     {
      MqlBookInfo book_array[];
      if(MarketBookGet(Symbol(),book_array))
        {
         string symbol_name=Symbol()+".SYN";
         CustomBookAdd(symbol_name,book_array);
        }
     }
  }
//+------------------------------------------------------------------+

Ayrıca bakınız

MarketBookAdd, CustomTicksAdd, OnBookEvent