CopyTicksRange () funktioniert nicht korrekt in MQL5. a - Seite 4

 
Alexey Viktorov #:

Eine Zeile zurück zum Dialog:

Die Funktion sollte so funktionieren, wie es die Entwickler beabsichtigt haben, und nicht so, wie es die Benutzer wünschen. Der eine will das eine, der andere das andere, und der eine will Unsinn.

Das ist der Grund, warum die Entwickler nicht auf Sie reagieren. Und ich bin kein Anwalt, ich versuche, Ihnen eine einfache Wahrheit zu vermitteln: Belasten Sie nicht andere, wenn Sie es nicht selbst können. Sie hingegen haben das "Nicht......... nachgeben..." eingeschaltet und erfinden Mythen über Krücken.

Das ist wirklich ALLES! Die Entwickler werden Ihnen nicht antworten...machen Sie sich keine Hoffnungen.

Ich weiß, dass Sie das tun werden, also werde ich schreiben. Die Funktion muss so funktionieren, wie in der Dokumentation beschrieben, und nichts anderes. Wenn es Nuancen gibt, schreiben Sie sie in die Dokumentation und Sie werden keine Probleme haben.

Ich habe nicht den Sinn, Sie von irgendetwas zu überzeugen. Sie sollten die Entwickler besser über einfache Wahrheiten informieren. Ich bin mir sicher, dass Sie noch nie in einem Team von Programmierern gearbeitet haben - Sie sind ein typischer Autodidakt ohne eine solide Wissensbasis. Ich habe zwar schon an seriösen Projekten gearbeitet und sie geleitet, aber wir haben früher Leute gefeuert, weil sie mit banalen Wahrheiten kommuniziert haben, die nicht durch Erfahrung und Wissen gestützt waren. Ich brauche Sie nicht als Vermittler, um mit den Entwicklern zu kommunizieren. Vor etwa zwei Jahren erhielt ich von ihnen die Antwort: "Machen Sie Krücken, hier funktioniert alles". Ich hoffe, dass der Autor dieses Satzes bereits entlassen wurde, denn Programmierer sind nicht Gott und machen oft Fehler.

Wir hatten eine Stelle als Tester - Sie können sich gar nicht vorstellen, wie viele Fehler in ein paar Seiten Code von einem übermütigen und unerfahrenen Programmierer gefunden werden können.

 
RusPro #:

In Ihrem Beispiel funktioniert es, weil die Aufrufbedingungen anders sind - die Startzeit ist immer gleich dem Beginn des aktuellen Balkens (d.h. es ist bekannt, dass es Ticks gibt) und Sie lesen die gesamte Tick-Historie des letzten Balkens auf einmal.

Übrigens, eine meiner Krücken funktioniert ähnlich wie die Ihre. Außerdem ermittle ich zunächst die Zeit der vorhandenen Balken, unterteile sie dann in maximal kontinuierliche Segmente und ermittle die Ticks. Aber ein anderes Problem tritt auf - wenn es nicht genug Empfangsfeld für Daten gibt, ist die Wiederaufnahme ein Tamburintanz (über den ich oben gesprochen habe).

Außerdem ist die Arbeit mit dynamischen Arrays viel langsamer und man muss eine mögliche Speicherfragmentierung berücksichtigen.

Haben Sie alle Dokumente bis zum Ende gelesen?

Примечание

Функция CopyTicksRange() предназначена для запроса тиков из строго указанного диапазона, например, за конкретный день истории.

Und alles funktioniert schnell mit dynamischen Arrays.

Vergleichen Sie Ihren Ping und vergessen Sie die Geschwindigkeit von dyn. arrays :)

Es ist kein spezieller MMB-Kanal

Hinzugefügt von

Wenn Sie Geschwindigkeit brauchen, warum haben Sie sich dann auf BCS "gesetzt", diese U-Löcher begrenzen absichtlich die Geschwindigkeit der Standard FORTS login

von 30 Transaktionen pro Sekunde auf 10 Transaktionen pro Sekunde!

Hinzugefügt

Und es ist besser, in der Rubrik "Börsenhandel" zu schreiben

 
RusPro #:

Auf dem Devisenmarkt die gleichen Fehler. Alpari Broker, Testkonto. EURUSD-Symbol

Das benutzerdefinierte Symbol wurde auf der Grundlage von EURUSD erstellt, nur der Name ist geblieben

Wenn es um die Funktionsweise von CopyTicks im Strategy Tester geht, bin ich inkompetent, denn ich habe noch nie einen Tickverlauf im Strategy Tester angefordert.

