CustomBookAdd

Überträgt den Status der Markttiefe (Depth of Market) für ein nutzerdefiniertes Symbol. Die Funktion erlaubt die Übertragung der Markttiefe als ob die Preise vom Server des Brokers kommen.

bool  CustomBookAdd(
   const string        symbol,            // Symbolname
   const MqlBookInfo&  books[]            // Array der Beschreibungen der Elemente der Markttiefe
   uint                count=WHOLE_ARRAY  // Anzahl der verwendeten Elemente
   );

Parameter

symbol

[in]  Name des benutzerdefinierten Symbols.

books[]

[in]   Der Array mit den Daten vom Typ MqlBookInfo, die den Status der Markttiefe komplett beschreiben — alle Kauf- und Verkaufsanfragen. Der übergebene Status der Markttiefe ersetzt vollständig den vorherigen.

count=WHOLE_ARRAY

[in]   Die Anzahl der Elemente im Array 'books', die der Funktion zu übergeben ist. Standardmäßig wird ganze Array verwendet.

Rückgabewert

true – Erfolge, sonst – false. Um Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError() auf.

Hinweis

Die Funktion CustomBookAdd arbeitet nur mit benutzerdefinierten Symbolen, für die die Markttiefe geöffnet wird — über die Plattformoberfläche oder die Funktion MarketBookAdd.

Wenn Sie die Markttiefe öffnen, werden die Geld- und Briefkurse des Symbols nicht aktualisiert. Sie sollten die Änderung der Bestens-Preise kontrollieren und die Ticks mit CustomTicksAdd. übergeben.

Die Funktion prüft die Richtigkeit der übermittelten Daten: für jedes Element müssen Art, Preis und Volumen angegeben werden. Außerdem dürfen MqlBookInfo.volume und MqlBookInfo.volume_real weder null oder negativ sein; sind beide Volumina negativ, wird dies als Fehler gewertet.  Sie können eines der Volumen oder beide angeben: Das angegebene oder positive Volumen wird verwendet:

volume=-1 && Volumen_real=2 — volume_real=2 wird verwendet,
Volumen=3 && volume_real=0 — volume=3 wird verwendet.

Die Reihenfolge der Elemente von MqlBookInfo im Array 'books' spielt keine Rolle. Beim Speichern der Daten sortiert das Terminal diese selbstständig nach dem Preis.

Beim Speichern von Daten wird der Parameter "Book depth" (SYMBOL_TICKS_BOOKDEPTH) des nutzerdefinierten Empfängersymbols überprüft. Wenn die Anzahl der Verkaufsanfragen diesen Wert in der übergebenen Markttiefe überschreitet, werden die überzähligen Level verworfen. Das Gleiche gilt für Kaufanfragen.

Das Beispiel einer Zuweisung zum Array 'books':

Status der Markttiefe

Ausfüllen von books[]

Beispiel der Markttiefe

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;

Beispiel:

//+------------------------------------------------------------------+
//| Expert-Initialisierungsfunktion                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- aktivieren der Markttiefe für ein Symbol, für das wir Daten erhalten
   MarketBookAdd(Symbol());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert Deinitialisierungsfunktion                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Tickdaten - Funktion                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   MqlTick ticks[];
   ArrayResize(ticks,1);
//--- Kopieren der aktuellen Preise des allgemeinen Symbols für das nutzerdefinierte
   if(SymbolInfoTick(Symbol(),ticks[0]))
     {
      string symbol_name=Symbol()+".SYN";
      CustomTicksAdd(symbol_name,ticks);
     }
  }
//+------------------------------------------------------------------+
//| Book - Funktion                                                  |
//+------------------------------------------------------------------+
voidOnBookEvent(const string &book_symbol)
  {
//--- Kopieren des Status' der Markttiefe vom allgemeinen Symbol für das nutzerdefinierte
   if(book_symbol==Symbol())
     {
      MqlBookInfo book_array[];
      if(MarketBookGet(Symbol(),book_array))
        {
         string symbol_name=Symbol()+".SYN";
         CustomBookAdd(symbol_name,book_array);
        }
     }
  }
//+------------------------------------------------------------------+

Siehe auch

MarketBookAdd, CustomTicksAdd, OnBookEvent