Testen von 'CopyTicks' - Seite 25

 
Oder haben Sie ihn vielleicht gefoltert? :)
 
prostotrader:
Oder haben Sie ihn vielleicht gefoltert? :)

Er ist es. Er hat es wirklich schwer. Das muss man ihm lassen - er verfällt zwar in einen Stupor, aber nur selten.

Ich habe einen schönen Tick-Indikator geschrieben. Ich bin zu faul, seltene Fehler zu beheben.

 
fxsaber:

Er ist es. Er hat es wirklich schwer. Das muss man ihm lassen - er verfällt zwar in einen Stupor, aber nur selten.

Ich habe einen schönen Tick-Indikator geschrieben. Ich bin zu faul, seltene Fehler zu beheben.

Gelingt es Ihnen, alle Zecken gleichmäßig und jedes Mal in Echtzeit in die Kerze einzupassen?

Hinzugefügt:

Im Modus COPY_TICKS_TRADE mit Volumenprüfung.

 
Alexey Kozitsyn:

Gelingt es Ihnen, alle Zecken gleichmäßig und jedes Mal in Echtzeit in die Kerze einzupassen?

Hinzugefügt:

Im Modus COPY_TICKS_TRADE mit Volumenprüfung.

Ich habe eine etwas andere. Wie "hat keine Analogien" und blah blah blah blah.

Ich glaube nicht, dass es an der Leistung liegt, denn es wird versprochen, dass sie sich im nächsten Build deutlich verbessert.

 
fxsaber:

Ich habe eine etwas andere. Wie "unvergleichlich" und blah, blah, blah.

Ich glaube nicht, dass es an der Leistung liegt, denn es wird versprochen, dass sie sich im nächsten Build deutlich verbessert.

Es geht nicht um Leistung... Es gibt Situationen wie diese, zum Beispiel jetzt:

Der Indikator sammelt Ticks und errechnet daraus das Volumen. Dann vergleicht es dieses Volumen mit volume[].

Und es gibt Fehler in verschiedenen Situationen:

Manchmal wird das Volumen der ersten Kerze des Tages falsch berechnet (stimmt nicht mit der Prüfung überein);

Manchmal wird das Volumen pro Tick korrekt berechnet, aber das Volumen liefert einen falschen Wert. 3;

3. Manchmal wird das Volumen pro Tick falsch berechnet, während das Volumen einen falschen Wert liefert;

Das Interessanteste ist, dass die Fehler 1, 2 oder 3 in der Historie auftauchen, wenn der Indikator neu kompiliert wird, der Fehler aber nicht verschwindet. Und bei einer Verbindung zu einem anderen Server verschwindet sie.

Kurzum, die Wunder sind noch nicht vorbei.

Wenn dieser Beitrag von Entwicklern gelesen wird und diese ihn verstehen wollen, verweisen Sie bitte auf "Service Desk", ich werde alle Quellen angeben.

 
Renat Fatkhullin:

So sollten Sie CopyTicks testen:

MqlTick ExtArr[2048];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   ulong from   =(TimeTradeServer()-1200)*1000;
   ulong ticks  =GetMicrosecondCount();
   int   records=CopyTicks(_Symbol,ExtArr,COPY_TICKS_INFO,from,2048);

   ticks=GetMicrosecondCount()-ticks;
   Print("Time: ",ticks," msc for ",records," records");
  }

Hier ist die Ausgabe in Mikrosekunden: 95 Mikrosekunden pro Stichprobe von 2048 INFO-Ticks für die letzten 20 Minuten

2016.10.18 14:15:38.673 TEST (USDCHF,M1)        Time: 95 msc for 1206 records
Das ist etwas ganz anderes als die von Ihnen behaupteten zehn Millisekunden. Das liegt daran, dass Sie die CopyTicks nicht gemessen haben.

Bremsen nach Börsenschluss

MqlTick ExtArr[2048];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   ulong from   =(TimeCurrent()-1200)*1000;
   ulong ticks  =GetMicrosecondCount();
   int   records=CopyTicks(_Symbol,ExtArr,COPY_TICKS_INFO,from,2048);

   ticks=GetMicrosecondCount()-ticks;
   Print("Time: ",ticks," msc for ",records," records");
  }

Ergebnis

2016.10.29 00:31:10.952 Test (GBPUSD,M1)        Time: 85 msc for 1333 records
2016.10.29 00:31:05.435 Test (EURCHF,M1)        Time: 15283 msc for 874 records
2016.10.29 00:31:03.960 Test (EURCHF,M1)        Time: 11629 msc for 874 records
2016.10.29 00:31:02.128 Test (EURCHF,M1)        Time: 10127 msc for 874 records
2016.10.29 00:31:00.332 Test (EURCHF,M1)        Time: 7318 msc for 874 records

