Interne Variable weich vom Chart-OHLC derselben geschlossenen Kerze ab

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #265451 quote
    Lili HRLili HR
    Participant
    Junior

    Ich habe einen benutzerdefinierten ProScreener (ProBuilder), der ca. 33 Instrumente in Echtzeit auswertet, implementiert in zwei unabhängigen Skripten, die dieselbe Logik zur Berechnung der Zeitfenster-Spanne (Range) verwenden. Am 02.10.2026 änderte sich für den DAX eine interne Variable meines Codes (die den höchsten innerhalb eines festen Zeitfensters erreichten Kurs speichert, 00:00–08:59 MESZ plus eine einzige erlaubte Verlängerung bis 09:05) auf der Kerze von 09:00:00–09:05:00 MESZ. Mein Kerzenchart (5-Minuten-Timeframe) zeigt für genau diese Kerze ein Hoch von 25.012,1 — niedriger als der Wert, den mein Code bereits vor 09:00 Uhr akkumuliert hatte (25.063,9). Meine Logik (IF high > CajaMax THEN CajaMax = high) hätte diesen Wert also gar nicht ändern dürfen. Trotzdem erfasste mein Skript als Endwert 25.111 — eine Differenz von 99 Punkten gegenüber dem im Chart angezeigten Hoch dieser Kerze. Fast zwei Stunden später (10:53 MESZ) hatte sich dieselbe interne Variable erneut geändert, diesmal auf 25.143,9 — ein dritter, abweichender Wert, weit außerhalb jedes Zeitfensters, das meine Logik zur Berechnung dieser Spanne verwendet. Ich konnte dies zum selben Zeitpunkt identisch in meinen zwei unabhängigen Skripten bestätigen, was einen eigenen Programmierfehler ausschließt und auf ein Problem an der Datenquelle hindeutet. Soweit ich weiß, führt ProScreener den gesamten Code nach Abschluss jedes Scan-Zyklus über das gesamte Instrumenten-Universum erneut von der ersten Kerze an aus. Könnte eine verspätete Korrektur/Konsolidierung einer bereits “geschlossenen” Kerze durch den Datenfeed erklären, dass sich meine akkumulierte Variable bei späteren Neuberechnungen ändert, Stunden nach dieser Kerze? Ich habe dasselbe Muster (eine Bereichsgrenze mit einem Wert, der nicht dem Chart entspricht) bei anderen Instrumenten (CL, GBPUSD) in früheren Sitzungen reproduziert. Plattformversion: [bitte ergänzen] Kontotyp / Datenfeed: [bitte ergänzen] Instrument / genaues Ticker-Symbol: DAX, [genauen Code ergänzen] Chart-Timeframe: 5 Minuten ProScreener-Timeframe: [bitte ergänzen] Eingestellte Zeitzone: MESZ (UTC+2) Datum der Reproduktion: 02.10.2026 Beobachtete Werte (DAX): – Reales Box-Hoch (Chart, Box-Indikator): 25.063,9 – Hoch der Kerze 09:00–09:05 (Chart): 25.012,1 – Intern erfasster Wert (~09:00–09:55): 25.111 – Später intern erfasster Wert (10:53 MESZ, gleicher Tag): 25.143,9 Ich kann bei Bedarf den relevanten Code-Ausschnitt (nur Box-Konstruktion, ohne die proprietäre Trading-/Scoring-Logik) sowie Screenshots von Chart und Screener-Ausgabe für diesen Fall nachreichen.

    Captura-de-pantalla-2026-10-02-a-las-12.17.58-scaled.png Captura-de-pantalla-2026-10-02-a-las-12.17.58-scaled.png
    #265452 quote
    Lili HRLili HR
    Participant
    Junior

    Anbei der relevante Codeausschnitt (nur Berechnung der Sitzungsspanne/Box, ohne die eigentliche Handelslogik), der das in der Anfrage beschriebene Verhalten reproduziert. CajaMax/CajaMin entsprechen den im Text genannten internen Werten; UltimaExtCaja ist eine zusätzlich eingebaute Diagnosevariable, die die Uhrzeit der letzten Änderung von CajaMax/CajaMin speichert.

    // ============================================================
    // Codeausschnitt zur Fehlermeldung an ProRealTime-Support
    // DAX, Sitzung 02.10.2026 — Berechnung der Sitzungsspanne (Box)
    // ------------------------------------------------------------
    // Auszug OHNE die eigentliche Handels-/Scoring-Logik (Entry, SL,
    // TP1/TP2, Filter, Score-Gewichtung usw.) — nur der Teil, der die
    // Variablen CajaMax/CajaMin (Session-Hoch/-Tief) berechnet und der
    // im gemeldeten Fall das beschriebene Verhalten zeigt. Identisch in
    // den zwei unabhaengigen Skripten, die denselben Fehler zeigen.
    // ============================================================
    
    // --- Sommerzeit-Berechnung (Europe/Berlin, automatisch) ---
    aDay        = date MOD 100
    aMonth      = (date MOD 10000 - date MOD 100) / 100
    aDayOfWeek  = DayOfWeek
    IF aDayOfWeek = 7 THEN
    aDayOfWeek0Dom = 0
    ELSE
    aDayOfWeek0Dom = aDayOfWeek
    ENDIF
    aLastSunDay = aDay - aDayOfWeek0Dom
    IF aMonth >= 4 AND aMonth <= 9 THEN
    aAutoDST = 1
    ELSIF aMonth = 3 THEN
    IF aLastSunDay >= 25 THEN
    aAutoDST = 1
    ELSE
    aAutoDST = 0
    ENDIF
    ELSIF aMonth = 10 THEN
    IF aLastSunDay >= 25 THEN
    aAutoDST = 0
    ELSE
    aAutoDST = 1
    ENDIF
    ELSE
    aAutoDST = 0
    ENDIF
    IF aAutoDST = 1 THEN
    berlinOffset = 2
    ELSE
    berlinOffset = 1
    ENDIF
    
    utcStartHour  = 0
    utcEndHour    = 7
    HoraInicioBox = (utcStartHour + berlinOffset) * 10000
    HoraFinBox    = (utcEndHour + berlinOffset) * 10000 - 100
    
    // --- Erkennung Sitzungswechsel (taeglicher Reset um 00:00 CET/CEST) ---
    NewSessionCET = (time < time[1]) OR (DayOfWeek <> DayOfWeek[1] AND DayOfWeek[1] = 5)
    
    // --- Initialisierung / Carry-forward, jede Kerze ---
    CajaMax       = CajaMax[1]
    CajaMin       = CajaMin[1]
    inBox         = inBox[1]
    // Diagnosevariable (read-only, nur zur Fehlersuche hinzugefuegt):
    // speichert die Uhrzeit (HHMMSS) der letzten Aenderung von CajaMax/CajaMin.
    UltimaExtCaja = UltimaExtCaja[1]
    
    // --- Taeglicher Reset ---
    IF NewSessionCET THEN
    CajaMax       = 0
    CajaMin       = 0
    UltimaExtCaja = 0
    ENDIF
    
    // --- Aufbau der Sitzungsspanne (00:00-08:59 CEST im gemeldeten Fall) ---
    IF time > HoraInicioBox AND time <= HoraFinBox THEN
    IF NewSessionCET OR inBox = 0 THEN
    CajaMax = high
    CajaMin = low
    inBox   = 1
    UltimaExtCaja = time
    ELSE
    IF high > CajaMax THEN
    CajaMax = high
    UltimaExtCaja = time
    ENDIF
    IF low < CajaMin THEN
    CajaMin = low
    UltimaExtCaja = time
    ENDIF
    ENDIF
    ELSE
    inBox = 0
    ENDIF
    
    // --- Einzige erlaubte Verlaengerung: die eine Kerze, die HoraFinBox kreuzt ---
    IF time > HoraFinBox AND time[1] <= HoraFinBox THEN
    IF CajaMax > 0 AND CajaMin > 0 THEN
    IF high > CajaMax THEN
    CajaMax = high
    UltimaExtCaja = time
    ENDIF
    IF low < CajaMin THEN
    CajaMin = low
    UltimaExtCaja = time
    ENDIF
    ENDIF
    ENDIF
    
    // ------------------------------------------------------------
    // Am Ende des Skripts (ProScreener-Ausgabe) werden u.a. folgende
    // Werte angezeigt, auf die sich die Fehlermeldung bezieht:
    //   CajaMax, CajaMin        -> interner Session-Hoch/-Tief-Wert
    //   UltimaExtCaja           -> Uhrzeit der letzten Aenderung (Diagnose)
    //
    // Beobachtete Werte fuer DAX, 02.10.2026:
    //   Reales Box-Hoch (Chart):                 25.063,9
    //   Hoch der Kerze 09:00-09:05 (Chart):      25.012,1
    //   CajaMax, erstmals beobachtet (~09:xx):   25.111
    //   CajaMax, spaeter beobachtet (10:53 CEST):25.143,9
    //   UltimaExtCaja zeigte in beiden Faellen:  09:00:00
    // -----------------------------------------------------------
    


    #265453 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    In der ProRealTime-Sprache sind diese Anweisungen:

    CajaMax    = CajaMax[1]
    
    CajaMin    = CajaMin[1]
    
    inBox     = inBox[1]
    
    UltimaExtCaja = UltimaExtCaja[1]
    

    überflüssig, da ALLE Variablen mit demselben Wert, den sie in der vorherigen Kerze hatten, in die neue Kerze übernommen werden.

    Die Verwendung von [1] für den Zugriff auf den Wert der vorherigen Kerze ist also nur dann sinnvoll, wenn dieser Wert in der Zwischenzeit geändert wurde.

    Das dient allerdings nur der Dokumentation; es ist mit Sicherheit nicht die Ursache für dein Problem.

    Warum fragst du nicht die KI?

    Ich weiß nicht, ob dir diese hier weiterhelfen kann:

    https://ai.prorealcode.com/

    ansonsten kannst du es mit ChatGPT, Gemini, Copilot usw. versuchen.



    #265454 quote
    Lili HRLili HR
    Participant
    Junior

    Danke für den Hinweis zu den [1]-Zeilen — verstanden, das ist nur Dokumentation und sicher nicht die Ursache.

    Bevor ich die eigentliche Frage wiederhole, die naheliegenden Alternativerklärungen habe ich bereits geprüft und ausgeschlossen:

    • Alle betroffenen Scripts/Instrumente laufen auf demselben Timeframe (M5) — kein Timeframe-Unterschied zwischen ProScreener und Chart.
    • Das Problem tritt auch bei Instrumenten auf, die eindeutig nur einem Symbol/Feed zugeordnet sind — kein Symbol-Mapping- oder Feed-Unterschied.
    • Die Sitzungserkennung in meinem Code basiert ausschließlich auf time/DayOfWeek der jeweiligen Kerze, nicht auf deren Position innerhalb der ProScreener-Rekonstruktion.
    • Laut Handbuch verarbeitet ProScreener maximal die letzten 256 Kerzen (1.024 auf Premium-Plattformen) — bei M5 deckt das aber meine komplette Sitzung plus mehrere Stunden danach ab, das erklärt die Größenordnung meines Falls nicht.

    Ich habe die Frage zusätzlich mit Perplexity, ChatGPT und der ProRealCode-KI (ai.prorealcode.com) geprüft, wie vorgeschlagen. Keine davon konnte eine offizielle Dokumentation oder einen Forenbeitrag mit Moderator-Bestätigung finden, die bestätigt, dass der High/Low-Wert einer bereits abgeschlossenen Kerze sich zwischen zwei ProScreener-Zyklen ändern kann — alle drei stufen das explizit als “nicht bestätigt” ein, nicht als widerlegt.

    Die eigentliche Frage bleibt also: Kann der High/Low-Wert einer bereits abgeschlossenen Kerze zwischen zwei vollständigen ProScreener-Zyklen (für dasselbe Instrument, Konto, Feed und Timeframe) unterschiedlich ausfallen? In meinem Fall änderte sich mein akkumulierter Session-Höchstwert für den DAX zwischen 09:00 und 10:53 Uhr gleich zweimal (25.111 → 25.143,9), obwohl die betroffene Kerze laut Chart (Hoch 25.012,1) diese Änderung logisch nicht hätte auslösen dürfen — und das bei einer Kerze, die zu diesem Zeitpunkt längst abgeschlossen war.

    Gibt es einen dokumentierten Mechanismus (späte Datenkorrektur/-konsolidierung des Feeds für eine bereits geschlossene Kerze, oder etwas anderes), der das erklären könnte?

Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Interne Variable weich vom Chart-OHLC derselben geschlossenen Kerze ab


ProBuilder: Indikatoren & Custom Tools

New Reply
Author
author-avatar
Lili HR @lilihr Participant
Summary

This topic contains 3 replies,
has 2 voices, and was last updated by Lili HRLili HR
1 hour, 24 minutes ago.

Topic Details
Forum: ProBuilder: Indikatoren & Custom Tools
Language: German
Started: 10/02/2026
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...