Expert Advisors: Ask Bid Ticks

 

Ask Bid Ticks:

Ask Bid Ticks ist eine hochpräzise Lösung für Echtzeit-Tickdaten zur Analyse von Mikrostrukturen (ein Tickdatensammler). Sie arbeitet mit der lokalen Computerzeit.

Autor: Erdem Sen

 
Automated-Trading:

Ask Bid Ticks:

Autor: Erdem Sen

Interessant, wie kann man das im Backtesting verwenden? Irgendeine Idee?
 
Hallo, können Sie in Bar M5 M15 H1 H4 gleichwertig
 
vanvolxem:
Hallo, können Sie in Bar M5 M15 H1 H4 entsprechen
Es tut mir leid, ich konnte nicht verstehen, könnten Sie genauer sein
 

Hallo,

Zeit Symbol OPEM CLOSE PH PB

2013.01.04 04:55 EURGBP 0.81065 0.81078 0.81086 0.81065 172

2013.01.04 05:00 EURGBP 0.81079 0.81046 0.81080 0.81044 90

2013.01.04 05:05 EURGBP 0.81047 0.81044 0.81056 0.81044 89

2013.01.04 05:10 EURGBP 0.81043 0.81059 0.81059 0.81033 111

2013.01.04 05:15 EURGBP 0.81057 0.81052 0.81059 0.81048 78

2013.01.04 05:20 EURGBP 0.81051 0.81065 0.81071 0.81050 124

2013.01.04 05:25 EURGBP 0.81067 0.81066 0.81070 0.81060 243

2013.01.04 05:30 EURGBP 0.81067 0.81076 0.81080 0.81063 108


 
vanvolxem:

Hallo,

Zeit Symbol OPEM CLOSE PH PB

2013.01.04 04:55 EURGBP 0.81065 0.81078 0.81086 0.81065 172

2013.01.04 05:00 EURGBP 0.81079 0.81046 0.81080 0.81044 90



Der beste Weg, um periodische Daten (nach mir) zu erhalten ist, MT4 Geschichte zu verwenden, u können herunterladen und exportieren (zu Excel) die historischen Daten. aber wenn u wollen ein reedit dieses Codes für periodische Daten, ich denke, dies wird für u arbeiten:

//+------------------------------------------------------------------+
//|PeriodicRealTimeDataStream.mq5 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

datetime t1;
double   arro[1],arrh[1],arrl[1],arrc[1];
string   T,O,H,L,C;
long     arrv[1],V;

