|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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ß |
|
|||
Ü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. |
|
|||
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 |
|
|||
Hallo
mit,diesem kannst die Zeit einstellen,wie du willst,zeigt Hoch und Tief an.
|
|
|||
Hallo Traderdoc,
könntest Du meine Frage noch beantworten oder ist dies Gebührenpflichtig? Viele Grüße nobtrade |
|
|||
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. |
|
|||
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); |
|
|||
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. |
|
|||
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... |
|
|||
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); } //+------------------------------------------------------------------+ |
Lesezeichen |
Stichworte |
ihighest(), ilowest(), mql4, programmierung, programmierung metatarder, programmierung metatrader |
|
|