Testen von 'CopyTicks' - Seite 20

 

Wenn Nicht-Null Von innen CopyTicks ist für (wahrscheinlich binäre Suche) Ort zu starten - Index in der internen Basis suchen.

Bitte fügen Sie eine Funktion hinzu, die den Index in der Datenbank nach Zeit zurückgibt. Dann wird diese Aufgabe optimal gelöst werden können

fxsaber:
Was ist der optimale (schnellste) Algorithmus, um die Ticks von_Zeit bis_Zeit zu erhalten?
 

Aus gutem Grund wurde das Thema "Was ist eine Zecke?" gelöscht. Ich werde einige meiner Antworten aus der überlieferten Geschichte wiedergeben

В парадигме MT тик - это то, что пришло от биржи. Единица стрима(-ов). Поэтому два подряд идущих тика могут полностью совпадать (MqlTick), но при этом не обозначать одно и то же событие. Помимо MqlTick-данных есть еще номер тика, который не показывается в MT. И есть MT-нюанс с тиками, когда сама история тиков переписывается задним числом из-за нескольких источников получения тиков.

Zwei Ticks hintereinander (die ein Tick/Calculate-Ereignis auslösen) können in der Struktur MqlTick identisch sein (alle Preise und Volumina sowie Zeit und Flags sind gleich), aber tatsächlich unterschiedlich sein. Bid/Ask ist immer ein Vielfaches von TickSize. Last (nicht an der Börse) kann kein Vielfaches von TickSize sein. TickSize kann um ein Vielfaches größer sein als Point (siehe z.B. RTS). Es ist also nicht ganz richtig, in diesem Fall von Punkt zu sprechen.

Das kann nützlich sein. SymbolInfoTick ist eine unsynchronisierte Funktion. Das bedeutet, dass es an verschiedenen Stellen von OnTick unterschiedliche Ticks zurückgeben kann. Und selbst wenn Sie SymbolInfoTick zu Beginn von OnTick aufrufen, ist der resultierende Tick nicht der Auslöser des Tick-Ereignisses, für das OnTick ausgelöst wird. Die Felder seiner MqlTick-Struktur werden nicht mit dem Tick übereinstimmen, der von der Börse kam, da diese Felder vom Terminal selbst synthetisiert werden und den Marketwatch-Werten entsprechen.

 
Warum sind die INFO-Typen im Forex-Tester nicht die gleichen wie die ALL-Typen?
 
Ausführen des Expert Advisors im Strategy Tester
void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Ticks[1];
    
    if (SymbolInfoTick(_Symbol, Ticks[0]))  
      Print(CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, Ticks[0].time_msc + 1)); // Сколько тиков со временем больше последнего
    FirstRun = false;
  }
}

Ergebnis

2016.10.15 13:23:57.689 2016.10.12 00:00:16   1

Sollte Null zurückgeben, gibt aber Eins zurück. Ticks[] ändert sich nicht. Käfer!

 
fxsaber:
Starten eines Expert Advisors im Strategy Tester
void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Ticks[1];
    
    if (SymbolInfoTick(_Symbol, Ticks[0]))  
      Print(CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, Ticks[0].time_msc + 1)); // Сколько тиков со временем больше последнего
    FirstRun = false;
  }
}

Ergebnis

2016.10.15 13:23:57.689 2016.10.12 00:00:16   1

Es sollte null zurückgeben, aber es gibt eins zurück. In diesem Fall ändert sich Ticks[] nicht. Käfer!

Könnte es am Wochenende liegen?

Aus der Hilfe. CopyTicks Die Funktion ruft das ticks_array der Ticks ab, die das Terminal während der aktuellen Arbeitssitzung gesammelt hat.

 
Alexey Volchanskiy:

Könnte es am Wochenende liegen?

Aus der Hilfedatei. CopyTicks Die Funktion überträgt die vom Terminal während der aktuellen Arbeitssitzung gesammelten Ticks in das Array ticks_array.

Es gibt einen Fehler im Testgerät.
 

CopyTicks Leistungsproblem.

Robo

Network 'xxx': authorized on RoboForexEU-MetaTrader 5 through Europe #1 (ping: 56.66 ms)

BCS

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 45.53 ms)



Dies sind die Daten des Tick-Indikators. In beiden Fällen werden 2-3 Tausend Zecken hochgeladen. Aber bei Robo ist es um mehr als eine Größenordnung schneller.

Ich habe die gleichen Geschwindigkeiten im Devisenhandel tagsüber gesehen - der Markt war damals agiler. Copitix scheint die aktive Marktbeobachtung zu verlangsamen.

Das einzige Diagramm und der einzige Indikator in beiden Fällen. Und kopitix hatte definitiv bereits Zitate in die Datenbank/den Cache hochgeladen.

 

1) waren die Stapel auf beiden?

2) Wurden die Handels-/Info-Zecken in ihren ursprünglichen Threads getrennt? Komplexe Fäden erfordern Neuberechnung und einfache Ausgabe

3) Wie lautete der eigentliche Antrag?

4) Durch wie viele Abfragen wurden die Ergebnisse validiert? Befolgung und genaue Befolgung der Testregeln: Berücksichtigung des Kaltstarts, Verwerfen von Ausreißern, Wiederholbarkeit der Ergebnisse pro Serie, Code für die Reproduktion.

Im Allgemeinen sollte den numerischen Ergebnissen ein genauer Code vorangestellt werden, damit jeder sie wiederholen kann. Andernfalls ist es sinnlos, darüber zu diskutieren.

 
Renat Fatkhullin:

1) waren die Stapel auf beiden?

2) Wurden die Handels-/Info-Zecken in ihren ursprünglichen Threads getrennt? Komplexe Fäden erfordern Neuberechnung und einfache Ausgabe

3) Wie lautete der eigentliche Antrag?

4) Durch wie viele Abfragen wurden die Ergebnisse validiert? Befolgung und genaue Befolgung der Testregeln: Berücksichtigung des Kaltstarts, Verwerfen von Ausreißern, Wiederholbarkeit der Ergebnisse pro Serie, Code für die Reproduktion.

Im Allgemeinen sollte den numerischen Ergebnissen ein genauer Code vorangestellt werden, damit jeder sie wiederholen kann. Ansonsten ist es sinnlos, darüber zu diskutieren.

Ich habe Ihnen einen Link zu dem genauen Code gegeben.

  1. Es gab keine Becher.
  2. Nur INFO-Typen.
  3. COPY_TICKS_INFO mit from > 0.
  4. Siehe die Anzeige unter dem Link in Betrieb. Die Reproduzierbarkeit ist vollständig. Kaltstart ausgeschlossen. Emissionen ähnlich.
 

Wir werden das überprüfen.

Aber an dem Fehlen eines Bechers in einem der Server gibt es große Zweifel. Es spielt keine Rolle, dass der Becher nicht gerendert ist. Wenn ein Symbol diese Funktion hat, sind seine Daten immer vorhanden, und ein komplexerer Ausgabealgorithmus funktioniert bei der Abfrage von Ticks.

Grund der Beschwerde: