Maximale Länge eines Symbolnamens auf FOREX - Seite 8

 
fxsaber:

In der Tat, es ist ein Schlag ins Wasser. Da es möglich ist, nicht darauf zu warten, dass ein Handel verfolgt wird. Die einzige nicht-alternative onTradeTransaction ist, wenn der Auftrag abgelehnt wird. Zum Beispiel, wenn nicht genug Geld vorhanden ist.


Es stellt sich heraus, dass wir hundert Async-Transaktionen gemacht haben, die das Array (die Liste) mit entsprechenden Magiern und Anforderern füllen. Sobald OnTradeTransaction die Antwort auf die Anfrage erhalten hat, wird das Element aus der Liste entfernt. Sobald wir die Hervorhebung eines Majics aus der Liste der Lebenden/Toten sahen, haben wir den Eintrag entfernt. Auf diese Weise wird die Kontrolle mehr oder weniger erreicht. Haben Sie es richtig verstanden?


Sie können auch andere Felder - SL/TP, Kommentar - anstelle von magic verwenden.

Ja, genau so ist es. OnTradeTransaction wird nie deaktiviert, es wird lediglich die Prüffunktion periodisch aufgerufen (wenn OnTradeTransaction nicht ausgelöst wird). Sobald alles mit dem Auftrag erfasst ist, werden die Flaggen zurückgesetzt.

Wie kann ich den Kommentar als SL/TP verwenden?

 
fxsaber:

Warum warten, wenn Sie jeden On-stream überprüfen können?

Denn in meinen Strategien kommt es darauf an, was in der OnTradeTransaction kam.

Ich benutze On-puke nicht :)

Hinzugefügt

Wenn das Ereignis inOnTradeTransaction eintrat, wird alles zurückgesetzt, so dass es keine Probleme gibt.

 
prostotrader:

Wie kann man den Kommentar ronyatno verwenden, aber als SL/TP?

Oben ergänzt...

Sie stellen den gefälschten SL ein, in dessen Wert die von Ihnen benötigten Informationen gespeichert sind. So habe ich zum Beispiel den Eröffnungskurs einer Position im MT4 gespeichert, der über einen Limiter geholt wurde.

 
prostotrader:

Denn in meinen Strategien ist es wichtig, was genau in OnTradeTransaction kam.

Stellen Sie also sicher, dass Sie direkt in OnTradeTransaction nach Magie suchen. Ich würde es auf diese Weise machen.


Im Allgemeinen ist die Idee von Megics als Alternative zu Anfragen cool!

 
fxsaber:

Oben ergänzt...

Sie setzen einen gefälschten SL, in dessen Wert die von Ihnen benötigten Informationen gespeichert sind. So habe ich zum Beispiel den Eröffnungskurs einer Position in MT4 gespeichert, die über den Limiter gefüllt wurde.

Ist es möglich, SL zu setzen, wenn es keine Position gibt?

 
prostotrader:

Ist es möglich, SL freizulegen, wenn es keine Position gibt?

Bei Preisnachlässen ist dies möglicherweise nicht möglich. Ich handle schon seit langem nur noch mit Limit-Orders.

 
fxsaber:

Für die Märkte ist dies möglicherweise nicht möglich. Ich habe lange Zeit nur mit Limit-Orders gehandelt.

"Es ist ein bisschen seltsam, solche Informationen zu speichern. Nun, ja, das sollten Sie wissen.

Da mich der Devisenmarkt überhaupt nicht interessiert, sind 6 Symbole mit Symbolnamen und 65365 Tags auf einem Diagramm mehr als genug für meine Bedürfnisse,

Außerdem kann ich nur 2000 Transaktionen pro Handelstag durchführen.

 
prostotrader:

Da mich der Devisenmarkt überhaupt nicht interessiert, sind die 6 Zeichen des Symbolnamens und 65365 Zeichen auf einem Chart mehr als genug für meine Bedürfnisse,

Außerdem kann ich an einem Handelstag nur 2000 Transaktionen durchführen.

Es geht nicht um Devisen. Und dort die gleichen Probleme mit OnTradeTransaction. Daher eine universelle Lösung

#include <crc64.mqh> // https://www.mql5.com/en/blogs/post/683577

string GetMagicString()
{
  return(MQLInfoString(MQL_PROGRAM_PATH/*MQL_PROGRAM_NAME*/) + _Symbol + (string)ChartID()/* + (string)_Period*/);
}

// Формирует мэджик с изменяемой частью ReserveBits для прописывания туда Num-значения
ulong GetMagic( const int Num = 0, const int ReserveBits = 12 )
{
  uchar Bytes[];
  
  return((crc64(0, Bytes, (StringToCharArray(GetMagicString(), Bytes))) << ReserveBits) + (Num % (1 << ReserveBits)));
}

// Определяет, свой ли исходный мэджик с изменяемой частью ReserveBits
bool IsMyMagic( const ulong Magic, const int ReserveBits = 12 )
{
  return(GetMagic(0, ReserveBits) >> ReserveBits == Magic >> ReserveBits);
}

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  for (int i = 0; i < 10; i++)
  {
    PRINT(GetMagic(i));
    PRINT(IsMyMagic(GetMagic(i)));
  }
  
  PRINT(IsMyMagic(MathRand()));
}
 

Natürlich ist das Ereignismodell in diesem Fall ungünstig. Wenn Sie zum Beispiel Async-Operationen durchführen möchten, ohne die On-Funktion zu verlassen, und das Ergebnis erhalten möchten.

Jetzt ist es möglich, dieses Verhalten durch eine Krücke zu lösen.

  1. Wir schreiben einen Indikator (ohne Puffer und Eingangsvariablen) mit OnTradeTransaction, der alle Transaktionen an einen öffentlichen Ort schreibt (zum Beispiel in eine Ressource).
  2. Der Expert Advisor erstellt diesen Indikator über iCustom.
  3. An jedem Ausführungsplatz kann der Expert Advisor alle eingehenden Transaktionen einsehen, die der Indikator geschrieben hat.

Dies ermöglicht eine große Flexibilität.

Wir können zum Beispiel hundert Async-Befehle senden und auf ihre Ausführung warten, ohne aus der Tiefe zu kommen, und unseren Code weiter ausführen.


Wir sprechen hier natürlich von Anträgen. Und das Thema Magie hat damit nichts zu tun.


Obwohl es für Entwickler sinnvoll wäre, Transaktionen in ein öffentlich zugängliches Array zu schreiben. Ohne Indikator.

 
fxsaber:

Es geht nicht um Devisen. Und dort die gleichen Probleme mit OnTradeTransaction. Daher eine universelle Lösung.

Obwohl es möglich (und sogar besser) ist, auf bitweise Operationen zu verzichten - einfach crc64 + Num.
2018.08.25 22:10:48.913 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091272
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091273

Es gibt Zufälle...