Einen neuen Balken anzeigen - Seite 2

 
Doerk Hilger:

Der einfachste Weg:

static datetime tlastbar=0;

datetime tnewbar=iTime(NULL,PERIOD_CURRENT,0);

bool isnewbar=tnewbar!=tlastbar;

tlastbar=tnewbar;

Soviel ich weiß, ist das Thema für mql5. Ihr Code ist nur für mql4.
 
Willbur:

Hier ist meine endgültige Version.

Ich bin sogar ein bisschen besorgt, weil es so einfach ist.

Alain: Es wäre schön, wenn Sie den Segen erteilen würden.

// -----------------------------------------------------------------------
bool NewBar(void)
{
bool iNewBar = false;
static double currPeriodProgress = 0;

   if(MathMod(TimeCurrent(),PeriodSeconds()) < currPeriodProgress) iNewBar = true;

   currPeriodProgress = MathMod(TimeCurrent(),PeriodSeconds());

   return(iNewBar);
}
// ------------------------------------------------------------------------
void OnTick()
{
    if(NewBar())     PlaySound("tick.wav");


Grüße aus Köln
Willbur

Das Problem ist, dass es nur von OnTick() verwendet werden kann. Bei anderen Event-Handlern ist man nie sicher, ob TimeCurrent() mit dem gewünschten Symbol verbunden ist.

Und ich schlage vor, dass Sie niemals die gleiche Berechnung zweimal durchführen:

bool NewBar(void)
  {
   bool iNewBar=false;
   static double currPeriodProgress=0;

   double lastPeriodProgress=MathMod(TimeCurrent(),PeriodSeconds());

   if(lastPeriodProgress<currPeriodProgress) iNewBar=true;

   currPeriodProgress=lastPeriodProgress;

   return(iNewBar);
  }
 
Alain Verleyen:
Soweit ich weiß, ist das Thema für mql5. Ihr Code ist nur für mql4.
Was meinen Sie damit? Es ist nur ein Ausschnitt und kann überall eingefügt werden, z.B. innerhalb der NewBar() Funktion. Und imo ist es die einfachste und schnellste, zuverlässige Lösung. Ich habe dies in ein Derivat der CSymbolInfo-Klasse für alle Zeitrahmen getrennt eingebaut und es funktioniert perfekt.
 

Ich habe diese in MQL4 verwendet

//global
long Bars_in_Chart;

   // detected new bar
   if(Bars_in_Chart<Bars)
   {
      Bars_in_Chart=Bars;
   }
 
Doerk Hilger:
Was meinen Sie damit? Es ist nur ein Ausschnitt und kann eingefügt werden, wo immer man will, z. B. innerhalb seiner NewBar() Funktion. Und imo ist es die einfachste und schnellste, zuverlässige Lösung. Ich habe dies in ein Derivat der CSymbolInfo-Klasse für alle Zeitrahmen separat eingebaut und es funktioniert perfekt.
Es gibt keine iTime() -Funktion in mql5.
 
Alain Verleyen:
Es gibt keine iTime()-Funktion in mql5.
MT5, wirklich? Aber MQL5 ist nicht nur MT5, das ist zumindest so, wie ich es immer verstanden habe, weil MT4 den MQL5-Compiler verwendet. Aber in der Tat nicht wissen, dass, ich benutze hauptsächlich MT4. Wie auch immer, danke für die Info über die Einschränkung.
 
Doerk Hilger:
MT5, wirklich? Aber MQL5 ist nicht nur MT5, das ist zumindest so, wie ich es immer verstanden, weil MT4 den MQL5-Compiler verwendet. Aber in der Tat nicht wissen, dass, ich benutze hauptsächlich MT4. Wie auch immer, danke für die Info über die Einschränkung.
Nein, mql4 ist für MT4, mql5 ist für MT5. Sie haben eine Teilmenge von Funktionen gemeinsam, aber das ist 2 verschiedene Sprachen.
 

MQL4 iTime() es ist einfach und verständlich für Händler wie mit den meisten von MQL4 andere Funktionen.

MQL5 ist anders, Sie brauchen einen Abschluss in Informatik zu codieren, dass, und das ist, was die meisten Menschen nach unten setzt.

Hier ein Beispiel, das mir letzte Woche begegnet ist, als ich meine MT4 EA's auf MT5 umstellen wollte und die Lösung, die ich gefunden habe.


 
Alain Verleyen:
Nein, mql4 ist für MT4, mql5 ist für MT5. Sie haben eine Teilmenge von Funktionen gemeinsam, aber das sind 2 verschiedene Sprachen.

Die Sprache ist die gleiche, aber sie haben eine kleine Teilmenge von Funktionen nicht gemeinsam ;) Wie dem auch sei, Sie haben mit dieser Definition wahrscheinlich recht. MQ hat an dieser Stelle viel zur Verwirrung beigetragen.

 
Doerk Hilger:
MT5, wirklich? Aber MQL5 ist nicht nur MT5, das ist zumindest so, wie ich es immer verstanden, weil MT4 den MQL5-Compiler verwendet. Aber in der Tat nicht wissen, dass, ich benutze hauptsächlich MT4. Wie auch immer, danke für die Info über die Einschränkung.
Wissen Sie, ob es eine öffentliche Bibliothek/Klasse gibt, die die alten Funktionen iClose, iTime ... nur aus Kompatibilitätsgründen implementiert? Würde bei einer schrittweisen Umstellung Sinn machen.