Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Expert-Advisors

Expert-Advisors Expert-Advisors für Metatrader 4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4499
Beiträge: 40861
Benutzer: 6.885
Aktive Benutzer: 242
Links: 80
Wir begrüßen unseren neuesten Benutzer: mann013
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 3 Stunden
- mann013
vor 23 Stunden
- schlafmuet...
vor 4 Tagen
- BodoM
vor 6 Tagen
- tisas
vor 6 Tagen
- slaw4ik

Onlineuser
'Wer ist online' anzeigen Benutzer: 4
Gäste: 119
Gesamt: 123
Team: 0
Team:  
Benutzer:  Indikator-Trading, LQK, SebastianPalmer, Stier
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By Indikator-Trading
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 7
viewer befindet sich auf einem aufstrebenden Ast
Standard EA richtig initialisieren

Hallo Forum Gemeinde,

kurz zur Erklärung meines Anliegens...

Ich habe mich in den letzten Wochen mit dem Programmieren von EAs eingearbeitet. Ich komme auch gut voran. Ich habe auch einen stromsparenden zweit Rechner, auf dem ich eine MT4 Instanz installiert habe, bei dem ich theoretisch den EA 24/7 laufen lassen kann. Das hat auch schon alles funktioniert.

Auf meinem normalen Rechner, auf dem ich eigentlich arbeite, habe ich natürlich auch ein MT4 installiert. Hier wollte ich mal schnell den EA ausprobieren, ohne den EA auf dem zweiten Rechner rüber zu kopieren. Im MT4 verwende ich unterschiedliche Profile, um auf die jeweiligen Charts zu wechseln. Also z.B. ein Profil für den DAX, SP500, EURUSD, usw. Ich habe meinen EA im DAX Profil angewendet und es hat alles gepasst. Dann habe ich in ein anderes Profil gewechselt und dann wieder zurück auf das DAX Profil, um nach dem EA zu schauen. Dann ist mir aufgefallen, dass der EA neu initialisiert wurde.

Ich habe im Internet geforscht und auch hier im Forum gelesen, dass dies so richtig ist. Weiter habe ich auch gelesen, man sollte Variablen eigentlich nicht in der OnInit() initialisieren, dann könnte man das Problem beheben. Das funktioniert bei mir aber nicht, weil ich einfach Initialisierungsroutinen für einige Module/Funktionen benötige.

Meine Frage hier an das Forum ist jetzt, wie man das richtig macht. Ich möchte also am aller liebsten, dass ich einen EA in den Chart ziehe, und der wird nicht mehr neu initialisiert. Es sei denn ich starte das MT4 neu. Ist das irgendwie möglich?

Eine erste alternative habe ich vermutlich schon gefunden. Ich könnte auf dem Rechner, auf dem ich normal arbeite, eine zweite MT4 Instanz installieren. Ich glaube, wenn man ohne Profile arbeitet (also nur mit den einzelnen Reitern im unteren Bildrand) dann könnte das so funktionieren. Aber das wäre für mich nur ein Workaround. Ich hätte es gerne richtig gemacht.

Kann mir hier jemand an dieser Stelle weiterhelfen bzw. einen Tipp geben? Es muss doch einen Weg geben, wie man einen EA im MT4 benutzen kann, ohne dass er ständig neu initialisiert wird?

Viele Grüße und ein schönes Wochenende 😊
Mit Zitat antworten
  #2 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 7
kw17 befindet sich auf einem aufstrebenden Ast
Standard

Deine Lösung ist ein Remote Desktop. Getrennt von Deinen Arbeits-Charts und highly available. für Demo Zwecke hab ich den billigsten bei cheap forex vps für 40€ jährlich gefunden. Der ist allerdings auch nervig langsam mit seinen (glaub ich) 700MHz. Für 100€ geht dann schon bissl was. Forex VPS Anbieter haben meist auch eine Liste, mit welcher Latenz sie den Server Deines Brokers erreichen.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 7
viewer befindet sich auf einem aufstrebenden Ast
Standard

Hallo kw17,

erst mal vielen Dank für Deine Antwort. Ich habe, wie ich geschrieben habe, derzeit einen älteren Rechner, der allerdings für 24/7 ausgelegt ist. Wenn ich mal zuverlässige EAs habe, werde ich mich auch mal über einen VPS Gedanken machen. Daher auch vielen Danke für Deinen hilfreicher Hinweis bezüglich „cheap forex vps“. Das sieht echt sehr interessant aus.

Es ist auch so, dass meine ersten EA Versuche auch gut auf meinem zweiten Rechner funktionieren bzw. besser gesagt, laufen (auf dem DEMO Konto). Mein größeres Anliegen ist jedoch, dass ich im Moment nicht weiß, ob ich meine EAs richtig programmiere. Wie ich geschildert habe, werden meine EAs immer wieder neu initialisiert, sobald ich die Profile im MT4 wechsle.

