Jump to content


Photo

Kerzenzeitpunkt ermitteln


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.

  • Please log in to reply
41 replies to this topic

#1 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 21 February 2016 - 12:21 AM

Hallo Zusammen,

 

ich bin mal wieder auf eure Hilfe angewiesen.

 

Also zu der Theorie:

Ich will eine eigene Rangestraterie aufbauen.

Aktuell funktioniert der Rangeaufbau mit manueller Vorgabe.

Sprich, ich gebe meine Zeitvorgaben manuell vor, in welchem Zeitraum die Range aufgebaut werden soll und ab wann ich traden will.

 

Ich möchte es folgendermaßen erweitern oder abändern.

Ich habe eine Moving Average.

Sobald eine Kerze z.b. oberhalb der Linie geschlossen wird, will ich diese Kerze als meinen Startpunkt für meinen Rangeaufbau festlegen.

 

Der Startpunkt der Range sieht aktuell so aus:

datetime RangeStartPunkt = StrToTime(TimeYear(TimeCurrent())+"."+TimeMonth(TimeCurrent())+"."+TimeDay(TimeCurrent())+" "+Range_Start_Stunde+":"+Range_Start_Minute);

Ich stelle es mir grade einfach so vor:

 

if(Linie_oben<Low[0]) TIMERHIGH = iTime(NULL,PERIOD_H1,0);Range_Start_Stunde = TIMERHIGH

Stelle ich es mir zu einfach vor?

Könnt ihr mir bitte auf die Sprünge helfen.

 


  • 1

Thanked by 3 Members:
Vola , whipsaw , chimbonda

#2 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 21 February 2016 - 09:47 AM

Mir ist noch nicht klar, was Du genau möchtest. Also wenn Du einen Close (bspw. im H1) über/unter einem MA hast, soll eine Range festgelegt werden. In welchen Grenzen?


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
chimbonda , Vola , whipsaw , Mythos

#3 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 21 February 2016 - 12:38 PM

naja das ist es ja. Sobald eine Kerze über/unter MA geschlossen wird, soll genau diese Kerze als mein Grenzanfang definiert werden. Den Grenzschluss will ich dann mit einem Offset auf den Grenzanfang definieren.

 

Sprich: Grenze_Start: MA<Low

            Grenze_Stop: Grenze_Start + 8 Stunden + 20 Minuten

 

Ich muss hier halt zuerst den Punkt "Grenze_Start" festlegen.

Ich glaube, ich habe hiermit den Ansatz schon gefunden. Bin mir aber noch nicht sicher, ob es das gelbe vom Ei ist.

Weil durch den Index 0 im Low oder High wird der Startpunkt mit jeder Kerze die über/unter dem MA ist aktuallisiert.

 

   string TIMERHIGH, TIMERLOW;   if(MA<Low[0]) TIMERHIGH = TimeToStr(TimeCurrent(),TIME_MINUTES);   if(MA>High[0]) TIMERLOW = TimeToStr(TimeCurrent(),TIME_MINUTES);

 

Denke, dass ich hier aber wohl eine Schleife haben muss.


Edited by Gunner_Duck, 21 February 2016 - 12:40 PM.

  • 0

Thanked by 3 Members:
chimbonda , Vola , whipsaw

#4 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 21 February 2016 - 02:26 PM

Nun mit 0 betrachtest Du ja immer die aktuelle und noch laufende Kerze. Da ist ja noch gar nicht klar, wie groß sie ist und ob sie den MA überhaupt nachhaltig kreuzt. Irgendwie verwirrt mich Dein Vorgehen wahrscheinlich mehr als es nötig ist. Versuche doch mal ganz deutlich nur in Worten zu beschreiben, was passieren soll. Ganz ohne Quelltext :wink:.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
chimbonda , whipsaw

#5 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 21 February 2016 - 04:05 PM

Sorry, ich denke wahrscheinlich wieder mal zu kompliziert.

 

ich will den zeitpunkt einer kerze haben, die als erste über/unter dem ma geschlossen wird.

diesen zeitpunkt will ich daraufhin als meinen startpunkt für meine range verwenden.


Edited by Gunner_Duck, 21 February 2016 - 04:06 PM.

  • 0

Thanked by 3 Members:
chimbonda , Vola , whipsaw

#6 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 21 February 2016 - 05:37 PM

... und die Range soll dann von wann bis wann und wo bis wo gehen?


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , chimbonda

#7 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 21 February 2016 - 06:01 PM

bis wann die Range geht ist erstmal uninteressant.

aktuell wird die Range durch externe variablen definiert.

Ich will das so ändern, dass mir der Range-Startpunkt durch die ermittelte Kerze gestartet wird.

 

Range-Start soll den Zeitpunkt einer Kerze bekommen, die als erste über meinem MA geschlossen wird.

 

Die Frage ist hier einfach nur, wie kann ich einen Zeitpunkt einer Kerze ermitteln.


  • 0

Thanked by 3 Members:
whipsaw , chimbonda , Vola

#8 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 22 February 2016 - 11:18 AM

Die Frage ist hier einfach nur, wie kann ich einen Zeitpunkt einer Kerze ermitteln.

 

