CustomTicksAdd

Fügt Daten aus einem Array vom Typ MqlTick in die Preishistorie eines benutzerdefinierten Symbols hinzu. Das benutzerdefinierte Symbol muss im Fenster MarketWatch (Marktübersicht) ausgewählt werden.

int  CustomTicksAdd(
   const string     symbol,             // Symbolname
   const MqlTick&   ticks[],            // Array mit Tickdaten, die man auf das benutzerdefinierte Symbol anwenden muss
   uint             count=WHOLE_ARRAY   // Anzahl der zu verwendenden Elemente des Arrays ticks[]
   );

Parameter

symbol

[in]  Name des benutzerdefinierten Symbols.

ticks[]

[in]   Das Array der Tickdaten vom Typ MqlTick, die nach Zeit aufsteigend geordnet wurden, das heißt, ticks[k].time_msc <= ticks[n].time_msc, wenn k<n.

count=WHOLE_ARRAY

[in]  Anzahl der zu verwendenden Elemente des Arrays ticks[], die hinzugefügt werden. WHOLE_ARRAY bedeutet, es werden alle Elemente des Arrays ticks[] hinzugefügt.

Rückgabewert

Die Anzahl der hinzugefügten Ticks oder -1 im Fehlerfall.

Hinweis

Die Funktion CustomTicksAdd arbeitet nur für benutzerdefinierte Symbole im Fenster MarketWatch (Marktübersicht). Wenn das Symbol in MarketWatch nicht ausgewählt wurde, muss man für das Einfügen von Ticks CustomTicksReplace verwenden.

Die Funktion Custom TicksAdd erlaubt es, die Ticks so zu übertragen, als ob sie vom Server des Brokers eingehen würden. Die Daten werden nicht direkt in die Datenbank von Ticks geschrieben, sondern ins Marktübersicht-Fenster gesendet. Das Terminal speichert dann die Ticks aus diesem Fenster in seiner Datenbank. Wenn das Datenvolumen, das während eines Aufrufs übertragen wird, zu groß ist, ändert die Funktion ihr Verhalten, um Ressourcen zu sparen. Wenn über 256 Ticks übertragen werden, werden die Daten in zwei Teile geteilt. Das erste Teil (das große) wird direkt in die Datenbank von Ticks geschrieben (wie CustomTicksReplace das tut). Das zweite Teil, das aus den letzten 128 Ticks besteht, wird in das Marktübersicht-Fenster geleitet, und danach vom Terminal in der Datenbank gespeichert.

Die Struktur MqlTick hat zwei Felder mit der Zeit – time (Tickzeit in Sekunden) und time_msc (Tickzeit in Millisekunden) – seit dem 01. Januar 1970. Die Verarbeitung dieser Felder erfolgt in den hinzugefügten Ticks nach folgenden Regeln in der angegebenen Reihenfolge:

  1. wenn ticks[k].time_msc!=0, dann verwenden wir diesen Wert für die Ausfüllung des Feldes ticks[k].time, d.h. für den Tick wird die Zeit ticks[k].time=ticks[k].time_msc/1000 (ganzzahlige Division) gesetzt.
  2. wenn ticks[k].time_msc==0 und ticks[k].time!=0, dann erhalten wir die Zeit in Millisekunden durch die Multiplikation mit 1000, d.h. ticks[k].time_msc=ticks[k].time*1000
  3. wenn ticks[k].time_msc==0 und ticks[k].time==0, wird die aktuelle Zeit des Handelsservers im Moment des Aufrufs der Funktion CustomTicksAdd bis auf Millisekunden in diese Felder geschrieben.

Wenn der Wert der Felder ticks[k].bid, ticks[k].ask, ticks[k].last oder ticks[k].volume größer als Null ist, wird eine Kombination der entsprechenden Flags in das Feld ticks[k].flags geschrieben:

  • TICK_FLAG_BID – der Tick hat den Bid-Preis geändert
  • TICK_FLAG_ASK  – der Tick hat den Ask-Preis geändert
  • TICK_FLAG_LAST – der Tick hat den Last-Preis geändert
  • TICK_FLAG_VOLUME – der Tick hat das Volumen geändert

Wenn der Wert eines Feldes kleiner oder gleich Null ist, wird das entsprechende Flag nicht ins Feld ticks[k].flags geschrieben.

 

Die Flags TICK_FLAG_BUY und TICK_FLAG_SELL werden der Historie des benutzerdefinierten Symbols nicht hinzugefügt.

 

Siehe auch

CustomRatesDelete, CustomRatesUpdate, CustomTicksReplace, CopyTicks, CopyTicksRange