//+------------------------------------------------------------------+
void OnTick()
  {  

   t1 = (datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
   static datetime  t0 = t1;
//--- Werte für das angegebene Diagramm erhalten 
   if (t0!=t1)
      {  
         //--- Werte in Arrays kopieren
         CopyOpen(_Symbol,_Period,0,1,arro);
         CopyHigh(_Symbol,_Period,0,1,arrh);
         CopyLow(_Symbol,_Period,0,1,arrl);
         CopyClose(_Symbol,_Period,0,1,arrc);
         CopyTickVolume(_Symbol,_Period,0,1,arrv);
         //--
         T=TimeToString(t1,TIME_DATE|TIME_MINUTES);
         O=DoubleToString(arro[0],_Digits);
         H=DoubleToString(arrh[0],_Digits);
         L=DoubleToString(arrl[0],_Digits);
         C=DoubleToString(arrc[0],_Digits);
         V=arrv[0];
         //--- Ausgabe der Werte
         printf("%s  %s  %s  %s  %s  %s  %d",T,_Symbol,O,H,L,C,V);
         //--- die Uhrzeit neu einstellen
         t0=t1;     
      }
//---
  }
//+------------------------------------------------------------------+

Wenn Sie den csv-Export wünschen, können Sie die Dateifunktionen und Variablen wie im Hauptcode verwenden

 
Was ist mit den Ticks, die Sie vermissen? Fügen Sie irgendetwas in die TXT-Datei für sie? Wenn nicht, dann sind Sie nicht "... speichert alle Tick-by-Tick-Daten von Ask- und Bid-Kursen in einer TXT-Datei."
 
RaptorUK:
Was ist mit den Ticks, die Sie vermissen? fügen Sie etwas in die TXT-Datei für sie? wenn Sie nicht, dann sind Sie nicht ". .. speichert alle Tick-by-Tick-Daten von Ask-und Bid-Preise zu einer txt-Datei."

Sie haben Recht, dass es aufgrund der Art und Weise, wie NewTick-Ereignisse behandelt werden, zu fehlenden Kursen kommen kann, aber der Code ist schnell genug, um diese Möglichkeit sehr gering (fast Null) zu halten. Wenn fehlende Ticks häufiger auftreten, als ich dachte (was die Aussagekraft der Analyse beeinträchtigen kann), dann ist Ontick() fehlerhaft, nicht mein Code.

und zu dem Satz "... speichert alle Tick-by-Tick-Daten von Ask- und Bid-Kursen in einer txt-Datei.", hatte ich das schon vor langer Zeit bemerkt und geändert :) es gibt kein "all" mehr, aber im Forum ist es gleich geblieben - tut mir leid, dass ich keine Möglichkeit habe, es zu ändern, ich würde gerne die Kommentare neu bearbeiten, aber das ist bei diesem Satz unmöglich :(

 
erdogenes:

Sie haben Recht, dass es aufgrund der Art und Weise der NewTick-Ereignisbehandlung zu fehlenden Kursen kommen kann, aber der Code ist schnell genug, um diese Möglichkeit sehr klein (fast Null) zu machen. Wenn fehlende Ticks häufiger auftreten, als ich dachte (was die Aussagekraft der Analyse beeinträchtigen kann), dann ist Ontick() fehlerhaft, nicht mein Code.

und zu dem Satz "... speichert alle Tick-by-Tick Daten von Ask- und Bid-Kursen in einer txt-Datei.", ich hatte das schon vor langer Zeit bemerkt und geändert :) es gibt kein "all" mehr, aber im Forum ist es gleich geblieben - tut mir leid, dass ich keine Möglichkeit habe, das zu ändern, ich würde gerne die Kommentare neu editieren, aber das ist bei diesem Satz unmöglich :(

Es ist kein Bug, es funktioniert einfach so ... wenn OnTick() läuft, wenn ein neuer Tick eintrifft, wird der neue Tick ignoriert ...

NewTick

Das NewTick-Ereignis wird generiert, wenn es neue Kurse gibt, es wird von OnTick() der angeschlossenen Expert Advisors verarbeitet. Falls die OnTick-Funktion für den vorherigen Kurs verarbeitet wird, wenn ein neuer Kurs empfangen wird, wird der neue Kurs von einem Expert Advisor ignoriert, da das entsprechende Ereignis nicht in die Warteschlange gestellt wird.

Alle neuen Kurse, die empfangen werden, während das Programm läuft, werden ignoriert, bis die Funktion OnTick() abgeschlossen ist. Danach wird die Funktion nur noch ausgeführt, wenn ein neuer Kurs empfangen wird.

. haben Sie getestet, wie viele Ticks Sie normalerweise verpassen?

 
RaptorUK:

Es ist kein Fehler, es ist nur, wie es funktioniert ... wenn OnTick() läuft, wenn ein neuer Tick eintrifft, wird der neue Tick ignoriert ...

Ich bin verwirrt, also denkst du, dass es die Art und Weise ist, wie ein neuer Tick gehandhabt wird und ich auch:)

erdogenes:

Du hast recht, es besteht die Möglichkeit, dass aufgrund der Art der NewTick-Ereignisbehandlung Anführungszeichen fehlen.

