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: 4972
Beiträge: 43253
Benutzer: 7.217
Aktive Benutzer: 85
Links: 84
Wir begrüßen unseren neuesten Benutzer: DFeck
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- DFeck
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 25.11.16
Mitglied
 
Registriert seit: Feb 2015
Beiträge: 31
nobtrade befindet sich auf einem aufstrebenden Ast
Standard High and Low für bestimmten Zeitraum

Hallo liebe Trader,
mein Broker hat jetzt den Nachthandel eingeführt.
Bisher habe ich immer durch einen Indikator die Tageshighs and Tageslows vom aktuellen und vorangegangenen Tag mir einzeichnen lassen.
Die möchte ich auch weiterhin tun, allerding nicht für die Zeit von 22.00 bis 8.00 Uhr.
Bisher habe ich mir einfach ein Objekt kreiert:
ObjectCreate ("Vortageshoch", OBJ,HLINE, 0 ,0, iHigh(Symbol(),PERIOD_D1,1);
Dann habe ich aber auch die nicht gewollten Zeiten dabei.
Wie kann ich MT4 sagen, dass er aus der Zeit z.B. von 8.00 Uhr bis 22.00 Uhr das High and Low einzeichnen soll?

Danke und Gruß
  #2 (permalink)  
Alt 25.11.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Über iHighest() und iLowest() werden die Kerzenpositionen zurückgegeben, wo sich das High bzw Low zwischen den beiden Zeiten befindet.
Das eigentliche High und Low dann über High[] bzw. Low[].

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 25.11.16
Mitglied
 
Registriert seit: Feb 2015
Beiträge: 31
nobtrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo Traderdoc,
vielen Dank für die super schnelle Antwort!!!
Kann Du mir kurz noch schreiben, wie ich das machen muss, wenn ich z.B. für die Zeit von 8.00 bis 9.00 Uhr das High und Low ermitteln möchte.
Das habe ich mit Deiner ersten Antwort noch nicht hinbekommen.

Danke
  #4 (permalink)  
Alt 25.11.16
Neues Mitglied
 
Registriert seit: Feb 2016
Beiträge: 5
einser34 befindet sich auf einem aufstrebenden Ast
Standard Hallo

mit,diesem kannst die Zeit einstellen,wie du willst,zeigt Hoch und Tief an.
Angehängte Dateien
Dateityp: mq4 Test.mq4 (9,2 KB, 57x aufgerufen)
  #5 (permalink)  
Alt 29.11.16
Mitglied
 
Registriert seit: Feb 2015
Beiträge: 31
nobtrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo Traderdoc,
könntest Du meine Frage noch beantworten oder ist dies Gebührenpflichtig?

Viele Grüße
nobtrade
  #6 (permalink)  
Alt 29.11.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Das ist noch nicht gebührenpflichtig.

int shift8 = iBarShift(NULL, 0, StringToTime("08:00"));
int shift9 = iBarShift(NULL, 0, StringToTime("09:00"));
int highest = iHighest(NULL, 0, MODE_HIGH, shift8 - shift9 + 1, shift9);
int lowest = iHighest(NULL, 0, MODE_LOW, shift8 - shift9 + 1, shift9);

double high = iHigh(NULL, 0, highst);
double low = iLow(NULL, 0, lowest);

Viel Erfolg!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #7 (permalink)  
Alt 01.12.16
Mitglied
 
Registriert seit: Feb 2015
Beiträge: 31
nobtrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo Traderdoc,

vielen, vielen Dank.

Es hat aber noch nicht 100%ig geklappt.

Zum einen wandert der OpenRange_unten_aktuell, wenn ich in andere Zeiteinheiten wechsel (z.B. vom 1Min Chart in den 15 Min Chart).
Desweiteren wird der OpenRange_oben_aktuell nicht vom Chartfenster gelöscht, wenn ich den Indicator entferne.
Und die letzte Frage, wie kann ich den OpenRange Bereich für den Vortag einzeichnen? Deine Antwort funktioniert ja nur für den laufenden Tag.

Hier mein Code:

int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Vortageshoch");
ObjectDelete("Vortagestief");
ObjectDelete("Schlusskurs");
ObjectDelete("Eröffnungskurs");
ObjectDelete("aktuelles Tageshoch");
ObjectDelete("aktuelles Tagestief");
ObjectDelete("OpenRange_oben_aktuell");
ObjectDelete("OpenRange_unten_aktuell");

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
ObjectDelete ("Vortageshoch");
ObjectDelete ("Vortagestief");
ObjectDelete ("Schlusskurs");
ObjectDelete ("Eröffnungskurs");
ObjectDelete ("aktuelles Tageshoch");
ObjectDelete ("aktuelles Tagestief");
ObjectDelete ("OpenRange_oben_aktuell");
ObjectDelete ("OpenRange_unten_aktuell");

int shift9 = iBarShift(NULL, 0, StringToTime("09:00"));
int shift10 = iBarShift(NULL, 0, StringToTime("10:00"));
int highest = iHighest(NULL, 0, MODE_HIGH, shift9 - shift10+1, shift10);
int lowest = iLowest(NULL, 0, MODE_LOW, shift9 - shift10+1, shift10);

ObjectCreate ("OpenRange_oben_aktuel", OBJ_HLINE, 0,0, iHigh(NULL, 0, highest));
ObjectSet ("OpenRange_oben_aktuel", OBJPROP_COLOR, clrOrange);
ObjectSet ("OpenRange_oben_aktuel", OBJPROP_WIDTH, 2);
ObjectSet ("OpenRange_oben_aktuel", OBJPROP_HIDDEN, true);

ObjectCreate ("OpenRange_unten_aktuell", OBJ_HLINE, 0,0, iLow(NULL, 0, lowest));
ObjectSet ("OpenRange_unten_aktuell", OBJPROP_COLOR, clrOrange);
ObjectSet ("OpenRange_unten_aktuell", OBJPROP_WIDTH, 2);
ObjectSet ("OpenRange_unten_aktuell", OBJPROP_HIDDEN, true);
  #8 (permalink)  
Alt 01.12.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Was verstehst Du denn unter "wandern"? Da das High und Low zwischen 8 und 9Uhr nicht vom Timeframe abhängt (die Differenz dieser Zeitgrenzen in Minuten sollte allerdings immer ohne Rest teilbar durch die Minuten des Timeframes sein!), müsste ja auch immer dasselbe High und Low ermittelt werden.

In Deinem Code fehlt überall ein l bei aktuel.

Einen Tag vorher:

int shift9 = iBarShift(NULL, 0, StringToTime("09:00")-86400);

86400 sind die Anzahl Sekunden pro Tag.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #9 (permalink)  
Alt 01.12.16
Mitglied
 
Registriert seit: Feb 2015
Beiträge: 31
nobtrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo Traderdoc,

mit dem vergessenen "l" ist das Problem gelöst, dass die horizontale Linie nicht gelöscht wird, wenn man den Indikator löscht. Vielen Dank

Wandern heißt, wenn ich im 1min Chart bin, zeigt er mir die Linien korrekt an, beim 5min Chart und höher nimmt er das low der ersten nächsten Kerze.

Den Vortag probiere ich gleich mal aus...
  #10 (permalink)  
Alt 01.12.16
Mitglied
 
Registriert seit: Feb 2015
Beiträge: 31
nobtrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo einser34,
hatte vergessen, mich auch bei Dir zu bedanken...

Hallo Traderdoc,

hier noch mal der komplette Code. Die Tageshigh und -lows klappen super.
Die Linien der OpenRange Horizontalen sind im Minutenchart korrekt, in jeder anderen Zeiteinheit falsch.

Was habe ich falsch genmacht??????

int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Vortageshoch");
ObjectDelete("Vortagestief");
ObjectDelete("Schlusskurs");
ObjectDelete("Eröffnungskurs");
ObjectDelete("aktuelles Tageshoch");
ObjectDelete("aktuelles Tagestief");
ObjectDelete("OpenRange_oben_aktuell");
ObjectDelete("OpenRange_unten_aktuell");
ObjectDelete("OpenRange_oben_Vortag");
ObjectDelete("OpenRange_unten_Vortag");

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
ObjectDelete ("Vortageshoch");
ObjectDelete ("Vortagestief");
ObjectDelete ("Schlusskurs");
ObjectDelete ("Eröffnungskurs");
ObjectDelete ("aktuelles Tageshoch");
ObjectDelete ("aktuelles Tagestief");
ObjectDelete ("OpenRange_oben_aktuell");
ObjectDelete ("OpenRange_unten_aktuell");
ObjectDelete ("OpenRange_oben_Vortag");
ObjectDelete ("OpenRange_unten_Vortag");

int shift9 = iBarShift(NULL, 0, StringToTime("09:00"));
int shift10 = iBarShift(NULL, 0, StringToTime("10:00"));
int highest = iHighest(NULL, 0, MODE_HIGH, shift9 - shift10+1, shift10);
int lowest = iLowest(NULL, 0, MODE_LOW, shift9 - shift10+1, shift10);

ObjectCreate ("OpenRange_oben_aktuell", OBJ_HLINE, 0,0, iHigh(NULL, 0, highest));
ObjectSet ("OpenRange_oben_aktuell", OBJPROP_COLOR, clrOrange);
ObjectSet ("OpenRange_oben_aktuell", OBJPROP_WIDTH, 2);
ObjectSet ("OpenRange_oben_aktuell", OBJPROP_HIDDEN, true);

ObjectCreate ("OpenRange_unten_aktuell", OBJ_HLINE, 0,0, iLow(NULL, 0, lowest));
ObjectSet ("OpenRange_unten_aktuell", OBJPROP_COLOR, clrOrange);
ObjectSet ("OpenRange_unten_aktuell", OBJPROP_WIDTH, 2);
ObjectSet ("OpenRange_unten_aktuell", OBJPROP_HIDDEN, true);

shift9 = iBarShift(NULL, 0, StringToTime("09:00")-86400);
shift10 = iBarShift(NULL, 0, StringToTime("10:00")-86400);
highest = iHighest(NULL, 0, MODE_HIGH, shift9 - shift10+1, shift10);
lowest = iLowest(NULL, 0, MODE_LOW, shift9 - shift10+1, shift10);

ObjectCreate ("OpenRange_oben_Vortag", OBJ_HLINE, 0,0, iHigh(NULL, 0, highest));
ObjectSet ("OpenRange_oben_Vortag", OBJPROP_COLOR, clrGreen);
ObjectSet ("OpenRange_oben_Vortag", OBJPROP_WIDTH, 2);
ObjectSet ("OpenRange_oben_Vortag", OBJPROP_HIDDEN, true);

ObjectCreate ("OpenRange_unten_Vortag", OBJ_HLINE, 0,0, iLow(NULL, 0, lowest));
ObjectSet ("OpenRange_unten_Vortag", OBJPROP_COLOR, clrGreen);
ObjectSet ("OpenRange_unten_Vortag", OBJPROP_WIDTH, 2);
ObjectSet ("OpenRange_unten_Vortag", OBJPROP_HIDDEN, true);

shift9 = iBarShift(NULL, 0, StringToTime("09:00")-86400);
int shift23 = iBarShift(NULL, 0, StringToTime("23:00")-86400);
highest = iHighest(NULL, 0, MODE_HIGH, shift9 - shift23+1, shift23);
lowest = iLowest(NULL, 0, MODE_LOW, shift9 - shift23+1, shift23);

ObjectCreate ("Vortageshoch", OBJ_HLINE, 0,0, iHigh(NULL, 0, highest));
ObjectSet ("Vortageshoch", OBJPROP_COLOR, clrDarkViolet);
ObjectSet ("Vortageshoch", OBJPROP_WIDTH, 2);
ObjectSet ("Vortageshoch", OBJPROP_HIDDEN, true);

ObjectCreate ("Vortagestief", OBJ_HLINE, 0,0, iLow(NULL, 0, lowest));
ObjectSet ("Vortagestief", OBJPROP_COLOR, clrDarkViolet);
ObjectSet ("Vortagestief", OBJPROP_WIDTH, 2);
ObjectSet ("Vortagestief", OBJPROP_HIDDEN, true);

ObjectCreate ("Schlusskurs", OBJ_HLINE, 0,0, iClose(Symbol(),PERIOD_D1,1));
ObjectSet ("Schlusskurs", OBJPROP_COLOR, clrDarkViolet);
ObjectSet ("Schlusskurs", OBJPROP_STYLE, STYLE_DASH);
ObjectSet ("Schlusskurs", OBJPROP_WIDTH, 1);
ObjectSet ("Schlusskurs", OBJPROP_HIDDEN, true);

ObjectCreate ("Eröffnungskurs", OBJ_HLINE, 0,0, iOpen(Symbol(),PERIOD_D1,0));
ObjectSet ("Eröffnungskurs", OBJPROP_COLOR, clrRed);
ObjectSet ("Eröffnungskurs", OBJPROP_STYLE, STYLE_DASH);
ObjectSet ("Eröffnungskurs", OBJPROP_WIDTH, 1);
ObjectSet ("Eröffnungskurs", OBJPROP_HIDDEN, true);

shift9 = iBarShift(NULL, 0, StringToTime("09:00"));
shift23 = iBarShift(NULL, 0, StringToTime("23:00"));
highest = iHighest(NULL, 0, MODE_HIGH, shift9 - shift23 + 1, shift23);
lowest = iLowest(NULL, 0, MODE_LOW, shift9 - shift23 + 1, shift23);

ObjectCreate ("aktuelles Tageshoch", OBJ_HLINE, 0,0, iHigh(NULL, 0, highest));
ObjectSet ("aktuelles Tageshoch", OBJPROP_COLOR, clrRed);
ObjectSet ("aktuelles Tageshoch", OBJPROP_WIDTH, 2);
ObjectSet ("aktuelles Tageshoch", OBJPROP_HIDDEN, true);

ObjectCreate ("aktuelles Tagestief", OBJ_HLINE, 0,0, iLow(NULL, 0, lowest));
ObjectSet ("aktuelles Tagestief", OBJPROP_COLOR, clrRed);
ObjectSet ("aktuelles Tagestief", OBJPROP_WIDTH, 2);
ObjectSet ("aktuelles Tagestief", OBJPROP_HIDDEN, true);



//----
return(0);
}
//+------------------------------------------------------------------+
Thema geschlossen

Lesezeichen

Stichworte
ihighest(), ilowest(), mql4, programmierung, programmierung metatarder, programmierung metatrader

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 11:37 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.
-----------------------------------------------------------------------------------------------------------------------------