Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.224
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 15 Stunden
- Sundaytrad...
vor 22 Stunden
- TS_6
vor 3 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 375
Gesamt: 375
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 10.02.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 3
Alien befindet sich auf einem aufstrebenden Ast
Unhappy 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
  #2 (permalink)  
Alt 10.02.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Alle 45 was?
  #3 (permalink)  
Alt 11.02.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 3
Alien befindet sich auf einem aufstrebenden Ast
Standard

45 min sorry
  #4 (permalink)  
Alt 11.02.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

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
  #5 (permalink)  
Alt 11.02.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 3
Alien befindet sich auf einem aufstrebenden Ast
Standard

Also kann ich während das Programm läuft, die Zeiteinstellung von dem Timer ändern?
  #6 (permalink)  
Alt 11.02.17
Mitglied
 
Registriert seit: Jul 2012
Beiträge: 169
JJ-FX befindet sich auf einem aufstrebenden Ast
Standard

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
  #7 (permalink)  
Alt 11.02.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Alien Beitrag anzeigen
Also kann ich während das Programm läuft, die Zeiteinstellung von dem Timer ändern?
Ja natürlich geht das!

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.
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, timeframe, zeitfunktion, zeitintervall


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 10:00 Uhr.





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