Indikator Verschiedene Fragen - Seite 8

 
Marco vd Heijden:

Der erste Balken des Tages sollte der erste Balken sein, nachdem TimeHour() wieder mit der Zählung begonnen hat.
Das ist natürlich der erste Balken von M1, M5, M15 usw. Sie alle beginnen neue Balken.

Ich werde es bald ausprobieren, außerdem arbeite ich an diesem Problem.

Vielen Dank dafür.

 

Ich lese immer noch Foren und recherchieren, kann ich ähnliche Foren zu finden, kann aber nicht genau das finden, was ich will. (vielleicht verstehe ich nicht ihre Code-Stil oder ...)
Ich habe schnell Screenshot, ich hoffe, dies könnte Ihnen helfen, mich klar zu verstehen.

erste Bar des Tages

Vielen Dank im Voraus.

 
datetime open;

open=iOpen(Symbol(),PERIOD_D1,0);

// put in ontick

if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
  if(TimeHour(open)==0)
   {
    Alert("New Day !!");
   }
  open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}

Ich habe ein paar Bier getrunken, also hoffe ich, dass du die Idee verstehst, die sicher in jeder Hinsicht falsch ist.

Ich denke, open muss durch time ersetzt werden.

iTime(

Oder vielleicht können Sie sogar tun:

if(TimeHour(TimeCurrent())==0)
{
  Alert("NEw DAy m8");
}
ps. was ist mit dem anderen thread passiert? es waren fast 40 seiten?
 
Marco vd Heijden:

Ich habe ein paar Bier getrunken, also hoffe ich, dass du die Idee verstehst, ich bin mir sicher, dass es in jeder Hinsicht falsch ist.
Oder vielleicht können Sie sogar tun:

ps. was passiert mit dem anderen Thread? es war fast 40 Seiten?
Mr. William - (Ich habe Respekt vor Ihnen und Ihren Kommentaren.) Ich habe mich ein paar Mal damit auseinandergesetzt, dass Sie diesen Satz geschrieben haben: Es gibt hier keine Gedankenleser.
Jetzt denke ich, wenn ich nicht klarer über mein Thema schreiben kann, wie können mich die Leute dann klar verstehen?!

---

Mr. Marco - vielen Dank für Ihren Kommentar. Ich kenne das schon, auch ich habe ähnliche Codes in meinen Indikatoren verwendet.

(Ich habe versucht, mein Problem in der Code Source Sektion zu erklären)

iTime( Symbol(), PERIOD_D1, 0 )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time

---

P.S.

Denkst du, warum ich keine Unterthemen eröffne?
Ich arbeite noch daran. Ich kann Lösungen in Foren finden. Jetzt geht es auch langsam gut voran.

Zusätzlich:
Als ich anfing, Trade Panel EA's zu schreiben, dachte ich, ich müsste 4 Funktionsskripte Sell, Buy, Close all Order, EXIT ( remove ) EA schreiben.
Während ich daran arbeite, habe ich eine Menge Ideen... jetzt, dass EA's über 3k Zeilen haben.
Dennoch sollte ich fast 10 weitere nützliche Funktionen schreiben, wenn ich mich für alle entscheiden würde.

Wenn ich meine Trade Panel EA's fertiggestellt habe, werde ich vielleicht auch eine kleine Geschichte darüber schreiben, wie ich angefangen habe, das Skript für meine Trade Panel EA's zu schreiben. (auch wenn ich es nicht fertig - wirklich ich glaube, wer wird es sehen die meisten Leute werden sagen: Wow, großartig! ) hehe :)

---

Danke Mr. Marco.

Vielen Dank an alle (die auf meine Kommentare antworten) und für eure Hilfe.

 
#property strict
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)

void OnStart()
  {
   local_offset*=HOUR;

   int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;

   datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
   datetime local_midnight  = broker_midnight + local_offset;

   int      M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
   datetime M5_time  = iTime(_Symbol,PERIOD_M5,M5_shift);
   double   M5_open  = iOpen(_Symbol,PERIOD_M5,M5_shift);

   printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
  }
 
honest_knave:

