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

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43784
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Like Tree6Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 11.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Standard Handelszeit in MT4 begrenzen - Vortageshoch/tief

Hallo zusammen,

ich bitte euch um einen Rat! Und zwar, ob es in MT4 möglich ist, das Vortageshoch bzw. Vortagestief in einem Zeitfenster von 8 Uhr bis 22 Uhr abzufragen und anzuzeigen. Könnt ihr mir bitte einen Tipp geben, mit welcher Funktion ich das anstelle? Mein Broker zeigt mir DAX rund um die Uhr. Mich interessieren aber nur die Handelszeiten von 8 Uhr bis 22 Uhr.

Ich habe zunächst an iHigh im Tageschart gedacht. Aber dort sind ja auch die Hochs und Tiefs in den Zeiten von 0 bis 8 Uhr und von 22 bis 24 Uhr vorhanden:
iHigh(Symbol(),PERIOD_D1,1)

Außerdem würde ich gern den Handel des EA nur auf den Zeitrahmen von 8 bis 22 Uhr begrenzen. Ich würde euch wirklich sehr dankbar sein, wenn mir jemand eine Idee gibt!
Danke schön!
  #2 (permalink)  
Alt 12.06.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Globale Variablen
Code:
extern string Open_Orders_From = "07:00:00";
extern string Open_Orders_Till = "21:15:00";
nach start
Code:
datetime TC = TimeCurrent();
datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_From);
datetime T = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Till);
Order-Bedingung
Code:
if...(TC>F && TC<T)...
markttechniker likes this.
  #3 (permalink)  
Alt 13.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Thumbs up

Zitat:
Zitat von MA-EA Beitrag anzeigen
Globale Variablen
Code:
extern string Open_Orders_From = "07:00:00";
extern string Open_Orders_Till = "21:15:00";
nach start
Code:
datetime TC = TimeCurrent();
datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_From);
datetime T = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Till);
Order-Bedingung
Code:
if...(TC>F && TC<T)...
Vielen vielen Dank!
  #4 (permalink)  
Alt 13.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Standard

Leute, bitte um Hilfe! Lässt sich dieser Code vielleicht so ändern, dass ich das Vortageshoch bzw. -tief NUR von 8 bis 22 Uhr angezeigt bekomme? Im Moment ist es ja so, dass wenn der Broker die Kurse rund um die Uhr stellt, dann wird das Vortageshoch bzw. -tief auch in der Zeit zw. 24 bis 8 Uhr angezeigt.. Danke für eure Tipps!

int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("LineHigh"+Symbol());
ObjectDelete("LineLow"+Symbol());
ObjectDelete("LineClose"+Symbol());

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
ObjectDelete ("LineHigh"+Symbol());
ObjectDelete ("LineLow"+Symbol());
ObjectDelete ("LineClose"+Symbol());

ObjectCreate ("LineHigh"+Symbol(), OBJ_HLINE, 0,0, iHigh(Symbol(),PERIOD_D1,1));
ObjectSet ("LineHigh"+Symbol(), OBJPROP_COLOR, High_Color);
ObjectSet ("LineHigh"+Symbol(), OBJPROP_WIDTH, High_Width);

ObjectCreate ("LineLow"+Symbol(), OBJ_HLINE, 0,0, iLow(Symbol(),PERIOD_D1,1));
ObjectSet ("LineLow"+Symbol(), OBJPROP_COLOR, Low_Color);
ObjectSet ("LineLow"+Symbol(), OBJPROP_WIDTH, Low_Width);

ObjectCreate ("LineClose"+Symbol(), OBJ_HLINE, 0,0, iClose(Symbol(),PERIOD_D1,1));
ObjectSet ("LineClose"+Symbol(), OBJPROP_COLOR, Close_Color);
ObjectSet ("LineClose"+Symbol(), OBJPROP_WIDTH, Close_Width);

//----
return(0);
}
  #5 (permalink)  
Alt 13.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von markttechniker Beitrag anzeigen
Leute, bitte um Hilfe! Lässt sich dieser Code vielleicht so ändern, dass ich das Vortageshoch bzw. -tief NUR von 8 bis 22 Uhr angezeigt bekomme? Im Moment ist es ja so, dass wenn der Broker die Kurse rund um die Uhr stellt, dann wird das Vortageshoch bzw. -tief auch in der Zeit zw. 24 bis 8 Uhr angezeigt.. Danke für eure Tipps!

int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("LineHigh"+Symbol());
ObjectDelete("LineLow"+Symbol());
ObjectDelete("LineClose"+Symbol());

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
ObjectDelete ("LineHigh"+Symbol());
ObjectDelete ("LineLow"+Symbol());
ObjectDelete ("LineClose"+Symbol());

ObjectCreate ("LineHigh"+Symbol(), OBJ_HLINE, 0,0, iHigh(Symbol(),PERIOD_D1,1));
ObjectSet ("LineHigh"+Symbol(), OBJPROP_COLOR, High_Color);
ObjectSet ("LineHigh"+Symbol(), OBJPROP_WIDTH, High_Width);