Vielleicht hast du das falsch verstanden: wenn fehlende Ticks eine signifikante Auswirkung auf die Analyse haben, dann ist ontick fehlerhaft, nicht normal (weil es der "new tick"-Ereignishandler ist, wenn es nicht genug verarbeiten kann, ist es fehlerhaft), aber ich glaube nicht, dass es nicht verarbeiten kann , ich glaube nicht, dass es fehlerhaft ist.

RaptorUK:

. . haben Sie getestet, um zu sehen, wie viele Ticks Sie normalerweise verpassen?

Ich weiß nicht, über fehlende Ticks, ich erhalte, was Programm erhält, wie kann ich es berechnen? oder kann es irgendwie berechnet werden?, Ich kann nicht wissen, wie viele Ticks, die Ontick verpassen in einem Tag (ich bin nicht die Entwicklung mql5). Ich kann nicht für MetaQuotes sprechen. Ich habe keinen direkten Zugang zu einem Handelsserver, um die Feeds zu vergleichen. Ich kann es nicht für ein Programm berechnen, es wird sich nicht ändern, wenn das Programm mir gehört, ich kann nur statistisch sprechen.

Für Sie habe ich ein Beispiel mit HF-Datenverarbeitung bearbeitet. Ich erhalte die Rate der Tick-Ankünfte in der gleichen Millisekunde mit den Interbankenkursen 27.01.2011- Programm für die Berechnung ist Gretl, Codes, die Sie verwenden können und Daten werden per PM gesendet (ich kann nicht teilen, dass Daten öffentlich sorry). das Ergebnis ist ~0,003 (es ist die Rate der Ankünfte in der gleichen Millisekunde und es war ein aktiver Tag).

Nehmen wir an, dass die Daten im MT5 verarbeitet werden und (absurderweise) dass alle (~0,003) fehlen. Verliert ein Signal, das zufällig mit einer Rate von ~0,003 resapmled wurde, an Signifikanz? Meine Antwort ist nein. Wir verwenden Resampling mit höheren Raten bereits in der Analyse.

Natürlich war das nur hypothetisch und nicht von einem Broker, aber ich hoffe, Sie verstehen meinen Standpunkt. Und noch einmal: Ich habe nicht die Möglichkeit, die tatsächliche Anzahl der fehlenden Ticks zu ermitteln.

Und noch etwas: Wenn es die "no queue"-Politik des NewTick-Event-Handlers ist, die die fehlenden Ticks verursacht (und das ist sie), dann denke ich, dass die Anzahl der fehlenden Ticks auch von der Geschwindigkeit Ihrer Hardware abhängen kann. Dann kann es nicht als ein Standartwert berechnet werden.

(Ich habe den Kommentar neu editiert: Ich habe den Code, den ich dir geschickt habe, korrigiert, er war fehlerhaft, das wirkliche Ergebnis ist ~0.003 der Code liegt bei)

Dateien:
codes.zip  1 kb
 
erdogenes:

Ich bin verwirrt, so dass Sie denken, es ist die Art und Weise der newtick Handhabung und ich auch:)

Vielleicht haben Sie missverstanden: wenn fehlende Ticks eine signifikante Auswirkung auf die Analyse hat, dann ist ontick fehlerhaft, nicht normal (weil es der "new tick"-Ereignishandler ist, wenn es nicht genug verarbeiten kann, ist es fehlerhaft), aber ich denke nicht, dass es nicht verarbeiten kann, ich denke nicht, dass es fehlerhaft ist.

Ich weiß nicht, über fehlende Ticks, ich erhalte, was Programm erhält, wie kann ich es berechnen? oder kann es irgendwie berechnet werden?, ich kann nicht wissen, wie viele Ticks, die Ontick in einem Tag verpassen (ich bin nicht mql5 Entwicklung).

Ja, Sie können ... Sie können die Ticks zählen, wie Sie sie für den aktuellen Balken sehen, und den Wert des Tick-Volumens für den aktuellen Balken überprüfen, wenn Ihre Zählung und das Tick-Volumen nicht übereinstimmen, dann haben Sie einen oder mehrere Ticks verpasst ...