Ich habe es verstanden, dass man einen EA besser auf ein eigenes MT4 laufen lässt. Entweder auf einem eigenen zweiten Rechner oder sogar noch besser auf einem VPS. Aber ist es normal, dass ein EA im normalen MT4 Gebrauch nicht richtig funktioniert bzw. nicht verwendet werden sollte?

Mir wäre es wichtig zu wissen, ob jemand der EAs programmiert, einen EA so programmieren kann, dass er auch dann weiterläuft, wenn man die Profile wechselt? Oder ist es einfach so, dass EAs nur auf Systeme laufen sollten, bei denen am besten nichts geändert wird. Mit „nichts geändert“ meine ich, dass man den MT4 z.B. nicht im normalen Tagesbetrieb verwendet.

Ich hoffe es ist klar was ich meine...

Viele Grüße…
Mit Zitat antworten
  #4 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 7
kw17 befindet sich auf einem aufstrebenden Ast
Standard

Was Du Dir wünschst versteh ich zwar, allerdings ist es einerseits in der Praxis eher ungünstig und vom technischen Aufbau des MT nicht möglich. Der Chart malt ja nicht nur bunte Bilder. Er ist auch die Schnittstelle, welche die symbolspezifischen Daten zum EA durchleitet, zB Symbol() und PERIOD_CURRENT. Wenn Du am Chart was änderst, muss der EA also neu einlesen. Ein Chart mit EA darf deshalb nicht angefasst werden. Alle möglichen Abweichungen davon werden Dir ansonsten in den Optionen angezeigt. Registerkarte Live-Handel oder sowas.

Würde der EA bei Änderung von Chartparametern m Hintergrund weiterlaufen wie initialisiert, würde das auch im Chaos enden. Es reicht ja so schon, wenn auf zwei Charts EAs laufen und man noch auf 2-3 anderen was ausprobiert.
Mit Zitat antworten
  #5 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Aber ist es normal, dass ein EA im normalen MT4 Gebrauch nicht richtig funktioniert bzw. nicht verwendet werden sollte?
Ein gut programmierter EA läuft auch noch nach einem Absturz neu Neustart des MT weiter mit den offenen Positionen.
Da in den meisten EAs allerdings das Management der offenen Orders über lokal definierte Variablen im EA gelöst wird, werden diese noch offene Positionen im Markt nicht als ihre erkennen und auch nicht Managen.

Wenn dein EA also nicht läuft, dann liegt das nicht am MT4 sondern an der Programmierung vom EA.

Was du nicht machen solltest, ist vom einem Benutzerprofil zum anderen zu wechseln. Offene Orders aus deinem Demokonto kann dein Livekonto natürlich nicht kennen.

Zitat:
... technischen Aufbau des MT nicht möglich ... EA also neu einlesen Ein Chart mit EA darf deshalb nicht angefasst werden.
Leider nicht richtig. Ich habe einen EA der nur auf einem Chart ist (egal welches Symbol und egal welcher TimeFrame) und die Märkte mit den TF tradet, welche für den EA gerade einstellt sind.

Bei jeder Grundfunktion (SendOrder , OrderModify, iCustom, ....) wird immer auch das Symbol als Parameter mitgegeben. In einem einfachen EA tradest du ja immer das Symbol, auf welchem der EA gerade läuft. Dann übergibst du ja 'NULL', 'Symbol()' oder '_Symbol'. Natürlich kannst du da auch ein Symbol eines anderen Marktes übergeben, also "DAX30", "EURUSD" usw.
Das Gleiche gilt für Indikatoren und deren TimeFrames, welche du auch als Parameter übergibst. Im Simplen EA ist das häufig '0' oder Period(), was nichts anderes bedeutet, als das der Indikator auf dem aktuell eingestellten TimeFrame arbeiten soll. Definiere also dein Symbol und dein TimeFrame und stelle dein EA auf eine universelle Bearbeitung von beliebigen Symbolen ein.
Je nach Umfang von deinem EA ist das nicht wenig arbeit, aber durchaus machbar. Ich habe einen EA, welcher beliebig viele Forexmärkte auf diese Art handelt und auch nur einmal auf einen beliebigen Chart sitzen muss.

Und noch was:
Bid, Ask, Bars usw. darfst du natürlich nicht mehr nutzen. Im MT4 musst du dann alles nötige über MarketInfo() abfragen.

Ich habe den Start der Kontrolle meiner Positionen aus allen Märkten dann auch in eine TimerFunktion ausgelagert.
Typischerweise machen das ja alle in der OnTick()-Funktion, was ja solange ok ist, solange du nur das Symbol handeln willst, auf dem der EA gerade läuft. Für die universelle Anwendung eines EAs würde ich das aber nicht machen, da man nie weiß wann der nächste Tick mal kommt.

