Tick eines Bars

Einloggen oder registrieren, um einen Kommentar zu schreiben
Alstom
11
Alstom  

Hallo,

ich zerstöre mir schon seit einiger Zeit den Kopf. Kennt jemand eine effiziente Möglichkeit, alle Ticks eines Bars abzuspeichern, zum Beispiel in einem Array? 

Gruß

Carl Schreiber
Moderator
6988
Carl Schreiber  

Die Frage ist eher, wozu braucht man das? Man kann Arrays, structs, Objekte verwenden oder gleich alles in einer csv-Datei speichern. Sollen Live-Daten sein oder können es auch historische Daten sein?

Aber der Tester kann sich jetzt in MT5 Tickdaten zum Testen vom Broker herunterladen - und die könnte man weiterverwenden...

Alstom
11
Alstom  
Ich möchte Live-Daten abspeichern um einen Durchschnitt der Ticks zu berechen.
Carl Schreiber
Moderator
6988
Carl Schreiber  

Ich verwende keinen normalen Durchschnitt (=summe(x[i])/n) mehr sondern nur noch ema:

#define ema(nxt,prv,c) (c >= 0.99 ? nxt : (((nxt)-(prv))*(c) + prv))
...
eVal = ema( newVal, eVal, 0.01);

(mit c = 2/(n+1)). Warum:

  1. Wenn der Erfolg eines System davon abhängt ist es nichts wert, viel zu sensibel auf kleinste Änderungen, die jederzeit auftreten können!
  2. Ist leicht und einfach (schnell) zu berechnen.
  3. Braucht praktisch keine Exraspeicher.
  4. Ich denke es entspricht Deinem Ziel!
werner111053
83
werner111053  

Also so mache ich es:

   int               tickptr;                // ptr auf das nächste zu überschreibende Element int               

   long             tickms;                // Zeit des letzten aufgezeichneten Ticks

   double         tickval       [100]; // letzte 100 ticks des symbols als Echtkurs, rollierend gespeichert
   int               tickint       [100]; // letzte 100 ticks des symbols in ticksize (integer) gespeichert zum vergleichen
   long             ticktime    [100]; // letzte 100 ticks zeit in sekunden
   long             tickvolume[100]; // letzte 100 tickvolumes


ich speichere die letzten 100 Ticks, das reicht mir. Die meisten Indizes performen bei mir zwischen 15 und 100 Ticks die Minute. Kannst ja mehr nehmen.
der tickpointer zeigt auf das letzte gültige Element.  Bei Überschreitung von 99 gehts wieder von vorn los.
Meine Auswertungen werten die letzte Minute aus und zählen Anzahl Ticks, Hub in Ticks, Anzahl gleichbleibende prices, Anzahl prices nach oben, nach unten etc.
Dazu korrespondierend die Anzahl kontrakte pro Tick (volume).
sollten in einer Minute mehr als 100 Ticks kommen- ok, dann ist das Rennen eh schon jenseits von gut und böse.

Die Tabellen sind teil einer structure, die über n symbole geht und diese in millisekunden abklappert auf neue ticks.
Diese erkennst du an der mitgelieferten Zeit als millisekunden.

Einloggen oder registrieren, um einen Kommentar zu schreiben