S/R-Beschriftung: Chart und M15-Karte nannten verschiedene Zahlen (v1.35, v=169)

User: "die Beschriftung fuer S/R im Chart stimmt nicht mit der Analyse in der
M15-Karte ueberein."

Die LEVEL stimmten -- nur die Zahl daneben nicht. Live gegengeprueft: die CSV
enthielt R;82.069;69, Gate 3 der Karte meldete res 82.069 / p_break 69. Beide
kommen aus _draw_levels(), sind also per Konstruktion identisch; auch die
Distanzen sind exakt (0,477~0,48 / 0,909~0,91 / 0,455~0,45).

DER DEFEKT: das Chart schrieb die NACKTE Zahl = P(Bruch), die Karte klappte
unter 45 % still auf P(Abprall) um und nennt 45-55 % "unentschieden".

  P(Bruch) 33 %  ->  Chart "33%"   Karte "67 % Abprall"
  P(Bruch) 46 %  ->  Chart "46%"   Karte "unentschieden"
  P(Bruch) 72 %  ->  Chart "72%"   Karte "72 % Bruch"

Beide Zahlen richtig, aber die Chart-Zahl sagte nicht, WAS sie ist.
GEMESSEN in 88,1 % der Zeit verschieden (1.797 Vorhersagen / 14 Tage: 66,3 %
unter 45 %, 21,9 % im unentschiedenen Band).

Behoben im Indikator v1.35, wortgleich zu app.js. Ueber 1.678 echte
P(break)-Werte gegengeprueft: Uebereinstimmung 0 % -> 100 %.
Ins RICHTIGE Terminal kompiliert (es gibt real zwei Ordner, nur D0E8209F...
bekommt die sr_levels.csv): 0 errors, 0 warnings, .ex5 frisch, Version im
Terminal gegengeprueft.

Zwei Verdachtsmomente ausgeschlossen statt vermutet: eine stehengebliebene
Alt-Linie (der Indikator ruft ObjectsDeleteAll bei jedem Redraw) und ein falsch
einsortiertes Level (_draw_levels waehlt seit 23.07. nach Lage zum Kurs).

ZWEITER Befund derselben Klasse, ebenfalls behoben: Gate 3 und 3b nannten Level
aus VERSCHIEDENEN Zeitebenen, beide nur als "xATR" --
  3   M30-Pivots, ATR_M15, im Chart gezeichnet
  3b  M5-Pivots,  ATR_M5,  NICHT gezeichnet
Real standen "0,48xATR" und "0,45xATR" nebeneinander, die nicht vergleichbar
sind, und die Karte nannte einen "Support 81,78", den man im Chart vergeblich
sucht (alle 10 M30-Pivots lagen ueber dem Kurs).
Die Quellen-Trennung BLEIBT -- entry_room_atr=0,6 ist ueber 80k Bars auf M5
kalibriert. Geaendert wurde nur die Beschriftung plus Tooltips.

Reine Anzeige: an Gates, Gewichten und Order-Logik nichts geaendert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-13 16:06:06 +02:00
co-authored by Claude Opus 5
parent 95521d041c
commit 77ed1d5572
4 changed files with 107 additions and 14 deletions
+27 -5
View File
@@ -12,7 +12,15 @@
//| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). |
//+------------------------------------------------------------------+
#property copyright "Oil Trading Bot"
#property version "1.34"
#property version "1.35"
// v1.35 (2026-08-13): S/R-LABEL WORTGLEICH ZUR M15-KARTE (User: „die Beschriftung
// fuer S/R im Chart stimmt nicht mit der Analyse in der M15-Karte ueberein").
// Das Label trug seit v1.27 die NACKTE Zahl = P(Durchbruch); die Karte klappt
// unter 45 % auf P(Abprall) um und nennt 45-55 % „unentschieden". Dasselbe
// Level stand damit im Chart als „33%" und in der Karte als „67 % Abprall" —
// beide Zahlen richtig, aber die Chart-Zahl sagte nicht, WAS sie ist.
// GEMESSEN in 88,1 % der Zeit verschieden (1.797 Vorhersagen/14 Tage).
// Jetzt: „69% Bruch" / „unentschieden" / „67% Abprall" — identisch zu app.js.
// v1.34 (2026-08-01): HYPERLIQUID-KURS (HL;...) unter Kurs und G/V oben rechts,
// bernstein. HL handelt 24/7, Pepperstone nicht - am Wochenende der einzige
// lebende Kurs; die Basis (~0,45 $ Kontrakt-Differenz) ist herausgerechnet,
@@ -472,13 +480,27 @@ void Redraw()
double price = StringToDouble(p[1]);
if(price <= 0) continue;
// Feld 3 (optional) = P(Durchbruch) in % aus dem kalibrierten Modell des
// Bots. Niedrig = Level haelt eher, hoch = bricht eher. Im LABEL steht nur
// die nackte Zahl („Widerstand 84.536 · 34%", User-Wunsch 2026-07-30);
// der ausgeschriebene Hinweis bleibt im Tooltip der Linie.
// Bots. Niedrig = Level haelt eher, hoch = bricht eher.
// ⚠⚠ WORTGLEICH ZUR M15-KARTE (Fix 2026-08-13, v1.35, User: „die
// Beschriftung fuer S/R im Chart stimmt nicht mit der Analyse in der
// M15-Karte ueberein"). Hier stand bis dahin die NACKTE Zahl = P(Bruch).
// Die Karte (`app.js` lesart()/pTxt()) klappt unter 45 % aber auf den
// GEGENWERT P(Abprall) um und nennt 4555 % „unentschieden" — dasselbe
// Level trug damit im Chart „33%" und in der Karte „67 % Abprall".
// Beide Zahlen waren richtig, aber die Chart-Zahl sagte nicht, WAS sie
// ist. GEMESSEN betraf das 88,1 % der Zeit (1.797 Vorhersagen/14 Tage:
// 66,3 % lagen unter 45 %, 21,9 % im unentschiedenen Band).
// ➜ Wer die Formulierung hier aendert, muss `lesart()` in app.js
// mitaendern — sonst laufen sie wieder auseinander.
string lbl = (typ=="R" ? "Widerstand " : "Unterstuetzung ")
+ DoubleToString(price, (int)_Digits);
if(InpShowPBreak && k > 2 && StringLen(p[2]) > 0)
lbl += " · " + p[2] + "%"; // nur die Zahl (User-Wunsch 2026-07-30)
{
int pb = (int)StringToInteger(p[2]);
if(pb >= 45 && pb <= 55) lbl += " · unentschieden";
else if(pb > 55) lbl += " · " + IntegerToString(pb) + "% Bruch";
else lbl += " · " + IntegerToString(100-pb) + "% Abprall";
}
color col = (typ=="R" ? InpResColor : InpSupColor);
string nm = PFX + typ + "_" + IntegerToString(idx);
if(ObjectCreate(0, nm, OBJ_HLINE, 0, 0, price))