Tisch für alle Berufe. Zugriff über MQL5 - Seite 3

 
prostotrader:

Weiß jemand, wo der Fehler liegt?

Der Indikator arbeitet korrekt, aber es werden mehr Balken angezeigt,

als es vorgesehen war.

Ich habe mir den Code nicht angesehen, aber ich vermute, dass er nach jedem neuen Balken nicht berücksichtigt, dass die Indikatorlinien auch automatisch nach links verschoben werden (wenn man sich den Chart ansieht). Mit anderen Worten, es ist notwendig, die Indikatorlinien nach rechts zu verschieben (bei Betrachtung des Charts).
 
Karputov Vladimir:
Ich habe mir den Code nicht angesehen, aber ich vermute, dass nach dem Erscheinen jedes neuen Balkens nicht berücksichtigt wird, dass auch die Indikatorlinien automatisch nach links verschoben werden (wenn man sich den Chart ansieht). Mit anderen Worten: Wenn ein neuer Balken erscheint, verschieben Sie die Indikatorlinien nach rechts (beim Blick auf das Diagramm).
Danke, ich habe den Fehler gefunden.
Dateien:
DealsLent.mq5  10 kb
 
prostotrader:
Der letzte Schliff...

Es stellt sich heraus, dass dies nicht die letzte ....

Es bedarf noch einiger Optimierungen.

Ich werde es fertigstellen und testen...

 
Wenn dies der Fall ist, behalten Sie den Tick-Indikator - Open-Interest-Indikator (auf einem realen Konto, das mit der Börse verbunden ist).
Dateien:
 
Karputov Vladimir:
Wenn dies der Fall ist, behalten Sie den Tick-Indikator - Open-Interest-Indikator (auf einem realen Konto, das mit der Börse verbunden ist).
Ich freue mich, das zu hören.
 

Es wurde ein ernstes Problem entdeckt:

Doppelte Ticks mit unterschiedlicher start_time :(

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_ALL,start_time,0);

start_time unterschiedlich ist und die Ticks wiederholt kopiert werden, wenn

sie haben die gleiche Zeit

Ich werde sie morgen im Detail beschreiben.

Neueste Version

Dateien:
DealsLent.mq5  12 kb
 

Ich kann nicht schlafen, also dachte ich, ich schreibe mal auf, was so los ist.

(Der vollständige Code des Indikators befindet sich im obigen Beitrag).

Die Ticks von der Börse kommen nicht streng nach Zeitintervallen zum Terminal,

sondern in Blöcken (siehe Bildschirmfoto) Block 1, Block 2 usw.

Das Terminal "speichert" sie und zeigt sie in der Tabelle an, so wie es sie von der Börse erhält (Block für Block).

Inbeiden Blöcken können Transaktionen mit der gleichen Zeit stattfinden.

Wenn wir CopyTicks() NICHT in Echtzeit aufrufen (z. B. am nächsten Tag oder in wenigen Sekunden),

dann gibt die Funktion CopyTicks() die genauen Daten zurück.

In Echtzeit geschieht jedoch Folgendes:

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_ALL,start_time,0);

Wenn start_time = (23:49:58.114), erhalten wir Block 1 vollständig (rot eingekreist).

Dann warten wir auf die Zeitumstellung, um Block 2 (grün eingekreist) zu erhalten.

Um eine Verdoppelung von Block 1 zu vermeiden (OnBookEvent kann sehr schnell ausgelöst werden)

wir führen eine Überprüfung ein, um sicherzustellen, dass sich die Zeit geändert hat

if(start_time==ulong(ticks[copied-1].time_msc)) return;

Wenn start_time = (23:49:58.596), hätten wir Block 2 erhalten müssen,

aber die Funktion CopyTicks() liefert sowohl Block 2 als auch alle Ticks mit der Zeit (23:49:58.114),

wenn Block 2 mindestens einen Tick mit der gleichen Zeit hat (23:49:58.114).

Das ist eine sehr traurige Nachricht.... :(

Solange die Entwickler dies nicht beheben, ist es unmöglich, ein Real Time Tape von Trades zu erhalten.


 
prostotrader:


Und warum glauben Sie, dass Ticks von einer bestimmten Zeit und ZUKUNFT in die Geschichte heruntergeladen werden, wenn Sie nach Zeit abfragen? Bei der Abfrage von Ticks nach Zeit werden die Ticks von einer bestimmten Zeit in die ZUKUNFT heruntergeladen. Zum Beispiel:

Eingangsdaten (Abfrage 20000 Ticks), Uhrzeit 2016.08.25 20-00-00:

Anfrage 20.000 Ticks, Uhrzeit 2016.08.25 20-00-00:


Empfangen:

2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Получено тиков: 10823 код ошибки: 0
2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Тик: 2016.08.25 20:00:00 bid: 14377.0 ask: 0.0 last: 0.0 [0]
2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Тик: 2016.08.26 00:02:08 bid: 0.0 ask: 0.0 last: 0.0 [10822]
2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Size 0 Mb

Das heißt, die Ticks werden von der gewünschten Zeit2016.08.25 20:00:00 in Richtung ZUKUNFT empfangen (der letzte Tick hat die Zeit2016.08.26 00:02:08)

Dateien:
 
Karputov Vladimir:

Und warum glauben Sie, dass Ticks von einer bestimmten Zeit und FUTURE in die Historie heruntergeladen werden, wenn die Abfrage nach Zeit erfolgt? Bei der Abfrage von Ticks nach Zeit werden die Ticks von einer bestimmten Zeit in die ZUKUNFT heruntergeladen. Zum Beispiel:

Eingangsdaten (Abfrage 20000 Ticks), Uhrzeit 2016.08.25 20-00-00:



Empfangen:

Das heißt, die Ticks werden von der gewünschten Zeit2016.08.25 20:00:00 in Richtung FUTURE empfangen (der letzte Tick hat die Zeit2016.08.26 00:02:08)

Ich denke nicht in die Tiefe, ich sehe aus der Tiefe heraus das "Angetackerte".

Warum denken?

Führen Sie den Indikator aus und überzeugen Sie sich selbst!

Und lesen Sie überhaupt, was dort geschrieben steht?

Если мы вызываем CopyTicks() НЕ в реальном времени (скажкем, на следующий день),

то функция CopyTicks() будет возвращать точные данные.
 
Ich habe es eher zufällig bemerkt, als am Abend weniger Angebote vorhanden waren.
Grund der Beschwerde: