Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

EA zeitgenau ausführen?

Geschrieben

Wenn ich das richtig sehe wird ein Metatrader-EA oder ein Indicator immer pro Tick-Signal des Brokers ausgeführt - stimmt das?

Kann ich einen EA auch öfter ausführen - oder dazu zwingen - also z.B. 10 mal pro Sekunde?

 

 

 

(das ist vermutlich nun keien Einsteigerfrage mehr - aber leider kann ich in die anderen Chapters nicht posten. Darum versuch ich es hier mal:)

Featured Replies

Geschrieben
Ja das ist richtig, die Start-Funktion wird immer nur dann aufgerufen, wenn der Chart auf dem der EA läuft neue Tickdaten bekommt. Es gibt keine Möglichkeit die start-Funktion öfter auszuführen, zumindest nicht auf normalen Weg. Mir fällt jetzt auch keine Möglichkeit ein, dass irgendwie durch Tricks dennoch hinzubekommen.
Geschrieben
  • Autor

... das habe ich befürchtet. Das ist dummerweise für den Handelsansatz, den ich gerade entwickle ein Killerkriterium. Weiss jemand, ob das in MT5 anders ist. Oder kennt jemand eine Software zum automatisierten Handel, die das anders handhabt. Amibroker?

 

grüsse Wingman

Geschrieben
Weiss jemand, ob das in MT5 anders ist.

 

Wenn ich die Infos von FinGeR richtig deute dürfte es in gewisser Weise in MT5 einfach möglich sein, aber es ist auch in MT4 relativ einfach machbar:

 

Du musst den Code nur ein bissl erweitern: benenn deine bisherige start() Funktion um in mystart() und mach eine neue start():

int start()
{
//----
 int stop_counter=0;
 
 while(!IsStopped( ) && IsExpertEnabled() && IsConnected())
 {
   if(!IsTradeAllowed())
   {
     stop_counter++;
     if(stop_counter > 60*(1000.0/interval)) // assume Market to be closed
       break;
   }
   else
     stop_counter= 0;
   
   RefreshRates();
   mystart();
   
   Sleep(interval);
 }
 
//----
  return(0);
}

 

Damit wird mystart() alle intervall/1000 Sekunden aufgerufen (+die Zeit die die Funktion braucht), jedesmal mit aktuellen Daten (deswegen RefreshRates() ).

Damit du den EA auch noch anhalten kannst und nicht jedesmal crashen musst damit du was ändern kannst (zB Parameter ändern) ist das "!IsStopped && IsEnabled" eingebaut. Also zum ändern von Parametern: EAs disablen -> Parameter ändern -> wieder enablen

 

Zu "IsTradeAllowed": Während du eine Order sendest, gibt diese Funktion false zurück, dein EA würde also nach jeder gesendeten Order abbrechen und erst beim nächsten Tick wieder in die Schleife einsteigen, deswegen der Buffer. Ist das Trading für 1 Minute durchgehend nicht erlaubt, wird angenommen das was nicht passt und er steigt aus (startet aber beim nächsten Tick wieder in die Schleife).

 

Darf man fragen welche Strategie du ca. verfolgst das du so zeitkritisch bist? *G*

 

HTH

Geschrieben
  • Autor

Bingo!

Das ist natürlich die Idee! :ph34r:

Das probiere ich aus. Momentan mache ich bei meiner Strategie nach jedem Tick ein paar Berechnungen, die ich VOR dem nächsten Tick aber anzeigen möchte bzw. auswerten muss. Ausserdem muss ich wissen welche Zeit nach einem Tick vergangen ist und zwar VOR dem nächsten Tick. Daher meine Frage. Ausserdem möchte ich die "Latenz" unterschiedlicher Broker messen, die evtl. für meine Strategie entscheidend sein könnte.

 

 

danke für die Lösung!!!

 

Du musst den Code nur ein bissl erweitern:

Bearbeitet von ronner
Zitat gekürzt - bitte auf notwendige Länge achten.

Geschrieben
Ausserdem muss ich wissen welche Zeit nach einem Tick vergangen ist und zwar VOR dem nächsten Tick.

Das wird MT intern eher schwierig da AFAIK nur Sekunden gemessen werden. Wenn die Ticks also in schnelleren Abständen als im Sekundentakt kommen, musst du dir eine externe (über dll) Zeitmessung überlegen ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.