Gegen-/Stop-Seiten-Anzeige P(Durchbruch) (stop_approach, v=109)
Zeigt die Durchbruchwahrscheinlichkeit fuer das Level, dem sich der Kurs auf der Gegen-/Stop-Seite der offenen Position naehert (LONG->Support darunter, SHORT->Resistance darueber) — reine Anzeige, kein Auto-Close. Vorher per backtest_pbreak_calibration.py belegt: Modell haelt auf der Gegen-Seite out-of-sample (AUC 0,68/0,72 in beiden Haelften), niedriger P-Bereich kalibriert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6318817ac1
commit
027995d1e7
+23
@@ -495,6 +495,29 @@ function render(d) {
|
||||
hintEl.textContent = "";
|
||||
}
|
||||
}
|
||||
// Gegen-/Stop-Seiten-Hinweis (REINE ANZEIGE, kein Auto-Close): Kurs läuft auf das
|
||||
// Level GEGEN die Position zu → bricht es durch (Verlust läuft) oder prallt es ab?
|
||||
// P(break)-Modell auf der Gegen-Seite gemessen kalibriert (AUC 0,72 o.o.s.),
|
||||
// im hohen Bereich leicht konservativ. Nur zeigen, wenn KEIN Ziel-Level-Hint läuft.
|
||||
const stopEl = $("pos-stophint");
|
||||
if (stopEl) {
|
||||
const sa = d.stop_approach || null;
|
||||
if (hasPos && sa && !srHint) {
|
||||
const lvlName = sa.side === "sup" ? "Support" : "Widerstand";
|
||||
const dir = sa.side === "sup" ? "nach unten" : "nach oben";
|
||||
const confirmTxt = sa.confirm != null ? ` (Bruch ab ${fmt(sa.confirm, 3)})` : "";
|
||||
const holds = sa.p_break < 50;
|
||||
stopEl.className = "pos-stophint " + (holds ? "hold" : "break");
|
||||
const lead = sa.at_level ? `Am ${lvlName}` : `Nähert sich ${lvlName}`;
|
||||
stopEl.textContent =
|
||||
`ℹ️ ${lead} ${fmt(sa.level, 3)} (${sa.gap_atr}×ATR) · Durchbruch ${dir} ` +
|
||||
`${sa.p_break}%${confirmTxt} → ` +
|
||||
(holds ? "Level hält wahrscheinlich" : "bricht wahrscheinlich durch");
|
||||
} else {
|
||||
stopEl.className = "pos-stophint hidden";
|
||||
stopEl.textContent = "";
|
||||
}
|
||||
}
|
||||
// Schalter-Zustand: Auto-Close am S/R an/aus + Mindestgewinn
|
||||
const srBtn = $("srclose-btn");
|
||||
if (srBtn) {
|
||||
|
||||
+3
-2
@@ -6,7 +6,7 @@
|
||||
<meta name="theme-color" content="#0d1117">
|
||||
<title>Oil · MT5</title>
|
||||
<link rel="manifest" href="manifest.json">
|
||||
<link rel="stylesheet" href="style.css?v=108">
|
||||
<link rel="stylesheet" href="style.css?v=109">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Modul-Menü (ganz oben) -->
|
||||
@@ -90,6 +90,7 @@
|
||||
<div class="bounce-ind" id="wave-bounce"></div>
|
||||
<div class="cur-near" id="cur-near"></div>
|
||||
<div class="pos-srhint hidden" id="pos-srhint"></div>
|
||||
<div class="pos-stophint hidden" id="pos-stophint"></div>
|
||||
<div class="reasons" id="wave-reasons"></div>
|
||||
<div class="kv"><span>Setup</span><b id="wave-setup">—</b></div>
|
||||
<div class="kv"><span>Lauf</span><b id="wave-move">—</b></div>
|
||||
@@ -216,6 +217,6 @@
|
||||
<div id="toast" class="toast hidden"></div>
|
||||
|
||||
<script src="lightweight-charts.standalone.production.js?v=108"></script>
|
||||
<script src="app.js?v=108"></script>
|
||||
<script src="app.js?v=109"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+6
-3
@@ -165,15 +165,18 @@ main{display:grid;grid-template-columns:1fr 1fr;gap:11px;padding:11px}
|
||||
|
||||
/* ── Meldungen (EINHEITLICHES Design: Box + farbiger Links-Akzent) ─────────── */
|
||||
#card-pos .squeeze-ind, #card-pos .bounce-ind, #card-pos .cur-near,
|
||||
#card-pos .pos-srhint, #card-pos .reasons{
|
||||
#card-pos .pos-srhint, #card-pos .pos-stophint, #card-pos .reasons{
|
||||
display:block; margin:0 0 7px; padding:8px 11px; border-radius:var(--r-sm);
|
||||
background:var(--surface-2); border:1px solid var(--border);
|
||||
border-left:3px solid var(--line);
|
||||
font-size:12px; line-height:1.4; font-weight:600; letter-spacing:0; box-shadow:none;
|
||||
}
|
||||
/* leere Meldungen ausblenden (cur-near/srhint/reasons ohne Inhalt) */
|
||||
#card-pos .cur-near:empty, #card-pos .pos-srhint:empty,
|
||||
#card-pos .pos-srhint.hidden, #card-pos .reasons:empty{display:none}
|
||||
#card-pos .cur-near:empty, #card-pos .pos-srhint:empty, #card-pos .pos-stophint:empty,
|
||||
#card-pos .pos-srhint.hidden, #card-pos .pos-stophint.hidden, #card-pos .reasons:empty{display:none}
|
||||
/* Gegen-/Stop-Seiten-Hinweis (reine Anzeige): hält = grün, bricht = rot */
|
||||
#card-pos .pos-stophint.hold{color:var(--up); border-left-color:var(--up)}
|
||||
#card-pos .pos-stophint.break{color:var(--down); border-left-color:var(--down)}
|
||||
/* Farbvarianten — Links-Akzent + Textfarbe (Fläche bleibt einheitlich) */
|
||||
#card-pos .squeeze-ind.idle, #card-pos .bounce-ind.idle,
|
||||
#card-pos .reasons{color:var(--dim)}
|
||||
|
||||
Reference in New Issue
Block a user