Bspw. mit iTime dürfte das gehen.

https://docs.mql4.com/series/itime

 

Ich kann mir im Groben vorstellen, was Du vorhast, würde das aber ganz anders angehen.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 3 Members:
whipsaw , chimbonda , Vola

#9 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 22 February 2016 - 06:50 PM

Ich bin immer offen für andere Wege 😉 und natürlich auch dankbar für weitere Vorschläge. Auch so lernt man ja dazu.

Wie würdest du es denn machen?
  • 0

Thanked by 3 Members:
whipsaw , Vola , chimbonda

#10 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 22 February 2016 - 07:27 PM

1. Kerze suchen, die zuletzt den MA gekreuzt hat. Bspw. mit einer while-Schleife. Bedingung wäre ja, dass die Kerze X zum Zeitpunkt i über dem MA geschlossen hat und zu i+1 darunter (oder umgekehrt, je nach Richtung).

2. Zeitpunkt (und ggf. Kurse) dieser Kerze X merken.

3. Das tun, was getan werden muss, aber hier noch nicht genannt wurde wink.gif.


  • 1

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
whipsaw , Vola , Gunner_Duck , chimbonda

#11 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 22 February 2016 - 11:18 PM

ja an eine Schleife habe ich auch schon gedacht.

Meinst du in etwa so hier:

nt a;int AnzahlKerzen = 2;bool Break;while (a<AnzahlKerzen && !Break) {  double MA_now  = iCustom(NULL,Zeiteinheit,iBaender,55,0,0.2,1,a);  double MA_prev = iCustom(NULL,Zeiteinheit,iBaender,55,0,0.2,1,a+1);  if((Close[0] > MA_now) && (Close[1] < MA_prev)) {    datetime Zeitpunkt_Long = iTime(NULL,60,0);  }          else  {              Zeitpunkt_Long = 0;    Break=true;             a++;        }    }    

Edited by Gunner_Duck, 22 February 2016 - 11:20 PM.

  • 0

Thanked by 3 Members:
whipsaw , Vola , chimbonda

#12 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 23 February 2016 - 08:30 AM

Nö, eigentlich nicht, aber fast shades.gif .

Die Kerze 0 ist immer die aktuelle Kerze. Da kann sich der Close noch verändern.

Du müsstest also schauen, ob 1 über dem MA ist und 2 drunter.

 

Vor allem hat a auch keinen Anfangswert bei Dir bzw. wird nicht zurück gesetzt. Könnte Probleme geben.

Evtl. tippe ich im Laufe des Tages mal ein paar Zeilen.

 

Sicherlich sind da mehrere Lösungen möglich - jeder denkt und programmiert halt anders :wink:.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , Vola

#13 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 23 February 2016 - 11:41 AM

Also ich habe den Index abgeändert, aber es scheint sich ein wurm dort eingeschlichen zu haben.

Sobald meine Bedingung erfüllt ist, friert der Tester ein. Schätze er hängt sich dann in der Schleife auf.

 

Es wäre super nett von dir, wenn du dir die Zeit dafür nehmen könntest und mir bei den Zeilen helfen könntest.

 

Aktuell sieht der Code so aus:

int a=1;int AnzahlKerzen = 2;bool Break;while (a<AnzahlKerzen && !Break) {  double MA_now  = iCustom(...,a);  double MA_prev = iCustom(...,a+1);  if((Close[1] > MA_now) && (Close[2] < MA_prev)) {    datetime Zeitpunkt_Long = iTime(NULL,60,1);  }          else  {              Zeitpunkt_Long = 0;    Break=true;             a++;        }    }    

  • 0

Thanked by 3 Members:
whipsaw , chimbonda , Vola

#14 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 23 February 2016 - 01:06 PM

Das er sich aufhängt ist ja kein Wunder. Du nutzt ja immer Close[1] und Close [2].

Auch dort musst Du natürlich Close[a] und Close[a+1] nehmen. Beim Zeitpunkt das Gleiche.

 

Ich würde es so machen (habe es aber nicht getestet):

 

int a=1;double MA_now  = iCustom(...,a);double MA_prev = iCustom(...,a+1);while (Close[a] > MA_now && Close[a+1] > MA_prev) {    MA_now  = iCustom(...,a);    MA_prev = iCustom(...,a+1);    a++;    if (a>=Bars-1) break;}datetime Zeitpunkt_Long = TimeHour(iTime(NULL,0,a));   

 

P.S.: wenn Du die Stunde rausfinden möchtest, solltest Du das besser mit TimeHour machen und nicht bei iTime eine 60 eintragen.


  • 1

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
whipsaw , chimbonda , Vola , Gunner_Duck

#15 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 23 February 2016 - 11:47 PM

Super, ich danke dir vielmals. Jetzt klappt es yess.gif yess.gif

 

Kannst du mir bitte noch zum besseren Verständnis die Schleife erklären.

Warum muss der MA_now und MA_prev nochmals in die While-Schleife und dann auch noch ohne "double" ?

 

Es sieht irgendwie doppelt gemoppelt aus.


Edited by Gunner_Duck, 23 February 2016 - 11:48 PM.

  • 0

