|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Problem bei Zeitfunktion
Guten Abend,
ich bin fast komplett neu auf dem Gebiet (ein paar Basics in C++) und würde mich freuen wenn mir jemand weiterhelfen kann. Folgendes Problem: Ich möchte ein EA programmieren, der alle 45 im 1h chart den RSI abruft und überprüft, ob dieser über 70 ist. Sollte das zutreffen, soll er nach 20 Minunten überprüfen, ob der RSI größer bzw kleiner als der Wert vor 30 Minuten ist. Ist der RSI also gesunken, wird ein Trade eröffnet, wenn nicht, überprüft er so lange, bis das zutrift. (Also sollte der RSI über 70 gehen, wird auf jeden Fall ein Trade eröffnet, aber eben erst dann, wenn dieser wieder damit beginnt abzufallen) Ich bräuchte nur ein paar Denkanstöße wie ich das Problem angehe, weil ich mit if - schleifen leider nicht weit komme. Und kann ich die eventsettimer() und ontimer() Funktionen belieben oft im code benutzen, solange ich sie danach schließe? lg |
|
|||
Nachdem du offensichtlich Zeitintervalle unabhängig vom aktuellen Timeframe benötigst, brauchst du einen Timer der das erledigt. Soweit richtig erkannt!
Du kannst allerdings pro Indi/EA nur einen Timer aktivieren. Ist weiters kein Problem, denn was der auslöst, kannst ja du festlegen. Benötigst du einen Timer der alle 45 min die OnTimer() aktiviert, definierst du in der Oninit(): EventSetTimer(60*45) und on Timer() wird alle 45 min aktiviert. Nachdem du aber verschiedene Zeitintervalle benötigst, musst du den Timer auf schneller stellen. zb auf 10 min. EventSetTimer(600) = 60sec*10 = alle 10 min. In der OnTimer() musst du dann unterscheiden, zb mit TimeCurrent(), oder einem Zähler, was du jetzt machen willst. Ich hoffe das bringt dich weiter |
|
|||
Also kann ich während das Programm läuft, die Zeiteinstellung von dem Timer ändern?
|
|
|||
Nö, aber Du könntest - wie ja bereits vorgeschlagen - eine Zählvariable einbauen. Wenn die Schleife z.B. alle fünf Minuten läuft, und die Zählvariable ohne Rest durch 9 teilbar ist, sind 45 Minuten rum - wenn denn tatsächlich alle 45 Minuten gemeint war. Wenn es eher jeweils xx:45 Uhr sein soll, könntest Du mit TimeMinute(TimeLocal()) bzw. TimeMinute(TimeCurrent()) die Minute der aktuellen Uhrzeit des Rechners bzw. des Servers gegen 45 prüfen.
__________________
Broker Rabatte |
|
|||
Zitat:
Code:
extern int Timer = 5; //Angabe in Sekunden oder in Millisekunden ... int OnInit() { ... EventSetTimer(Timer); //bei Verwendung der Sekunden //oder EventSetMillisecondTimer(Time) //bei Verwendung der Millisekunden } void OnDeinit(const int reason) { ... EventKillTimer(); } void OnTimer() { ... //Action! } Mittels Taste F7 die Eigenschaften des EAs aufrufen, Time-Wert ändern, Ok klicken - fertig!
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, programmierung mql4, timeframe, zeitfunktion, zeitintervall |
|
|