Geschrieben 7. September 200916 Jr. comment_87028 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:) Melden
Geschrieben 8. September 200916 Jr. comment_87034 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. Melden
Geschrieben 8. September 200916 Jr. Autor comment_87035 ... 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 Melden
Geschrieben 8. September 200916 Jr. comment_87040 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 Melden
Geschrieben 8. September 200916 Jr. Autor comment_87051 Bingo! Das ist natürlich die Idee! 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 8. September 200916 Jr. von ronner Zitat gekürzt - bitte auf notwendige Länge achten. Melden
Geschrieben 8. September 200916 Jr. comment_87065 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 ;) Melden
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:)