Wodurch soll OnTradeTransaction() in mql4 ersetzt werden? - Seite 7

 
Alexey Viktorov:

In diesem Fall wäre es schwer, ohne die Bibliothek von Artem zu leben.

Wird die Bibliothek auf telepathischem Wege die benötigten Informationen erhalten? Es wird trotzdem 86400 Mal an den Bestellungen rütteln.

 
Igor Makanu:

was ist mit "nicht zum Array hinzufügen" zu tun - ich meine das Löschen von Daten über fehlende Marktaufträge?

Aber um den Code nicht mit Berechnungen zu überfrachten, sollten wir zumindest ein EreignisflagOnTradeTransaction setzen, das ausgelöst wird, wenn eine Order aufgegeben oder zwangsweise geschlossen wird - Sie wissen ja, welche Art von Operation Sie durchführen wollen, nicht wahr? - Warum nicht die Maschine direkt darüber informieren? anstatt zu versuchen, die Maschine dazu zu bringen, alle Daten jeden Tick / oder alle 10 ms auszuführen


ZS: ein weiterer Thread mit einer Aufforderung zur Lösung eines Problems in Ermangelung einer Wissensbasis, nichts Persönliches, aber dies wird bereits zu einer regelmäßigen Erscheinung - egal wie man es betrachtet, man muss zusätzliches Material studieren, nur die Diskussion des Problems mit Gleichgesinnten ist nur die Diskussion des Problems mit Gleichgesinnten auf dem gleichen Wissensstand ((((

Mit "nicht zum Array hinzufügen"... Es gibt zwar keine ArrayRemove()-Funktion in mql4, aber ihr Prinzip basiert auf dem Kopieren eines Arrays in sich selbst mit weiterer Reduzierung der Größe um die Anzahl der gelöschten Indizes. Und anstelle von OnTradeTRansaction() habe ich in diesem Thread wiederholt gesagt, dass es keine Alternative zu Artems Bibliothek gibt und nicht erwartet wird.
 
Igor Makanu:

Ich sollte zumindest ein Flag für dasOnTradeTransaction-Ereignis erstellen, das gesetzt wird, wenn eine Order aufgegeben oder zwangsweise geschlossen wird

Ich habe darüber nachgedacht, aber verschiedene EAs haben unterschiedliche Funktionen und niemand wird sie kombinieren.

 
Aleksandr Volotko:

Wird die Bibliothek auf telepathischem Wege die benötigten Informationen erhalten? Es wird 86400 Mal einfach so Bestellungen ausschütteln.

Sie können dies im Diskussionsthread zu diesem Artikel nachlesen. Und ich bin nicht derjenige, der darauf antworten wird. Ich habe nur versucht, es zu benutzen... Und fangen Sie damit an, die Beiträge von Artem erneut zu lesen. Achten Sie auf diese Nachricht.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wie ersetzt man OnTradeTransaction() in mql4?

Eigenschaften von Aufträgen und Positionen. Das Symbol wird in der Summe der Zeichencodes kodiert, aus denen sich sein Name zusammensetzt. Aber dann nur bei vollem Zyklus. Wenn die Hash-Summe geändert wird - sehen Sie, was passiert ist.


 
Aleksandr Volotko:

Ja, ich habe darüber nachgedacht, aber verschiedene EAs haben unterschiedliche Funktionen und niemand wird sie kombinieren, man kann ein Datei-Flag in Sammon schreiben, ich werde das vielleicht sogar tun, warum nicht nach einer Alternative suchen?

Hier ist eine Alternativehttps://www.mql5.com/ru/docs/standardlibrary/datastructures

oder das Material aus Artems Artikeln verwenden, die sich jedoch weiterhin auf SB "Data Collections" stützen werden


Egal wie man es betrachtet, aber das neue Material muss studiert werden, um zumindest die Fähigkeiten von MQL zu verstehen, und nur in einem 10 Jahre alten Array zu sitzen und die Analysezeit zu reduzieren OrderTotal() .... wird das aktuelle Problem nicht lösen und neue Probleme in der Zukunft sowieso nicht


Wenn wir über mehrere EAs und Datenaustausch sprechen - Orderplatzierungsflagge, etc., dann gibt es keine universelle Lösung - es gibt viele Variationen zu diesem Thema; im Allgemeinen ist dies ein wunder Punkt für mich, ich habe eine Menge vorgefertigter Tools verwendet, aber keinen Erfolg gehabt, ich würde lieber einen DB-Server verwenden und Daten über ihn austauschen, es wird sicherlich zuverlässig und praktisch sein, leider haben MT-Entwickler dieses Problem seit vielen Jahren ignoriert, basierend auf ihrem Verständnis der Funktionalität, die von den Benutzern benötigt wird

 
Alexey Viktorov:

Das können Sie im Diskussionsstrang zu diesem Artikel nachlesen. Und ich bin nicht derjenige, der darauf antworten wird. Ich habe nur versucht, es zu benutzen... Und fangen Sie damit an, die Beiträge von Artem erneut zu lesen. Achten Sie auf diese Nachricht.

All dies führt zu einer Überschreitung des Auftragsvolumens, und das wollen Sie nicht 100500 Mal am Tag tun. Und es spielt keine Rolle - ich werde Aggregat Position Volumen in einer Schleife, oder die Bibliothek Hash-Summe der Reihenfolge Eigenschaften zählen.

 
Igor Makanu:

die Alternative isthttps://www.mql5.com/ru/docs/standardlibrary/datastructures

oder das Material aus den Artikeln von Artem verwenden, die übrigens immer noch auf "Datensammlungen" beruhen werden.


Egal wie man es betrachtet, aber das neue Material muss studiert werden, um zumindest die Fähigkeiten von MQL zu verstehen, und nur in einem 10 Jahre alten Array zu sitzen und die Analysezeit zu reduzieren OrderTotal() .... wird das aktuelle Problem nicht lösen und neue Probleme in der Zukunft sowieso nicht

Halten Sie mich nicht für völlig dumm, aber manchmal muss man mit dem arbeiten, was zur Verfügung steht, und das ist sehr wenig.

 
Vitaly Muzichenko:

Wie ist das?

StringToShortArray()
ShortArrayToString()
 
Artyom Trishkin:
StringToShortArray()
ShortArrayToString()

Ich bin wohl nicht schlau genug.)

Wie wende ich das an?

static __Total = -1;
int OT=OrdersTotal();
  if(OT!=__Total)
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __Total=OrdersTotal(); // запомним количество
   }

Ich habe nur ein Problem, und das ist sehr selten. Heute habe ich es zum ersten Mal seit ein paar Jahren wiedergefunden, vielleicht habe ich es schon einmal gesehen, ich habe es nur nicht bemerkt.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Wie ersetzt man OnTradeTransaction() in mql4?

Vitaly Muzichenko, 2020.01.27 15:32

Ich weiß es nicht, aber ich habe festgestellt, dass eine Position geschlossen und die andere auf einer anderen eröffnet wurde, und zwar fast zur gleichen Zeit zwischen den Ticks.

Am Ende blieb OrdersTotal() 8. Die Logik des Expert Advisors ist durcheinander geraten - er hat die neuen Daten nicht neu berechnet


 

Das ist es, die Lösung ist einfach: Führen Sie eine weitere Änderungsprüfung der Historie ein, so geht nichts verloren und es funktioniert zu 100%.

static __OTotal = -1;
static __HTotal = -1;
int OT=OrdersTotal();
int HT=OrdersHistoryTotal();
  if(OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __OTotal=OrdersTotal(); // запомним текущее количество
     __HTotal=OrdersHistoryTotal(); // запомним количество в истории
   }