MT5 und Geschwindigkeit in Aktion - Seite 6

 
A100:

Es wird vorgeschlagen, dass Sie wiederholt zurückkehren, bis Sie entweder die gesamte aktuelle Warteschlange oder eine bestimmte Anzahl von Ereignissen gelesen haben. Wenn die Handelsereignisse vorbei sind, kehrt ein Timer zurück und Sie haben Zugang zu allen Ereignissen auf einmal

Nun, ich werde etwas sagen... Natürlich, natürlich, IMHO, aber es ist eine Aufforderung, den Handler in einem separaten Thread laufen zu lassen. Also, nur mal laut gedacht...

Und wenn man es für sich selbst macht, stellt man alles nach außen und jeder Betreuer wird etwas Ähnliches sein:

void OnXXX{
 gOnXXXMutex.Lock();
 COnXXXOverlapped overlapped=new COnXXXOverlapped(<param_list>);
 gOnXXXOverlappedList.PushBack(overlapped);
 gOnXXXMutex.Unlock();
 DLLOnXXX(<param_list>,overlapped,&gOnXXXMutex);
}
 
A100:
es gibt eine elegantere Lösung, ohne OnTimer... denken Sie darüber nach

Überlegen Sie selbst, warum es nicht funktionieren würde.

 
fxsaber:

Überlegen Sie selbst, warum es nicht funktionieren würde.

Und es gibt keinen Grund zum Nachdenken - der Markt hat gerade geöffnet, ich habe es überprüft - alles funktioniert, bis zur Berechnung der Linie

if (наблюдаемая позиция закрылась по тейку)

Handelsereignisse sind in die Warteschlange aufgenommen worden und können gelesen werden

 
A100:

Und hier braucht man nicht zu denken - der Markt hat gerade geöffnet, ich habe nachgesehen - alles funktioniert, bis auf die Linie

Handelsereignisse sind in die Warteschlange aufgenommen worden und können gelesen werden

Tut mir leid, aber ich werde Ihnen nicht einmal erklären, was Sie unter einem ordnungsgemäßen Betrieb verstehen. Ich bin es leid, einfache Dinge buchstabieren zu müssen.

 
fxsaber:

Es tut mir leid, aber ich werde Ihnen nicht einmal erklären, was Sie unter einem ordnungsgemäßen Betrieb verstehen. Ich bin es leid, einfache Dinge erklären zu müssen.

Wenn Sie es nicht erklären wollen, erklären Sie es nicht. Ich habe Ihnen gerade gezeigt, dass das Hinzufügen von

bool HandleNextEvent (ENUM_EVENT_TYPE);

ändert sich nichts grundlegend

 
A100:

nicht grundlegend ändert

Das macht einen großen Unterschied. Es scheint nur sehr viel Zeit zu kosten (mit unbekanntem Ergebnis), um die Idee in vielen Köpfen zu verankern.

 
fxsaber:

Das macht einen großen Unterschied. Es scheint nur sehr viel Zeit zu kosten (mit unbekanntem Ergebnis), diese Idee in vielen Köpfen zu verankern.

Nicht viel, denn gemäß Einsteins Theorie der Einfachheit: "Wenn man es nicht einfach erklären kann, versteht man es selbst nicht".

 
A100:

Das müssen Sie auch nicht, denn gemäß Einsteins Theorie der Einfachheit gilt: "Wenn man es nicht einfach erklären kann, dann hat man es selbst nicht ganz verstanden."

Ja, du hast es nicht verstanden.

 
fxsaber:

Ja, es hat bei Ihnen nicht funktioniert.

Und ich habe nicht versucht, irgendetwas zu erklären - ich habe ein Beispiel gegeben und Ergebnisse erhalten:

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

MT5 und Geschwindigkeit in Aktion

A100, 2020.05.31 23:23

...Markt gerade geöffnet, ich überprüft - alles funktioniert, vor der Berechnung der Zeile

if (наблюдаемая позиция закрылась по тейку)

Handelsereignisse wurden in die Warteschlange aufgenommen und können gelesen werden

Es stellt sich heraus, dass Sie Handelsereignisse aus OnMain() lesen können. Sie haben etwas anderes behauptet
 
A100:

Ich habe nicht versucht, irgendetwas zu erklären - ich habe ein Beispiel gegeben und das Ergebnis erhalten:

Es stellte sich heraus, dass man Handelsereignisse aus OnMain() lesen kann. Sie haben das Gegenteil behauptet.

Sie haben nichts verstanden. Wenn wir zurückkehren, geben wir die On-Funktion der gebildeten Warteschlange ein. Dies kann eine Pause verursachen, die verhindert, dass der korrekte zweite Auftrag unmittelbar nach dem ersten Auftrag gesendet wird.

Sie schlagen vor, die Warteschlange zu akkumulieren, indem Sie alle On-Funktionen nach der Rückkehr speichern und auf die On-Funktion warten, in der eine Meldung über das Ende des ersten OrderSend enthalten ist. Und dann erst den zweiten OrderSend senden.

Gleichzeitig verstehen Sie nicht, dass die Take-Position während des ersten OrderSend ausgeführt werden kann, aber ihre OnTradeTransaction wird in der Warteschlange später sein (in der gleichen Mikrosekunde, aber später) als die abschließende OnTradeTransaction vom ersten OrderSend.