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.

int  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

Anzahl der ergänzten Ticks oder -1 im Falle eines Fehlers.

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 übergebenen Daten werden auf ihre Gültigkeit überprüft: Preise und Mengen sollten nicht negativ sein, sowie Art, Preis und Volumen (MqlBookInfo.volume oder MqlBookInfo.volume_real) sollten für jedes Element angegeben werden. Wenn mindestens ein Element der Markttiefe falsch beschrieben wurde, verwirft das System den übergebenen Status vollständig.

Die erweiterte Genauigkeit des Volumens von MqlBookInfo.volume_real hat eine höhere Priorität als das normale MqlBookInfo.volume. Wenn beide Werte für das Element der Markttiefe angegeben sind, wird volume_real 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