Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 22.05.19
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Generelles Vorgehen bei mir wäre folgendermaßen:
1. Zeiten für Beginn und Ende der Messung festlegen
2. Wenn Zeitraum erreicht, Werte der Messung holen
3. Sobald Werte vorhanden, Objekt mit diesen Werten zeichnen

4. je nach Zeitfenster des Charts die xPosition der Objekte ändern
5. das passiert bei mir, wenn Bar Null/aktuell ist
Beispiel Code aus einem meiner Indikatoren:
Code:
extern int              LabelShift     = 2;   // right shift from current bar (2)

   for(i=5;i>=0;i--) // from oldest to current
   {  // 8<--- Snip ---
      if(i==0 && ShowLabels && !AllOff)
      {  
         CreateLabel("mark1opn","opn."+NameMarket1,Mark1StartCol);
         CreateLabel("mark1clo","clo."+NameMarket1,Mark1StopCol);
         if(ShowPrices)
         {
            ChangeLabelText("mark1opn","opn."+NameMarket1+" "+DoubleToString(Mark1open[i],2) );
            ChangeLabelText("mark1clo","clo."+NameMarket1+" "+DoubleToString(Mark1close[i],2) );
         }
            	
         int LShiftMult=_Period*MinInSec;    // move description by x bars
         datetime ShiftTime=Time[i]+(LabelShift*LShiftMult);
         MoveLabel("mark1opn",ShiftTime,Mark1open[i]);
         MoveLabel("mark1clo",ShiftTime,Mark1close[i]);
      } // ShowLabels
   }
So wie ich hier bei Bar Null die Labels verschiebe, so änderst Du von Deinem Rechteck den 2.Zeitpreis (also den Endpunkt-Preis) um ShiftTime.
Meiner Meinung nach wäre das in einem Timer besser aufgehoben als in der OnTick, die kleinste darstellbare Einheit auf dem Chart ist eine Minute und ich wüßte nicht, warum man da auf Tickebene runtergehen wollte - nur ne Anmerkung.
Ich hoffe, das hilft Dir schon mal weiter. AVT