Magic Mummer automatisch generieren

 

Hi,

Bevor ich  jedes mal mein EA starten will, muss ich leider  vorher bei allen Währungen die Magic Nummer manuell eingeben   :-( 


Weiß jemand vielleicht bitte wie ich diese automatisch generieren kann?

Danke sehr im Voraus :-)


Gruss

 
Für was, einen EA oder manuellem Handel, MT4 oder MT5?
 
Carl Schreiber:
Für was, einen EA oder manuellem Handel, MT4 oder MT5?
für einen von mir programmierten EA unter MT4.
 
  1. Du könntest aus dem Symbol eine Hash-Nummer erzeugen, Achtung bei Kollisionen und bei der Länge (muss int sein also -2 147 483 648 ... 2 147 483 647): https://www.mql5.com/en/code/277
  2. Das ginge eventuell auch: https://www.mql5.com/en/code/9808
  3. Index der Liste aus der Marktübersicht (Marketwatch) mit SymbolsTotal()), SymbolName SymbolsTotal()
  4. Mach eine Liste mit Deinen Symbolen und verwende den Index,
  5. Mach einen Zeichenkette Deiner Symbole ("EURUSD;EURCHF;..) und nimm den Index des Anfangsbuchstabens (StringFind(..) ).

Aaaber Fragen zu mt4 gehören in den Thread ganz unten! Alles andere ist für MT5.

Ich werde ihn später verschieben!

AutoMagiCal
AutoMagiCal
  • Stimmen: 5
  • 2010.07.21
  • Thomas
  • www.mql5.com
Auto Magic Nr. Calc The Magic Nr. per ASC II Code from Symbols
 
Ich benutze folgende Logik. Ein Integer hat 32 bit:

11111111111111111111111111111111 = 32 bit = 0xFFFFFFFF = uint 4294967295
                      1000000000 = 10 bit =     0x0200 = uint 512

Jede Strategie hat bei mir eine eindeutige ID, die bei 1 anfängt. Sie wird in den ersten 10 bit der MagicNumber gespeichert. Damit habe ich Platz für 512 verschiedene Strategien, das scheint für die nächsten Jahre "ausreichend" zu sein.

Die restlichen 22 Bit benutze ich für eine eindeutige Instanz-ID, die zur Laufzeit generiert wird. Diese ID ist unabhängig vom Symbol und ermöglicht mir 4.194.303 gleichzeitige Instanzen derselben Strategie, ein Limit, das ich wohl kaum erreichen werde.

Will ich eine neue ID generieren, schaue ich in der History nach der zuletzt verwendeten ID und zähle diese um eins hoch. Das bedeutet, daß sich die IDs nach 4 Millionen Instanzen wiederholen werden. Damit kann ich leben.

Mit dieser Methode kann ich über die MagicNumber einerseits schnell eine einzelne Instanz selektieren/ansprechen. Andererseits kann ich aber genauso schnell eine ganze Gruppe von Instanzen selektieren/ansprechen. Das ist von Vorteil, wenn ich z.B. von einer Strategie maximal 3 gleichzeitig auf beliebigen Symbolen laufen lassen möchte (Carl nennt das "Klumpenrisiko" :-)). Auch ist es hiermit möglich, mehrere Instanzen einer Strategie auf demselben Symbol laufen zu lassen, z.B. mit unterschiedlichen Parametern oder auf unterschiedlichen Timeframes.

Die Aufteilung 10 bit für Strategie und 22 bit für Instanz läßt sich nach Belieben verschieben. Man kann sogar noch weiter gehen und in 32 bit noch ganz andere Laufzeitdaten speichern (Grid-Level, hidden StopLoss-Level, etc). Sowas ist hilfreich, wenn man eine Strategie auf einer Maschine (Laptop im Cafe) startet und diese dann durch einen Expert auf einer anderen Maschine (dedicated Server oder VPS) übernehmen und managen lassen möchte.

Falls Interesse besteht, kann ich gern etwas Code posten.

 

Hallo,

ich mache es ganz einfach, in dem Bereich init folgendes:

  //DEFINITIONEN
  if( Symbol() == "EURNZD" ) { Magic = 100; evt. gleich noch die Einstellungen dazu .. }
  if( Symbol() == "GBPCHF" ) { Magic = 101; evt. gleich noch die Einstellungen dazu .. }
  if( Symbol() == "GBPCAD" ) { Magic = 102; evt. gleich noch die Einstellungen dazu .. }
...

So wird die Magic für jedes Symbol mit den Einstellungen geladen.