2016.10.29 00:30:52.049 Test (EURUSD,M1)        Time: 51 msc for 862 records

Es mag den Anschein haben, dass dies nur für den EURCHF gilt. Aber sobald wir anfangen, Notierungen für EURUSD zu pumpen. Sobald das Skript für einige Dutzend Millisekunden auf EURSD läuft. Diese Verlangsamung hat nach Börsenschluss eingesetzt. Vor Börsenschluss ging alles viel schneller.

 

Liebe Entwickler! Das Problem mit CopyTicks() und insbesondere der Synchronisierung von Volumina auf einer Kerze (Stapelung aller Tick-Volumina einer Kerze in einer Kerze und Vergleich mit volume[] dieser Kerze). Er fährt fort.

Jetzt haben wir wieder 2 Fehler:

1. Stabiler Fehler der Lautstärkeregelung bei einer sich öffnenden Kerze (10.00). Ich teste mit RTS, SBRF, Si (alle bei -12,16). Fehler bei jedem dieser Symbole!

2. Wenn aus irgendeinem Grund ein Fehler bei der Volumenkontrolle auf der Kerze nach 10.00 Uhr in Echtzeit auftritt, wird derselbe Fehler auch in der Historie angezeigt. Aber! Wenn Sie den Server wechseln, verschwindet der Fehler in der Historie.

 

Beispiel zum vorherigen Beitrag (zu Fehler 2):

2016.10.31 12:13:43.699 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:05 пройден! Контрольная сумма = 3480 (1353+2127)
2016.10.31 12:13:43.699 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:06 пройден! Контрольная сумма = 4103 (2236+1867)
2016.10.31 12:13:43.699 (Si-12.16,M1)   VolumeControl: ОШИБКА на свече 2016.10.31 10:07! Сумма объемов на покупку = 1074, сумма объемов на продажу = 3917, контрольная сумма (покупки+продажи) = 5009
2016.10.31 12:13:43.699 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:08 пройден! Контрольная сумма = 3121 (1479+1642)
2016.10.31 12:13:43.699 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:09 пройден! Контрольная сумма = 3760 (1046+2714)

Dies war vor dem Serverwechsel. Und hier ist das Protokoll nach dem Serverwechsel:

2016.10.31 12:18:12.109 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:05 пройден! Контрольная сумма = 3480 (1353+2127)
2016.10.31 12:18:12.109 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:06 пройден! Контрольная сумма = 4103 (2236+1867)
2016.10.31 12:18:12.109 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:07 пройден! Контрольная сумма = 5009 (1082+3927)
2016.10.31 12:18:12.109 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:08 пройден! Контрольная сумма = 3121 (1479+1642)
2016.10.31 12:18:12.110 (Si-12.16,M1)   VolumeControl: Контроль свечи 2016.10.31 10:09 пройден! Контрольная сумма = 3760 (1046+2714)

Hier ist sie, die lokalisierte "BORDER"! Ich selbst zeichne hier keine Kontrolle, Werte in Klammern werden nicht angepasst, ich brauche es nicht. Es liegt jedoch ein Fehler vor, der durch einen Wechsel des Servers behoben werden kann!

Dies ist das Protokoll der Verlaufskontrolle (beim Starten des Indikators/Klicken auf die Schaltfläche "Aktualisieren").

 

Und nun Bemerkungen zu Fehler Nr. 1.

Einige Zeit nach der Markteröffnung (etwa 40 Minuten sind jetzt vergangen). Mit vollständiger Neuberechnung des Indikators - es gibt keinen Fehler bei der Kontrolle der Kerze um 10.00 Uhr! Auch ohne Umschalten des Servers. Es ist, als ob jemand zusätzliche Daten auf den Server hochgeladen hätte.

 

Eine weitere Bemerkung zu Fehler Nr. 2:

Если по какой-то причине возникает ошибка контроля объемов на свече после 10.00 в реальном времени, то эта же ошибка возникает и на истории. Однако! Если изменить сервер - ошибка на истории пропадает. 

Es scheint, dass die zuvor lokal empfangenen Ticks auf dem Rechner zwischengespeichert werden und erst nach einem Serverwechsel überschrieben werden. Das wäre in Ordnung, aber für den Fall, dass sie vollständig eingegangen sind! Aber wie sich herausstellt, häufen sich die Fehler in der Geschichte. Und die einzige Möglichkeit, sie loszuwerden, ist, den Handelsserver zu wechseln (zumindest kenne ich nur diesen Weg).
Grund der Beschwerde: