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

 
prostotrader:

Hier in meinem Code ist die Vermeidung von Duplikaten:

Nun, dann :) gibt es einen Verlust von Zecken in Ihrem Code.
 
Yury Kulikov:
Na dann :) gibt es einen Verlust von Zecken in Ihrem Code.

:) aber aus irgendeinem Grund sind sie überflüssig :)

Vielen Dank, Juri, ich werde mich darum kümmern.

 

In der Tat, beim Wechsel zu COPY_TICKS_TRADE - der Fehler der Ticks Mischen verschwunden, aber zur gleichen Zeit in COPY_TICKS_TRADE-Modus die Flaggen nicht empfangen werden können

  • TICK_FLAG_BUY - ein Tick ist als Ergebnis eines Kaufgeschäfts entstanden
  • TICK_FLAG_SELL - Tick ist als Ergebnis eines Verkaufsgeschäfts entstanden

 
Karputov Vladimir:

In der Tat, beim Wechsel zu COPY_TICKS_TRADE - der Fehler der Ticks Mischen verschwunden, aber zur gleichen Zeit in COPY_TICKS_TRADE-Modus die Flaggen nicht empfangen werden können

  • TICK_FLAG_BUY - ein Tick ist als Ergebnis eines Kaufgeschäfts entstanden
  • TICK_FLAG_SELL - Tick ist als Ergebnis eines Verkaufsgeschäfts entstanden

Flaggen kommen als Ergebnis eines echten Handels (ich teste es auf einem echten Konto)
 
Yury Kulikov:
Nun, dann :) gibt es einen Verlust von Zecken in Ihrem Code.

Juri, probieren Sie meinen Indikator aus (genau hinsehen)

Ich warte darauf, dass Zecken auftauchen, anstatt sie in der Historie zu beobachten.

Ich kopiere jedes Mal, bevor neue Zecken erscheinen.

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

"0" gibt an, wie viele Zecken wieder aufgetaucht sind.

Wenn copied = 0 ist, gibt es keine neuen Ticks.

Wenn wir diese "Unterstützung" entfernen.

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

dann gibt es auf jeden Fall eine Verdoppelung.

Die Aufgabe besteht nicht darin, die Tick-Historie zu betrachten, sondern den Tick-Feed in Echtzeit anzuzeigen.

 
prostotrader:
In der Realität werden die Flaggen eingeblendet (ich teste jetzt in der Realität)

Ja, das ist richtig. Ich bin mitCOPY_TICKS_INFO durcheinander gekommen.

Hinzugefügt:

Im Modus COPY_TICKS_ALL kommen die Häkchen jedoch teilweise in durcheinander gewürfelter Reihenfolge an.

 
prostotrader:

Juri, probieren Sie meinen Indikator aus (schauen Sie genau hin)

Es sind zu viele Buchstaben in Ihrem Code :)

Der Algorithmus ist einfach. In OnCalculate() schauen Sie sich das aktuelle Volumen an, wenn es sich geändert hat, dann laden Sie die letzten Ticks, merken Sie sich, wie viele Ticks im letzten Moment waren (der gleiche Wert time_msc), so dass der nächste Aufruf CopyTicks() diese Ticks von der Berechnung abschneidet.

 
Yury Kulikov:

Es sind zu viele Buchstaben in Ihrem Code :)

Der Algorithmus ist einfach. In OnCalculate() das tatsächliche Volumen betrachten, wenn es sich geändert hat, dann die letzten Ticks laden, sich merken, wie viele Ticks im letzten Moment waren (der gleiche Wert time_msc), um diese Ticks beim nächsten Aufruf von CopyTicks() von der Berechnung auszuschließen.

Danke, ich glaube, ich weiß, wie ich das Problem lösen kann...
 
Yury Kulikov:

Es sind zu viele Buchstaben in Ihrem Code :)

Der Algorithmus ist einfach. In OnCalculate () schauen Sie sich das aktuelle Volumen an, wenn es sich geändert hat, laden Sie die letzten Ticks herunter und erinnern sich, wie viele Ticks es im letzten Moment waren (der gleiche Wert time_msc), so dass der nächste Aufruf CopyTicks () diese Ticks von der Berechnung ausschließt.

Yuri, nochmals vielen Dank für die kompetente Beratung.

Ich habe alles getan und es funktioniert perfekt, aber seit mehr als 3 Stunden gibt es keine Situation, die

Ich habe es beschrieben :)

 

Na endlich, es hat geklappt!

Alles ist korrekt, und die Häkchen werden nicht mehr dupliziert oder gehen verloren.

Die Demo befindet sich in der ZIP-Datei, und wenn Sie es selbst überprüfen wollen, gibt es eine Debug-Version im Keller.

Dateien: