Ok... nach Beinahe-Verzweifelung habe ich es hinbekommen.
Ich stelle den Code hier herein - für diejenigen, die einzelne Routinen gebrauchen können.
Im Nachhinein - jetzt, da ich das Ergebnis sehe - erschließt sich mit der Sinn des Verbindens der Minutenkerzen NICHT, da man diese auf höheren Zeitebenen quasi als ähnlich dem Balkenchart sieht. Klar - da ist "vergrößert" auf Stunde ja kein "Zoom-Out", sondern auf Stunden eng begrenzte Slots.
Nun - immerhin eine Erkenntnis und nützlich für "wandernde" Objekte, wenn auch nicht sonderlich "ressourcenschonend"...
LG Angel (Bitte nicht schleßen, es könnten noch Kommentare kommen)
Code:
//+------------------------------------------------------------------+
//| NewCandles.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| by Angel, 17.06.2019|
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
int i=0;
int x=0;
int a=0;
string Nummer;
int Zeittakt=1;
int AnzahlBars;
int AnzahlVerbindungen;
int Del;
datetime dt;
bool NeueKerze=false;
datetime An[2000];
datetime En[2000];
double Hi[2000];
string Name;
string NameHi;
string NameDel;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ObjectsDeleteAll();
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectsDeleteAll();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(dt!=iTime(_Symbol,Zeittakt,0)) //Jede 1 Minute soll auf neue Kerze geprüft werden;
{
dt=iTime(_Symbol,Zeittakt,0);
NeueKerze=true;
Nummer="";// Reset der Vaiablen (Zum Zeitpunkt des Erstellens wurden diese nach Durchlaufen der Schleifen nicht (!) zurückgesetzt, warum auch immer...
//Reset auch daher, weil oft noch vor Ende der Minute die Schleife nicht vollständig durchleifen werden konnte
i=0;
a=0;
x=0;
AnzahlBars=2000;// Festlegen auf die Anzahl der Minuten-Bars, deren Hoch miteinander verbunden werden sollen
AnzahlVerbindungen=AnzahlBars-1;
for(Del=1;Del<AnzahlVerbindungen;Del++)// Löschroutine zum Löschen der Objekte zu Beginn der neuen Minute
{
Nummer=IntegerToString(Del);// Indizierung des Objektnamens
NameDel="MinuteBar"+Nummer;
ObjectDelete(0,NameDel);// Löschen der zuvor gezeichneten Objekte
}
if(NeueKerze==true) // Wenn eine neue Kerze begonnen hat, dann...
{
for(a=1;a<AnzahlBars;a++)// Schleife zum Berechnen der Werte der Minuten-Bars
{
An[a]=iTime(_Symbol,1,a);// (An)fangs-Zeit des Minuten-Bars "a"
Hi[a]=NormalizeDouble(iHigh(_Symbol,1,a),5);// Hoch des Minuten-Bars "a"
En[a]=An[a];// (En)d-Zeit des Minuten-Bars "a"
Alert("1 x= ",x," a= ",a," i= ",i," NeueKerze= ",NeueKerze," dt= ",dt," An[a]= ",An[a]," Hi[a]= ",Hi[a]," En[a]= ",En[a]);// Check der Werte
}
for(x=1;x<AnzahlVerbindungen;x++)// Schleife zum Erstellen der einzelnen Highs der Minuten-Bars
{
Nummer=IntegerToString(x);// Indizierung des einzelnen Verbindungen
Name="MinuteBar"+Nummer;//
ObjectCreate(0,Name,OBJ_TREND,0,An[x+1],Hi[x+1],En[x],Hi[x]);// Verbindung des Minuten-Bars [x+1] zum Minuten-Bar An[x]
ObjectSetInteger(0,Name,OBJPROP_STYLE,1);// 1=die Art der Linie
ObjectSetInteger(0,Name,OBJPROP_WIDTH,5);// Dicke der Linie
ObjectSetInteger(0,Name,OBJPROP_COLOR,clrBlue);// Farbe der Linie
ObjectSetInteger(0,Name,OBJPROP_RAY_RIGHT,false);// "false" = die Linie soll nicht über die Ankerpunkte hinausgehen, sondern soll dort enden
Alert("2 x= ",x," a= ",a," i= ",i," NeueKerze= ",NeueKerze," dt= ",dt," An[i]= ",An[i]," Hi[i]= ",Hi[i]," En[i]= ",En[i]);// Check der Werte
}
NeueKerze=false; // Nach getaner Arbeit / Berechnung zu Beginn der neuen Kerze soll die Kerze nun "alt" sein, damit nicht ständig weitergerechnet wird
}
}
}