Das alles ist aber eher nichts für einen Anfänger im Programmieren, bei dem der EA sowieso noch nicht so richtig läuft.

Gruß Timo
kw17 likes this.
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 7
kw17 befindet sich auf einem aufstrebenden Ast
Standard

Ein weiterer Grund für die Neu-Initialisierung ist das Angebot grafischer Objekte, die an der Zeitleiste verankert sind.

Hab gerade mal in den MT5 Optionen geschaut. Dort stellt man nur die prinzipielle Deaktivierung des Algo-Handels bei Profil-, TimeFrame, etc. - Wechseln ein. Ich nehme an, dass der EA trotzdem, neu initialisiert wird.

@viewer Was Indikator-Trading schreibt, solltest Du Dir trotzdem anschauen. Es kann schließlich aus unterschiedlichsten Gründen passieren, dass der MT neu gestartet wird oder werden muss. MT Update, Windows-Update, VPS-VM-Restart, etc. Dann sollte er ja beim Neustart erkennen, wie die aktuelle Situation ist, um diese aufzunehmen. Stichwort Magic Number...

@Indikator-Trading Wenn Du die Signale anderer Kurse genauer brauchen solltest: Stichwort Spy Agent. Musst nur auf den RAM achten...
Mit Zitat antworten
  #7 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 7
viewer befindet sich auf einem aufstrebenden Ast
Standard

Hallo kw17 und Indikator-Trading,

erst mal recht herzlichen Dank das ihr euch die Zeit für mein Anliegen genommen habt. Das war genau das was ich wissen wollte.

@kw17:
Ich weiß jetzt, dass es normal bzw. sogar wichtig ist, dass ein EA neu initialisiert wird. So weiß ich jetzt, dass ich erst mal nichts falsch gemacht habe.

@Indikator-Trading:
Ich habe verstanden was Du meinst mit z.B. dem Order- Management. Der EA müsste beim Aufstarten erst mal die offenen Orders durchgehen und anhand der Magic ID weiß der EA dann auch welche Orders zu ihm gehören.

Was Du z.B. bei den Indikatoren angesprochen hast, hab ich auch schon realisiert. Ich habe z.B. einen EA der den 50er SMA benötigt. Dort verwenden ich dann auch “PERIOD_H1” so dass es egal ist, auf welchem Timeframe ich im Chart bin.

Interessant finde ich, was Du in der “TimerFunktion” machst. Ich habe z.B. einen EA der immer nur in einer neuen Minute ausgeführt wird. Dann wird eine state Machine aufgerufen welche eigentlich immer IDLE ist. Nur zu einem bestimmten Zeitpunkt (z.B. 12:34) werden ein paar Berechnungen durchgeführt und dann eventuell eine Oder ausgeführt. Die Order wird dann wiederum zu einer bestimmten Zeit (z.B. 32:10) wieder geschlossen. Das heißt der EA Code macht so gut wie gar nichts.
Ich habe mit die TimerFunktion schon mal angeschaut aber diese Funktion funktioniert ja leider nicht im Strategie-Tester und diesen brauche ich schon sehr oft. Daher habe ich diesen Ansatz mit der TimerFunktion wieder verworfen. Man könnte sich aber vielleicht überlegen ein “#define” zu verwenden, so dass der EA im Fall des Strategie-Testers dann doch die OnTick Funktion verwendet. (müsste man dann natürlich vorher setzen…)

Danke nochmals für eure Hilfe und noch einen schönen Abend
Marcel (,”)
Mit Zitat antworten
  #8 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Hallo Marcel,

schön wenn dich unsere Hilfe weiter bringt.

Zitat:
Interessant finde ich, was Du in der “TimerFunktion” machst. Ich habe z.B. einen EA der immer nur in einer neuen Minute ausgeführt wird
Die Timerfunktion ist kein muss, bzw. ob es Sinn mach das mit der Timerfunktion zu realisieren, hängt von den Märkten ab welche du traden willst. Hast du z.B. den EA auf den DAX gezogen und bei deinem Broker kommen ab 22 Uhr nur noch wenige / keine Ticks, dann kannst du die Abfrage der anderen Märkte nicht über die OnTick-Funktion realisieren, da ja sonst Forexmärkte, welche länger offen sind, nicht weiter behandelt werden würden.

Für einen EA,welcher nur auf dem Symbol läuft, auf den er gerade läuft, würde ich auch weiterhin die OnTickFunktion nehmen (in Kombination mit der Abfrage, ob gerade eine neue Kerze abgeschlossen worden ist)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
ea initialisieren

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 22:26 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2020 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------