Ich habe nun mal versucht, eine NewBar-Funktion einzubauen, die alle 60 Minuten eine neue Kerze anzeigt. Die oft zu sehende Time[]-Funktion seheich nicht als so toll an, da die Kerze sich immer nur auf den aktuellen Chart bezeiht und ich gerne alles einstellen können möchte, in Drop-Down-Menüs etc.
Hier habe ich zur Vereinfachung einfach 60 eingetragen - für 60 Minuten.
Also der Code soll alle 60 Minuten die beiden Schleifen 1 x durchlaufen.
Das tut er auch - aber nur 1 x und zwar das erste Mal, nur bei der ersten Stunde. Obwohl ich im Strategietester einen ganzen zu testenden Tag einstellte. Was mache ich denn nur falsch?!?!?!?
Code:
datetime dt;
bool NewBar;
int i;
int z;
int y;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static datetime dt;
if(dt!=iTime(_Symbol,60,0)) //Alle 60 Minuten soll auf neue Kerze geprüft werden
{
dt=iTime(_Symbol,60,0);
NewBar=true;
}
if(NewBar==true)
{
for(i=25;i>1;i--) // Erste Schleife; Soll alle 60 Minunten 1 x durchlaufen werden
{
for(z=i-1;z>0;z--) // Zweite Schleife; Anfang soll i-1 sein
{
y=y+1;//Einfache Zählvariable zur Kontrolle
Alert(" i= ",i," z= ",z," y= ",y," dt= ",dt);//Ausgabe der benutzten Variablen zur Kontrolle
}
}
}
NewBar=false;
}