Danke für Ihr tolles Beispiel.
Vielleicht, wenn ich Zeit habe, werde ich morgen versuchen, mit Video / Bild zu erklären.

Ich recherchiere über dieses Thema so hart.

( auch ich suche wie diese Schlüsselwörter in google seo (nicht nützlich Kommentar so weit in seo): site:mql4.com | site:mql5.com erste Bar des Tages )

 

Suchen Sie nach einer Möglichkeit, die Zeitverschiebung des lokalen > Brokers automatisch zu erkennen? z.B. +1 Stunde

Wenn Sie eine manuelle Einstellung vornehmen möchten (dies ist besser, da Sie manchmal nicht die Ortszeit, sondern eine andere Zeitzone verwenden möchten), gehen Sie wie in meinem Skript oben vor:

1. Ermitteln Sie die Mitternachtszeit des Brokers (mit iTime oder durch Berechnung)

2. Konvertieren Sie es in eine lokale Mitternacht mit Ihrer Offset-Einstellung

3. Setzen Sie die lokale Mitternacht durch iBarShift, um den richtigen Balken auf dem von Ihnen gewählten Zeitrahmen zu erhalten.

 
honest_knave:

Suchen Sie nach einer Möglichkeit, die lokale > Broker-Zeitverschiebung automatisch zu erkennen? z.B. +1 Stunde
Wenn Sie eine manuelle Einstellung vornehmen wollen (dies ist besser, weil Sie manchmal nicht die lokale Zeit, sondern eine andere Zeitzone verwenden wollen), sind die Schritte, die Sie befolgen, wie in meinem Skript oben:
1. Ermitteln Sie Mitternacht auf Broker-Zeit (mit iTime oder durch Berechnung)
2. Konvertieren Sie es in eine lokale Mitternacht mit Ihrer Offset-Einstellung
3. Setzen Sie die lokale Mitternacht durch iBarShift, um den richtigen Balken auf dem von Ihnen gewählten Zeitrahmen zu erhalten.

Sie verstehen mich absolut richtig - dass ich nach einer Möglichkeit suche, automatisch... - Also, warum? Ich habe einige wichtige Indikatoren ( selbst gemacht - mit verschiedenen Foren geholfen ), wenn ich manuelle Weg wählen - ich könnte ihre Einstellungen ändern... das ist lange Weg - ich bin so faul. :)
Vielen Dank so viel mehr!
Vielleicht habe ich die Lösung gefunden (zur Zeit sieht es so aus, als ob es funktioniert - ich habe schon 2 verschiedene Broker ausprobiert und die richtige Zeit bekommen).

Ich glaube, die Frage kommt aus Mangel an Erfahrung.

F: Wie kann ich nur Stunde 1 in untenstehendem Ergebnis behalten, bitte?
( Eigentlich habe ich gefunden, wie ich nur " 1 " von untenstehendem Ergebnis behalten kann - aber ich brauche eine professionelle Methode, bitte )
( z.B.: Ergebnis: 2017.02.2701:00:00 - Aber ich muss nur behalten: 1 )

2017.00.00 00:00:00.000 Custom Indicator EURUSD,M5:  Bar Time: 2017.02.27 01:00:00

Vielen Dank für alles.

( Ich werde teilen, wie ich die Lösung gefunden habe. - wenn Sie mir nicht helfen, kann ich die Lösung nicht finden - noch einmal vielen Dank. )

 

Ich habe nur nach dem unten stehenden Code gesucht.
Aber ich muss es noch testen.

Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test.
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);

GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1

Wenn obiger Code nicht richtig ist, lassen Sie es mich bitte wissen.

Vielen Dank @honest_knave und @Marco

 

Nun, Max, bedenken Sie Folgendes: Wenn Sie nach einem Muster suchen und es sich bildet, dann wird Ihr Auslöser unabhängig vom Zeitstempel ausgelöst.

Der Auslöser kann also mehrere Zeitstempel bei verschiedenen Brokern haben, aber der genaue Zeitpunkt des Auslösers wäre bei allen Brokern in etwa derselbe.

Nicht genau, aber nahe genug.