关键位监控

This commit is contained in:
dekun
2026-05-21 06:26:07 +08:00
parent ee38eb1c45
commit 2cddce92a0
12 changed files with 784 additions and 110 deletions
+36
View File
@@ -208,6 +208,15 @@
</select>
<input name="upper" step="0.0001" placeholder="上沿/阻力" required>
<input name="lower" step="0.0001" placeholder="下沿/支撑" required>
<select name="sl_tp_mode" id="key-sl-tp-mode" title="止盈止损方案">
<option value="standard">标准突破</option>
<option value="box_1p5">箱体1R·止盈1.5H</option>
<option value="trend_manual">趋势单·自填止盈</option>
</select>
<input name="manual_take_profit" id="key-manual-tp" step="0.0001" placeholder="趋势单止盈价" style="display:none">
<label id="key-breakeven-wrap" style="display:inline-flex;align-items:center;gap:4px;font-size:.85rem;color:#9aa">
<input type="checkbox" name="breakeven_enabled" value="1" id="key-breakeven-cb"> 移动保本
</label>
<button type="submit">添加</button>
</form>
<div class="rule-tip">{{ key_gate_rule_text }}</div>
@@ -219,6 +228,8 @@
上:{{ k.upper }} 下:{{ k.lower }}
{% if k.fib_entry_price %}| 挂E:{{ k.fib_entry_price }}{% endif %}
| 已提醒:{{ k.notification_count or 0 }}/{{ k.max_notify or 3 }}
{% if k.monitor_type in ['箱体突破','收敛突破'] %}| 方案:{{ '标准' if (k.sl_tp_mode or 'standard') == 'standard' else ('1.5H' if k.sl_tp_mode == 'box_1p5' else '趋势') }}{% endif %}
| 保本:{{ '开' if k.breakeven_enabled else '关' }}
| 现价:<span id="key-price-{{ k.id }}">-</span>
| 距上沿:<span id="key-up-diff-{{ k.id }}">-</span>
| 距下沿:<span id="key-low-diff-{{ k.id }}">-</span>
@@ -1168,6 +1179,31 @@ if(journalForm){
});
}
function syncKeyMonitorFormFields(){
const typeEl = document.querySelector('#key-form [name="type"]');
const modeEl = document.getElementById("key-sl-tp-mode");
const manualTp = document.getElementById("key-manual-tp");
const beWrap = document.getElementById("key-breakeven-wrap");
if(!typeEl) return;
const t = (typeEl.value || "").trim();
const autoTypes = new Set(["箱体突破","收敛突破"]);
const fibTypes = new Set(["斐波回调0.618","斐波回调0.786"]);
const showAuto = autoTypes.has(t);
const showBe = showAuto || fibTypes.has(t);
if(modeEl) modeEl.style.display = showAuto ? "" : "none";
if(manualTp){
const trend = showAuto && modeEl && modeEl.value === "trend_manual";
manualTp.style.display = trend ? "" : "none";
manualTp.required = !!trend;
}
if(beWrap) beWrap.style.display = showBe ? "inline-flex" : "none";
}
const keyTypeSel = document.querySelector('#key-form [name="type"]');
const keyModeSel = document.getElementById("key-sl-tp-mode");
if(keyTypeSel) keyTypeSel.addEventListener("change", syncKeyMonitorFormFields);
if(keyModeSel) keyModeSel.addEventListener("change", syncKeyMonitorFormFields);
syncKeyMonitorFormFields();
const keyForm = document.getElementById("key-form");
if(keyForm){
keyForm.addEventListener("submit", (e)=>{