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:
- Die 1-Min Fibonacci-Werte vorher speichern und im 10-Min-Kontext verwenden
- Den RAW-Wert (
ergebnis statt ergebnis1) verwenden 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!