Multi-Timeframe Indikator – Verschiedene Timeframes im gleichen Chart

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #257797 quote
    elviko
    Participant
    Junior


    Hallo zusammen,

    ich versuche, einen komplexen Indikator auf mehreren Zeiteinheiten gleichzeitig im Chart anzuzeigen (z.B. 1-Min und 10-Min Linien im 1-Minuten-Chart).

    Mein Setup:

    • ProRealTime Version 11
    • Haupt-Chart: 1 Minute
    • Indikator berechnet einen Wert (ergebnis1) basierend auf mehreren CALL-Statements zu anderen Indikatoren
    • Der Wert wird mit Fibonacci-Levels auf Preisniveau transformiert und im Chart gezeichnet

    Das Problem: Die 1-Minuten-Linie funktioniert perfekt. Wenn ich aber versuche, eine 10-Minuten-Linie hinzuzufügen mit:



    prorealtime

    timeframe(10 minutes, updateonclose)
    FOR i = 1 TO MIN(1000, barindex - 1) DO
        ergWert10 = ergebnis1[i]
        // ... Transformation und DRAWSEGMENT
    NEXT
    

    …dann zeigt die 10-Min-Linie falsche Werte an, weil ergebnis1 auf dem 10-Min-Chart mit anderen Fibonacci-Levels berechnet wird als auf dem 1-Min-Chart.

    Was ich versucht habe:

    1. Die 1-Min Fibonacci-Werte vorher speichern und im 10-Min-Kontext verwenden
    2. Den RAW-Wert (ergebnis statt ergebnis1) verwenden
    3. timeframe() innerhalb der FOR-Loop (Fehler: “Variable kann nicht in mehreren Zeiteinheiten zugewiesen werden”)

    Die Frage: Wie kann ich ergebnis1 vom 10-Minuten-Timeframe holen, aber mit den gleichen Fibonacci-Referenzwerten transformieren wie die 1-Minuten-Linie?

    Ist es überhaupt möglich, komplexe Indikatoren mit CALL-Statements und eigenen Fibonacci-Berechnungen Multi-Timeframe-fähig zu machen?

    // ========== SPEICHERE 1-MIN FIBONACCI-WERTE ==========

    fibo01min = chartFibo0

    fibo1001min = chartFibo100

    fiboHigh01min = chartFiboHigh0

    fiboHigh1001min = chartFiboHigh100

    tief1min = letztesTiefWert

    hoch1min = hoechstesHighWert


    // ========== 1-MIN LINIE (SCHWARZ) ==========

    FOR i = 1 TO MIN(1000, barindex – 1) DO

      barPos = barindex – i

       

      ergWert = ergebnis1[i]

      ergWertVor = ergebnis1[i + 1]

       

      IF ergWert <= 0 THEN

        IF letztesTiefWert <> 0 THEN

          proz = ergWert / letztesTiefWert

          cLinie = chartFibo0 + (proz * (chartFibo100 – chartFibo0))

          prozVor = ergWertVor / letztesTiefWert

          cLinieVor = chartFibo0 + (prozVor * (chartFibo100 – chartFibo0))

        ELSE

          cLinie = chartFibo0

          cLinieVor = chartFibo0

        ENDIF

      ELSE

        IF hoechstesHighWert <> 0 THEN

          proz = ergWert / hoechstesHighWert

          cLinie = chartFiboHigh0 + (proz * (chartFiboHigh100 – chartFiboHigh0))

          prozVor = ergWertVor / hoechstesHighWert

          cLinieVor = chartFiboHigh0 + (prozVor * (chartFiboHigh100 – chartFiboHigh0))

        ELSE

          cLinie = chartFiboHigh0

          cLinieVor = chartFiboHigh0

        ENDIF

      ENDIF

       

      DRAWSEGMENT(barPos – 1, cLinieVor, barPos, cLinie) COLOURED(0, 0, 0) STYLE(LINE, 1)

    NEXT


    // ========== 10-MIN LINIE (GRÜN) ==========

    timeframe(10 minutes, updateonclose)


    FOR j = 1 TO MIN(1000, barindex – 1) DO

      barPos10 = barindex – j

       

      ergWert10 = ergebnis1[j]

      ergWertVor10 = ergebnis1[j + 1]

       

      IF ergWert10 <= 0 THEN

        IF tief1min <> 0 THEN

          proz10 = ergWert10 / tief1min

          cLinie10 = fibo01min + (proz10 * (fibo1001min – fibo01min))

          prozVor10 = ergWertVor10 / tief1min

          cLinieVor10 = fibo01min + (prozVor10 * (fibo1001min – fibo01min))

        ELSE

          cLinie10 = fibo01min

          cLinieVor10 = fibo01min

        ENDIF

      ELSE

        IF hoch1min <> 0 THEN

          proz10 = ergWert10 / hoch1min

          cLinie10 = fiboHigh01min + (proz10 * (fiboHigh1001min – fiboHigh01min))

          prozVor10 = ergWertVor10 / hoch1min

          cLinieVor10 = fiboHigh01min + (prozVor10 * (fiboHigh1001min – fiboHigh01min))

        ELSE

          cLinie10 = fiboHigh01min

          cLinieVor10 = fiboHigh01min

        ENDIF

      ENDIF

       

      DRAWSEGMENT(barPos10 – 1, cLinieVor10, barPos10, cLinie10) COLOURED(0, 255, 0) STYLE(LINE, 3)

    NEXT


    return




    Vielen Dank für eure Hilfe!

    #257801 quote
    Iván González
    Moderator
    Master

    Hallo.

    Das von Ihnen beschriebene Problem tritt auf, weil der Code bei der Durchführung von Transformationsberechnungen innerhalb des TIMEFRAME(10 minutes) -Blocks automatisch die Preise (Hoch, Tief) und Fibonacci-Niveaus verwendet, die den 10-Minuten-Kerzen entsprechen, und dabei die 1-Minuten-Referenzen, die Sie zu speichern versuchten, überschreibt oder ignoriert.

    Um das Problem zu beheben, versuchen Sie Folgendes: Zerlegen Sie die Logik in drei Schritte:

    1. Kontext 1 Minute (Standard): Berechnet und speichert die Referenz-Fibonacci-Niveaus.
    2. Kontext 10 Minuten: Ermitteln Sie nur den Rohwert des Indikators ( ergebnis1 ). Führen Sie hier keine Transformation durch.
    3. Kontext 1 Minute (Standard – Rückgabe): Verwenden Sie den in Schritt 2 abgerufenen Rohwert und wenden Sie die mathematischen Berechnungen unter Verwendung der Referenzen aus Schritt 1 an. Zeichnen Sie abschließend das Objekt.


    robertogozzi thanked this post
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.

Multi-Timeframe Indikator – Verschiedene Timeframes im gleichen Chart


ProBuilder: Indikatoren & Custom Tools

New Reply
Author
author-avatar
elviko @elviko Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Iván González
2 weeks, 2 days ago.

Topic Details
Forum: ProBuilder: Indikatoren & Custom Tools
Language: German
Started: 02/11/2026
Status: Active
Attachments: No files
Logo Logo
Loading...