Fájl részletek
Ezen az oldalon egy konkrét fájl aktuális állapotát tudod megnézni.
Fájl útvonala
/opt/bots/saturnus_monitor/app/templates/analysis_playground.html
Aktuális státusz
MODIFIED
Módosítás ideje
1777141487.9146042
Korábbi baseline időpont
1776111060.7483814
Előnézet (első 120 sor)
<!doctype html>
<html lang="hu">
<head>
<meta charset="utf-8">
<title>Saturnus Monitor – Stratégia-labor</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background: #f5f6fa;
color: #222;
}
h1, h2, h3 {
margin-top: 0;
}
.card {
background: #fff;
border-radius: 14px;
padding: 16px;
box-shadow: 0 2px 10px rgba(0,0,0,0.08);
margin-bottom: 20px;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
margin-bottom: 20px;
}
.grid-2 {
display: grid;
grid-template-columns: 1.05fr 1fr;
gap: 16px;
margin-bottom: 20px;
}
.k {
color: #666;
font-size: 13px;
margin-bottom: 4px;
}
.v {
font-size: 22px;
font-weight: bold;
margin-bottom: 10px;
}
.small {
font-size: 13px;
color: #555;
}
.muted {
color: #777;
}
.actions a, .actions button {
display: inline-block;
margin-right: 10px;
margin-top: 8px;
text-decoration: none;
background: #1f6feb;
color: #fff;
padding: 8px 12px;
border-radius: 8px;
font-size: 14px;
border: none;
cursor: pointer;
}
.secondary-link {
background: #374151 !important;
}
form .row {
display: grid;
grid-template-columns: 48px 1fr 150px;
gap: 12px;
align-items: center;
margin-bottom: 10px;
}
form .row-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
margin-bottom: 10px;
}
label {
font-size: 14px;
font-weight: bold;
}
input[type="text"], input[type="number"], select {
width: 100%;
padding: 8px 10px;
border: 1px solid #d0d7de;
border-radius: 8px;
font-size: 14px;
box-sizing: border-box;
background: #fff;
}
table {
width: 100%;
border-collapse: collapse;
background: #fff;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(0,0,0,0.08);
margin-bottom: 20px;
}
th, td {
padding: 10px 8px;
border-bottom: 1px solid #eee;
text-align: left;
font-size: 13px;
vertical-align: top;
}
th {
background: #eef3ff;
}
.chart-card {
background: #fff;
border-radius: 14px;
padding: 16px;
box-shadow: 0 2px 10px rgba(0,0,0,0.08);
margin-bottom: 20px;
}
Csak változott diff sorok
--- baseline
+++ current
@@ -178,7 +178,7 @@
- <a class="secondary-link" href="/naplo/elemzes/export.csv?rules_source={{ params.rules_source }}&start_mode={{ params.start_mode }}&initial_capital={{ params.initial_capital }}&fee_pct={{ params.fee_pct_ui }}&slippage_pct={{ params.slippage_pct_ui }}&rows_limit={{ params.rows_limit_label }}&panic_buy_confirm_ticks={{ params.panic_buy_confirm_ticks }}&ma_filter_enabled={{ '1' if params.ma_filter_enabled else '0' }}&ma_period={{ params.ma_period }}&std_sell_enabled={{ '1' if params.std_sell_enabled else '0' }}&panic_sell_enabled={{ '1' if params.panic_sell_enabled else '0' }}&std_buy_enabled={{ '1' if params.std_buy_enabled else '0' }}&panic_buy_enabled={{ '1' if params.panic_buy_enabled else '0' }}&std_sell_pct={{ params.std_sell_pct_ui }}&recovery_sell_retrace_pct={{ params.recovery_sell_retrace_pct_ui }}&panic_sell_pct={{ params.panic_sell_pct_ui }}&catastrophe_sell_pct={{ params.catastrophe_sell_pct_ui }}&std_buy_pct={{ params.std_buy_pct_ui }}&recovery_buy_rebound_pct={{ params.recovery_buy_rebound_pct_ui }}&panic_buy_pct={{ params.panic_buy_pct_ui }}&catastrophe_buy_pct={{ params.catastrophe_buy_pct_ui }}">Szimulált trade-ek CSV export</a>
+ <a class="secondary-link" href="/naplo/elemzes/export.csv?rules_source={{ params.rules_source }}&start_mode={{ params.start_mode }}&initial_capital={{ params.initial_capital }}&fee_pct={{ params.fee_pct_ui }}&slippage_pct={{ params.slippage_pct_ui }}&rows_limit={{ params.rows_limit_label }}&panic_buy_confirm_ticks={{ params.panic_buy_confirm_ticks }}&ma_filter_enabled={{ '1' if params.ma_filter_enabled else '0' }}&ma_period={{ params.ma_period }}&ma_sideways_band_pct={{ params.ma_sideways_band_pct_ui }}&std_sell_enabled={{ '1' if params.std_sell_enabled else '0' }}&panic_sell_enabled={{ '1' if params.panic_sell_enabled else '0' }}&std_buy_enabled={{ '1' if params.std_buy_enabled else '0' }}&panic_buy_enabled={{ '1' if params.panic_buy_enabled else '0' }}&std_sell_pct={{ params.std_sell_pct_ui }}&recovery_sell_retrace_pct={{ params.recovery_sell_retrace_pct_ui }}&recovery_profit_target_pct={{ params.recovery_profit_target_pct_ui }}&sell_reversal_min_pct={{ params.sell_reversal_min_pct_ui }}&panic_sell_pct={{ params.panic_sell_pct_ui }}&catastrophe_sell_pct={{ params.catastrophe_sell_pct_ui }}&std_buy_pct={{ params.std_buy_pct_ui }}&recovery_buy_rebound_pct={{ params.recovery_buy_rebound_pct_ui }}&panic_buy_pct={{ params.panic_buy_pct_ui }}&catastrophe_buy_pct={{ params.catastrophe_buy_pct_ui }}">Szimulált trade-ek CSV export</a>
@@ -195,7 +195,7 @@
- <strong>LAB override</strong> módban az itt megadott értékekkel fut a szimuláció.
+ <strong>Kézi labor paraméterek</strong> esetén az itt megadott értékekkel fut a szimuláció.
@@ -206,8 +206,8 @@
- <option value="lab" {% if params.rules_source == 'lab' %}selected{% endif %}>LAB override / effective lab</option>
- <option value="canonical" {% if params.rules_source == 'canonical' %}selected{% endif %}>Kanonikus rules.json / effective bot</option>
+ <option value="lab" {% if params.rules_source == 'lab' %}selected{% endif %}>Kézi labor paraméterek</option>
+ <option value="canonical" {% if params.rules_source == 'canonical' %}selected{% endif %}>Canonical alap + kézi felülírás</option>
@@ -257,6 +257,11 @@
+
+ <div class="row">
+ <label for="ma_sideways_band_pct">MA oldalazási sáv %</label>
+ <input type="text" inputmode="decimal" name="ma_sideways_band_pct" id="ma_sideways_band_pct" value="{{ params.ma_sideways_band_pct_ui|default('0,05') }}">
+ </div>
@@ -283,7 +288,7 @@
- <input type="text" inputmode="decimal" name="std_sell_pct" id="std_sell_pct" value="{{ params.std_sell_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="std_sell_pct" id="std_sell_pct" value="{{ params.std_sell_pct_ui }}">
@@ -292,12 +297,17 @@
- <input type="text" inputmode="decimal" name="recovery_sell_retrace_pct" id="recovery_sell_retrace_pct" value="{{ params.recovery_sell_retrace_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="recovery_sell_retrace_pct" id="recovery_sell_retrace_pct" value="{{ params.recovery_sell_retrace_pct_ui }}">
- <input type="text" inputmode="decimal" name="recovery_profit_target_pct" id="recovery_profit_target_pct" value="{{ params.recovery_profit_target_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="recovery_profit_target_pct" id="recovery_profit_target_pct" value="{{ params.recovery_profit_target_pct_ui }}">
+ </div>
+ <div class="row">
+ <div></div>
+ <label for="sell_reversal_min_pct">SELL reversal minimum %</label>
+ <input type="text" inputmode="decimal" name="sell_reversal_min_pct" id="sell_reversal_min_pct" value="{{ params.sell_reversal_min_pct_ui }}">
@@ -309,7 +319,7 @@
- <input type="text" inputmode="decimal" name="panic_sell_pct" id="panic_sell_pct" value="{{ params.panic_sell_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="panic_sell_pct" id="panic_sell_pct" value="{{ params.panic_sell_pct_ui }}">
@@ -332,7 +342,7 @@
- <input type="text" inputmode="decimal" name="std_buy_pct" id="std_buy_pct" value="{{ params.std_buy_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="std_buy_pct" id="std_buy_pct" value="{{ params.std_buy_pct_ui }}">
@@ -341,7 +351,7 @@
- <input type="text" inputmode="decimal" name="recovery_buy_rebound_pct" id="recovery_buy_rebound_pct" value="{{ params.recovery_buy_rebound_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="recovery_buy_rebound_pct" id="recovery_buy_rebound_pct" value="{{ params.recovery_buy_rebound_pct_ui }}">
@@ -356,7 +366,7 @@
- <input type="text" inputmode="decimal" name="panic_buy_pct" id="panic_buy_pct" value="{{ params.panic_buy_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="panic_buy_pct" id="panic_buy_pct" value="{{ params.panic_buy_pct_ui }}">
@@ -579,6 +589,8 @@
+ setVal('recovery_profit_target_pct', pctUi(data.recovery_profit_target_pct));
+ setVal('sell_reversal_min_pct', pctUi(data.sell_reversal_min_pct));
Teljes diff
--- baseline
+++ current
@@ -178,7 +178,7 @@
<a href="/naplo/fajlok">Fájltérkép</a>
<a href="/naplo/">Monitor főoldal</a>
<a href="/naplo/download/prices">prices.csv letöltése</a>
- <a class="secondary-link" href="/naplo/elemzes/export.csv?rules_source={{ params.rules_source }}&start_mode={{ params.start_mode }}&initial_capital={{ params.initial_capital }}&fee_pct={{ params.fee_pct_ui }}&slippage_pct={{ params.slippage_pct_ui }}&rows_limit={{ params.rows_limit_label }}&panic_buy_confirm_ticks={{ params.panic_buy_confirm_ticks }}&ma_filter_enabled={{ '1' if params.ma_filter_enabled else '0' }}&ma_period={{ params.ma_period }}&std_sell_enabled={{ '1' if params.std_sell_enabled else '0' }}&panic_sell_enabled={{ '1' if params.panic_sell_enabled else '0' }}&std_buy_enabled={{ '1' if params.std_buy_enabled else '0' }}&panic_buy_enabled={{ '1' if params.panic_buy_enabled else '0' }}&std_sell_pct={{ params.std_sell_pct_ui }}&recovery_sell_retrace_pct={{ params.recovery_sell_retrace_pct_ui }}&panic_sell_pct={{ params.panic_sell_pct_ui }}&catastrophe_sell_pct={{ params.catastrophe_sell_pct_ui }}&std_buy_pct={{ params.std_buy_pct_ui }}&recovery_buy_rebound_pct={{ params.recovery_buy_rebound_pct_ui }}&panic_buy_pct={{ params.panic_buy_pct_ui }}&catastrophe_buy_pct={{ params.catastrophe_buy_pct_ui }}">Szimulált trade-ek CSV export</a>
+ <a class="secondary-link" href="/naplo/elemzes/export.csv?rules_source={{ params.rules_source }}&start_mode={{ params.start_mode }}&initial_capital={{ params.initial_capital }}&fee_pct={{ params.fee_pct_ui }}&slippage_pct={{ params.slippage_pct_ui }}&rows_limit={{ params.rows_limit_label }}&panic_buy_confirm_ticks={{ params.panic_buy_confirm_ticks }}&ma_filter_enabled={{ '1' if params.ma_filter_enabled else '0' }}&ma_period={{ params.ma_period }}&ma_sideways_band_pct={{ params.ma_sideways_band_pct_ui }}&std_sell_enabled={{ '1' if params.std_sell_enabled else '0' }}&panic_sell_enabled={{ '1' if params.panic_sell_enabled else '0' }}&std_buy_enabled={{ '1' if params.std_buy_enabled else '0' }}&panic_buy_enabled={{ '1' if params.panic_buy_enabled else '0' }}&std_sell_pct={{ params.std_sell_pct_ui }}&recovery_sell_retrace_pct={{ params.recovery_sell_retrace_pct_ui }}&recovery_profit_target_pct={{ params.recovery_profit_target_pct_ui }}&sell_reversal_min_pct={{ params.sell_reversal_min_pct_ui }}&panic_sell_pct={{ params.panic_sell_pct_ui }}&catastrophe_sell_pct={{ params.catastrophe_sell_pct_ui }}&std_buy_pct={{ params.std_buy_pct_ui }}&recovery_buy_rebound_pct={{ params.recovery_buy_rebound_pct_ui }}&panic_buy_pct={{ params.panic_buy_pct_ui }}&catastrophe_buy_pct={{ params.catastrophe_buy_pct_ui }}">Szimulált trade-ek CSV export</a>
</div>
<div class="grid-2" style="margin-top:20px;">
@@ -195,7 +195,7 @@
{% endif %}
</div>
<div class="small" style="margin-top:8px;">
- <strong>LAB override</strong> módban az itt megadott értékekkel fut a szimuláció.
+ <strong>Kézi labor paraméterek</strong> esetén az itt megadott értékekkel fut a szimuláció.
A <strong>Betöltés a Beállításokból</strong> gomb a runner aktuális százalékait tölti be ide.
<strong>Kanonikus</strong> módban a közös rules.json / effective bot szabályhalmaz érvényesül.
Közös szabályforrás szerkesztése: <strong>/rules</strong>
@@ -206,8 +206,8 @@
<div>
<label for="rules_source">Szabályforrás</label>
<select name="rules_source" id="rules_source" onchange="this.form.submit()">
- <option value="lab" {% if params.rules_source == 'lab' %}selected{% endif %}>LAB override / effective lab</option>
- <option value="canonical" {% if params.rules_source == 'canonical' %}selected{% endif %}>Kanonikus rules.json / effective bot</option>
+ <option value="lab" {% if params.rules_source == 'lab' %}selected{% endif %}>Kézi labor paraméterek</option>
+ <option value="canonical" {% if params.rules_source == 'canonical' %}selected{% endif %}>Canonical alap + kézi felülírás</option>
</select>
</div>
<div>
@@ -257,6 +257,11 @@
<label for="ma_period">MA periódus</label>
<input type="number" step="1" min="5" name="ma_period" id="ma_period" value="{{ params.ma_period }}">
</div>
+
+ <div class="row">
+ <label for="ma_sideways_band_pct">MA oldalazási sáv %</label>
+ <input type="text" inputmode="decimal" name="ma_sideways_band_pct" id="ma_sideways_band_pct" value="{{ params.ma_sideways_band_pct_ui|default('0,05') }}">
+ </div>
</div>
<div class="row-2">
@@ -283,7 +288,7 @@
<input type="checkbox" name="std_sell_enabled" value="1" {% if params.std_sell_enabled %}checked{% endif %}>
</div>
<label for="std_sell_pct">csúcs - %</label>
- <input type="text" inputmode="decimal" name="std_sell_pct" id="std_sell_pct" value="{{ params.std_sell_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="std_sell_pct" id="std_sell_pct" value="{{ params.std_sell_pct_ui }}">
</div>
</div>
@@ -292,12 +297,17 @@
<div class="row">
<div></div>
<label for="recovery_sell_retrace_pct">csúcs - % (recovery)</label>
- <input type="text" inputmode="decimal" name="recovery_sell_retrace_pct" id="recovery_sell_retrace_pct" value="{{ params.recovery_sell_retrace_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="recovery_sell_retrace_pct" id="recovery_sell_retrace_pct" value="{{ params.recovery_sell_retrace_pct_ui }}">
</div>
<div class="row">
<div></div>
<label for="recovery_profit_target_pct">profit cél % (recovery)</label>
- <input type="text" inputmode="decimal" name="recovery_profit_target_pct" id="recovery_profit_target_pct" value="{{ params.recovery_profit_target_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="recovery_profit_target_pct" id="recovery_profit_target_pct" value="{{ params.recovery_profit_target_pct_ui }}">
+ </div>
+ <div class="row">
+ <div></div>
+ <label for="sell_reversal_min_pct">SELL reversal minimum %</label>
+ <input type="text" inputmode="decimal" name="sell_reversal_min_pct" id="sell_reversal_min_pct" value="{{ params.sell_reversal_min_pct_ui }}">
</div>
</div>
@@ -309,7 +319,7 @@
<input type="checkbox" name="panic_sell_enabled" value="1" {% if params.panic_sell_enabled %}checked{% endif %}>
</div>
<label for="panic_sell_pct">bázis - %</label>
- <input type="text" inputmode="decimal" name="panic_sell_pct" id="panic_sell_pct" value="{{ params.panic_sell_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="panic_sell_pct" id="panic_sell_pct" value="{{ params.panic_sell_pct_ui }}">
</div>
</div>
@@ -332,7 +342,7 @@
<input type="checkbox" name="std_buy_enabled" value="1" {% if params.std_buy_enabled %}checked{% endif %}>
</div>
<label for="std_buy_pct">mélypont + %</label>
- <input type="text" inputmode="decimal" name="std_buy_pct" id="std_buy_pct" value="{{ params.std_buy_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="std_buy_pct" id="std_buy_pct" value="{{ params.std_buy_pct_ui }}">
</div>
</div>
@@ -341,7 +351,7 @@
<div class="row">
<div></div>
<label for="recovery_buy_rebound_pct">mélypont + % (recovery)</label>
- <input type="text" inputmode="decimal" name="recovery_buy_rebound_pct" id="recovery_buy_rebound_pct" value="{{ params.recovery_buy_rebound_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="recovery_buy_rebound_pct" id="recovery_buy_rebound_pct" value="{{ params.recovery_buy_rebound_pct_ui }}">
</div>
<div class="small" style="margin-top:8px;">
Buy-hierarchia v2: <strong>BUY_STANDARD < BUY_RECOVERY < BASE < BUY_PANIC < BUY_CATASTROPHE</strong>.
@@ -356,7 +366,7 @@
<input type="checkbox" name="panic_buy_enabled" value="1" {% if params.panic_buy_enabled %}checked{% endif %}>
</div>
<label for="panic_buy_pct">bázis + %</label>
- <input type="text" inputmode="decimal" name="panic_buy_pct" id="panic_buy_pct" value="{{ params.panic_buy_pct_ui }}" {% if params.rules_source == 'canonical' %}disabled{% endif %}>
+ <input type="text" inputmode="decimal" name="panic_buy_pct" id="panic_buy_pct" value="{{ params.panic_buy_pct_ui }}">
</div>
</div>
@@ -579,6 +589,8 @@
setVal('std_sell_pct', pctUi(data.std_sell_pct));
setVal('recovery_sell_retrace_pct', pctUi(data.recovery_sell_retrace_pct));
+ setVal('recovery_profit_target_pct', pctUi(data.recovery_profit_target_pct));
+ setVal('sell_reversal_min_pct', pctUi(data.sell_reversal_min_pct));
setVal('panic_sell_pct', pctUi(data.panic_sell_pct));
setVal('catastrophe_sell_pct', pctUi(data.catastrophe_sell_pct));