Thanked by 4 Members:
whipsaw , conglom-o , chimbonda , Vola

#16 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 24 February 2016 - 08:55 AM

Die MAs müssen sogar in erster Linie in der Schleife sein. Denn nur dort wird ja letztendlich nach hinten gezählt und geguckt (also a erhöht).

Vor der Schleife sind sie nur, um den Anfangswert festzulegen und somit die Schleife erst möglich zu machen.

 

Die Idee ist folgende: schaue immer, ob zum Zeitpunkt a der Close über dem MA liegt UND der Close eine Kerze vor a auch über dem dortigen MA.

Wenn dem so ist, springe eine Kerze nach links (a++). Wenn dem nicht mehr so ist, hat er ja den Cross gefunden und sich die Stelle a gemerkt.

Von der nehmen wir dann die Stunde. Wenn er am Ende des Charts angekommen ist (Bars-1) und keinen Cross gefunden hat, dann höre auf.

 

Das double dient zur Definition des Variablentyps. Wenn Du es in der Schleife nochmal vor die MAs schreibt, wird er rum meckern, dass die Variablen schon definiert sind.

Probiere es mal aus. Man kann/muss dann noch zwischen globalen und lokalen Variablen unterscheiden, aber das führt hier zu weit.

 

Achte bitte auch noch darauf, dass Du die richtigen Charts nimmst. Wenn Du den Timeframe im MA auf bspw. 60 festgelegt hast, solltest Du mit iClose anstatt Close[i] arbeiten.

Das Close[i] macht nur Sinn, wenn der Timeframe im MA auf 0 eingestellt ist. Durch den gekürzten Text konnte ich das nicht sehen, was nun richtig ist. Gleiches gilt für Bars bzw. iBars.

 

P.S.: Wenn Dir ein Beiträg sehr gut gefällt, kannst Du ihn mit dem (grünen) Pfeil rechts unten bewerten wink.gif.


  • 3

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
whipsaw , chimbonda , Gunner_Duck , Vola

#17 Vola

Vola

    Nur noch Pivot Cluster Traderin

  • *_skilled
  • 6,251 posts
  • 36826 thanks
  • Wohnsitz:aktuell in CH

Posted 24 February 2016 - 09:17 AM

ot.gif

@conglom-o

Oller Sammler, habe Deinem Wusch schon entsprochen laugh.png

(Auch wenn ich den Beitrag nicht so gut fand, da ich immer nur Hubschrauber verstehe)


  • 0

Gruß Vola
Ich zähle lieber bis 4
Alle von mir gemachten Aussagen und Antworten auf Fragen entsprechen lediglich meiner persönlichen Meinung und stellen keinerlei Rechts- und Anlageberatung oder ähnliches dar


Thanked by 2 Members:
Rumpel , chimbonda

#18 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 24 February 2016 - 09:41 AM

ot.gif

@conglom-o

Oller Sammler, habe Deinem Wusch schon entsprochen laugh.png

(Auch wenn ich den Beitrag nicht so gut fand, da ich immer nur Hubschrauber verstehe)

 

Na dann verstehst Du schon mehr als ich - ich wähle immer nur willkürlich Buchstaben auf meiner Tastatur aus.

Die werden dann so lange geändert bis bei der Kompilierung keine Fehlermeldung mehr kommt bye2.gif !

 

P.S.: Du bist ein Schatz crazy.gif !


  • 1

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
Rumpel , whipsaw , chimbonda , Vola

#19 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 24 February 2016 - 11:50 AM

vielen dank conglom-o.

Hast mir super weiter geholfen.

Einen schönen Tag wünsche ich dir ;-)


  • 0

Thanked by 4 Members:
chimbonda , Vola , whipsaw , conglom-o

#20 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 48 posts
  • 126 thanks

Posted 25 February 2016 - 09:34 PM

Hallo conglom-o,

 

ich habe mir den Ablauf nochmal genauer angeschaut. Und es sieht aktuell immer so aus, dass meine Rangegröße erst nach der zweiten Kerze aufgebaut wird.

 

Auf dem Bild sieht man hoffentlich, dass die Range jetzt auf der Kerze mit dem roten Pfeil aufgebaut wird.

Es soll aber schon auf die Kerze mit dem weißen Pfeil aufgebaut werden.

 

Die Logik sieht aktuell so aus:

(iLow(NULL,0,a) > MA_now && iLow(NULL,0,a+1) > MA_prev)

Normalerweise hätte ich die Logik so hier gemacht:

(iLow(NULL,0,a) > MA_now && iLow(NULL,0,a+1) < MA_prev)

Aber so findet er den Cross komischerweise gar nicht mehr.

Hast du vielleicht eine Idee, was hier los ist.

 

Schau dir mal den Screenshot an. Ich hoffe du verstehst was ich meine.

 

P.S.: ich habe die Range jetzt extra so klein gemacht, damit man es hoffentlich besser erkennt was ich meine.

Attached Files


Edited by Gunner_Duck, 25 February 2016 - 09:36 PM.

  • 0

Thanked by 2 Members:
Vola , chimbonda

Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users