ObjectCreate ("LineLow"+Symbol(), OBJ_HLINE, 0,0, iLow(Symbol(),PERIOD_D1,1));
ObjectSet ("LineLow"+Symbol(), OBJPROP_COLOR, Low_Color);
ObjectSet ("LineLow"+Symbol(), OBJPROP_WIDTH, Low_Width);

ObjectCreate ("LineClose"+Symbol(), OBJ_HLINE, 0,0, iClose(Symbol(),PERIOD_D1,1));
ObjectSet ("LineClose"+Symbol(), OBJPROP_COLOR, Close_Color);
ObjectSet ("LineClose"+Symbol(), OBJPROP_WIDTH, Close_Width);

//----
return(0);
}
Wäre das vielleicht eine Lösung? --> iHighest(NULL,0,MODE_HIGH,15,10); Wenn man berücksichtigt, dass der Kurs rund um die Uhr gestellt wird, der Chart 1H ist und die Zählung um 8 Uhr anfängt. Gehe ich richtig in der Annahme, dass der Indikator in diesem Fall nur einmal und zwar um 8 Uhr ausgeführt werden darf?
  #6 (permalink)  
Alt 13.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
string TimeStart = "08:00";
string TimeEnd = "22:00";

if (OldBar != iTime(Symbol(), Period_D1, 0) {
   int candlestart = iBarShift(Symbol(), Period_M5, StrToTime(TimeStart) - 86400;
   int candleend = iBarShift(Symbol(), Period_M5, StrToTime(TimeEnd) - 86400;
   int candlehighest = iHighest(Symbol(), Period_M5, MODE_HIGH, candlestart-candleend, candleend);
   int candlelowest = iHighest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend);
   double high = iHigh(Symbol(), Period_M5, candlehighest);
   double low = iLow(Symbol(), Period_M5, candlelowest);
}
high und low werden nur einmal nach Tageswechsel berechnet. Durch Period_M5 ist die Berechnung auf Zeitangaben im minimal 5-Minuten-Takt beschränkt, ansonsten mit Period_M1 oder ggf. auch höheren Timeframe-Angaben.

traderdoc
ralfbenker likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #7 (permalink)  
Alt 13.06.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

Hallo traderdoc,

Dein Code gefällt zur Berechnung Vortageshoch/tief ist ja wieder mal genial einfach.
Hab mir da bei einer Xetra-Dax Berechnung des Vortageshochs/tiefs furchtbar einen abgebrochen.
Kurze Frage:
Was passiert Montags wenn z.B. Freitag 23:00 Uhr der letzte Kurs gestellt wird und Montags um 01:00 Uhr der erste Kurs (wie bei Admiral Markets)? Sind dann 86400 Sekunden auch 24 Stunden. Ich hatte bei meiner Berechnung immer Probleme mit Montagen und verkürzten Handelstagen.
Ich hab das über:
ArrayCopyRates(rates_m30,Symbol(),PERIOD_M30);
versucht
und dann den Zeitstempel des Arrays rates_m30[zaehler],[0] abgefragt.
  #8 (permalink)  
Alt 13.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich konnte leider mein eigenes Post nicht korrigieren.
Da fehlt vor der } folgende Zeile:

OldBar = iTime(Symbol(), Period_D1, 0);

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #9 (permalink)  
Alt 13.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ralfbenker Beitrag anzeigen
Hallo traderdoc,

Dein Code gefällt zur Berechnung Vortageshoch/tief ist ja wieder mal genial einfach.
Hab mir da bei einer Xetra-Dax Berechnung des Vortageshochs/tiefs furchtbar einen abgebrochen.
Kurze Frage:
Was passiert Montags wenn z.B. Freitag 23:00 Uhr der letzte Kurs gestellt wird und Montags um 01:00 Uhr der erste Kurs (wie bei Admiral Markets)? Sind dann 86400 Sekunden auch 24 Stunden. Ich hatte bei meiner Berechnung immer Probleme mit Montagen und verkürzten Handelstagen.
Ich hab das über:
ArrayCopyRates(rates_m30,Symbol(),PERIOD_M30);
versucht
und dann den Zeitstempel des Arrays rates_m30[zaehler],[0] abgefragt.
Jo, das o.g. war nur das Prinzip. Jetzt müssten wir ins Detail gehen und da gibt es wieder mehrere Lösungen.
Z. B. die über DayOfWeek() zu gehen. Eine 1 wird zurückgegeben, wenn es ein Montag ist, dann müsste - 3*86400 stehen. Und bei 0 für Sonntag und 6 für Samstag würde die Abfrage nicht durchlaufen.
Auf bestimmte Feiertage müsste dann auch noch reagiert werden.

Man könnte auch über die Feststellung der Kursstellung an dem zu untersuchenden Tag gehen. Keine Kursstellung - keine Abfrage, etc.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #10 (permalink)  
Alt 13.06.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

alles klar, sowas hab ich mir schon gedacht. Aber dein Prinzip ist ja schon mal genial einfach. Der Rest ist ja dann bis auf Feiertage/halbe Handelstage auch halb so wild.
Thema geschlossen

Lesezeichen

Stichworte
mql4, mt4, programmierung, programmierung metatrader, vortageshoch, vortagestief, zeitfenster

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 +1. Es ist jetzt 14:55 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.
-----------------------------------------------------------------------------------------------------------------------------