Ich kann nur für den Kampfmodus sprechen.

 
prostotrader #:

Lesen Sie die Dokumente ganz durch?

Ja, ich lese die Funktionsbeschreibungen ganz durch, und wenn ich Zweifel habe, schaue ich auch in den Foren nach. Jeder hat eine andere Vorstellung von schnell. Dynamik ist per Definition langsamer, weil der Speicher ständig neu verteilt wird. Der zweite Nachteil ist die Fragmentierung - manchmal macht man einen Fehler mit der Dynamik und dann reicht der Speicher nicht aus, um das Terminal zu schließen :)))

Ping hat damit nichts zu tun, nach dem ersten Download werden die Ticks schon von der Basis vorgegeben, theoretisch natürlich :) Mir wurde beigebracht, dass das Programm durch Optimierung beschleunigt werden soll, aber nicht durch die Hardwarebasis - das ist automatisch. Und was macht es für einen Unterschied, was ist der Zusammenhang - heute ist es der eine, morgen ein anderer - es kommt nicht auf den Algorithmus an.

Ich habe meinen eigenen Makler, deshalb arbeite ich seit mehr als einem Jahr mit ihm zusammen. Meine Aufgabe ist es jetzt, die Mathematik auf Ticks zu testen, nicht auf Handel oder Freiberuflichkeit.

 
RusPro #:

Außerdem ist die Arbeit mit dynamischen Arrays viel langsamer und man muss eine mögliche Speicherfragmentierung berücksichtigen.

Bitte geben Sie Messungen für diese Aussage an. Ich achte sehr auf Leistungsprobleme bei Expert Advisors.

 
fxsaber #:

Wenn es um die CopyTicks-Operation im Tester geht, bin ich nicht kompetent, denn ich habe noch nie einen Tickverlauf im Tester angefordert.

Ich kann nur für den Kampfmodus sprechen.

Ich spreche nicht über den Tester, sondern über ein Demokonto. Denn es ist problematisch, Alpari an einem Wochenende in einem Live-Konto zu überprüfen.

 
RusPro #:

Ich meine nicht den Tester, ich meine das Demokonto. Der Tester, nicht der Tester, sondern das Demokonto.

Ja, wenn Sie nach Ticks in einem Intervall fragen, in dem es keine gab, gibt es nicht Null, sondern den ganzen Tag aus.

Ich habe das Gefühl, dass dies absichtlich geschieht. Aber ich weiß nicht, wofür.


Die Untersuchung hat ergeben, dass das Problem auftritt, wenn From den Zeitpunkt nach dem letzten Tick der Handelswoche trifft. Ich glaube, es ist ein Fehler.

Bei echten und benutzerdefinierten Symbolen verhält es sich identisch.


Wenn ich Ticks ab dem letzten Tick der vorherigen Anfrage anfordere, tritt das Problem natürlich nicht auf. Wenn Sie jedoch eine Anfrage mit SymbolInfoTick_time_msc stellen, kann der Fehler auftreten. Deshalb ist es besser, es noch nicht zu tun.

 

fxsaber #:

Wenn Sie jedoch eine Abfrage mit SymbolInfoTick_time_msc durchführen, kann der Fehler auftreten. Deshalb ist es besser, es noch nicht zu tun.

Wie oft wurde es getestet?

Wenn Sie SymbolInfoTick nicht mögen, verwenden Sie

int  CopyTicks( 
   string           symbol_name,           // имя символа 
   MqlTick&         ticks_array[],         // массив для приёма тиков 
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков 
   ulong            from=0,                // дата, начиная с которой запрашиваются тики 
   uint             count=0                // количество тиков, поставьте 1
   );
CopyTicks

von

[in] Datum, ab dem Zecken angefordert werden. Angegeben in Millisekunden seit dem 01.01.1970. Wenn der Parameter from=0 ist, wird die letzte Anzahl von Ticks übergeben .

 
Alexey Viktorov #:

Wie oft wurde dies überprüft?

Nicht wie SymbolInfoTick verwenden

Danke, ich kann gut mit Zecken arbeiten. Das macht die Existenz des Fehlers nicht ungültig.

 
Alexey Viktorov #:

Wie oft wurde dies überprüft?

Nicht wie SymbolInfoTick verwenden

es wurde zwei Jahre lang getestet!

Was für ein sturer Kerl! Lesen Sie, was oben geschrieben wurde - CopyTicks stört genau so. Wenn Sie gerne nach Wegen suchen, eine fehlerhafte Funktion zum Laufen zu bringen oder fehlerhafte Umgehungen zu finden, dann lassen Sie es lieber bleiben - darum geht es nicht