Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 17.06.19
Angel Angel ist offline
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

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
        }
     }
  }
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang