feat: two-level entry model UI for trend accounts (reversal/trend/swing)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,52 +1,5 @@
|
||||
<script>
|
||||
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
|
||||
const ORDER_ENTRY_MODEL_TRADE_STYLE = {{ entry_model_trade_style_map | tojson }};
|
||||
|
||||
function tradeStyleForEntryModelSelect(sel){
|
||||
if(!sel || !sel.value) return "trend";
|
||||
var opt = sel.options[sel.selectedIndex];
|
||||
if(opt){
|
||||
var ds = opt.getAttribute("data-trade-style");
|
||||
if(ds === "swing" || ds === "trend") return ds;
|
||||
}
|
||||
return (ORDER_ENTRY_MODEL_TRADE_STYLE && ORDER_ENTRY_MODEL_TRADE_STYLE[sel.value]) || "trend";
|
||||
}
|
||||
function syncOrderEntryModelTradeStyle(){
|
||||
var sel = document.getElementById("order-entry-model");
|
||||
var hidden = document.getElementById("order-trade-style-hidden");
|
||||
var hint = document.getElementById("order-trade-style-hint");
|
||||
if(!sel || !hidden) return;
|
||||
var labels = { trend: "趋势单", swing: "波段单" };
|
||||
var ts = tradeStyleForEntryModelSelect(sel);
|
||||
hidden.value = ts;
|
||||
if(hint) hint.textContent = labels[ts] || ts;
|
||||
}
|
||||
function paintOrderLeverageHint(leverage){
|
||||
var hidden = document.getElementById("order-leverage");
|
||||
var hint = document.getElementById("order-leverage-hint");
|
||||
if(!hidden && !hint) return;
|
||||
var lev = parseInt(leverage, 10);
|
||||
if(!Number.isFinite(lev) || lev <= 0){
|
||||
if(hint) hint.textContent = "杠杆 —";
|
||||
if(hidden) hidden.value = "";
|
||||
return;
|
||||
}
|
||||
if(hidden) hidden.value = String(lev);
|
||||
if(hint) hint.textContent = "杠杆 " + lev + "x";
|
||||
}
|
||||
function initOrderEntryModelSelect(root){
|
||||
var scope = (root && root.querySelector) ? root : document;
|
||||
var sel = scope.querySelector ? scope.querySelector("#order-entry-model") : document.getElementById("order-entry-model");
|
||||
if(!sel) return;
|
||||
if(sel.dataset.entryModelWired !== "1"){
|
||||
sel.dataset.entryModelWired = "1";
|
||||
sel.addEventListener("change", syncOrderEntryModelTradeStyle);
|
||||
}
|
||||
syncOrderEntryModelTradeStyle();
|
||||
}
|
||||
window.syncOrderEntryModelTradeStyle = syncOrderEntryModelTradeStyle;
|
||||
window.paintOrderLeverageHint = paintOrderLeverageHint;
|
||||
window.initOrderEntryModelSelect = initOrderEntryModelSelect;
|
||||
|
||||
function reloadInstancePage(){
|
||||
if(document.body && document.body.getAttribute("data-embed-shell") === "1" && window.InstanceEmbed){
|
||||
|
||||
@@ -122,7 +122,12 @@
|
||||
<script src="/static/time_close_ui.js?v=3"></script>
|
||||
<script src="/static/ai_review_render.js?v=2"></script>
|
||||
<script src="/static/form_submit_guard.js?v=2"></script>
|
||||
<script src="/static/order_entry_model.js?v=3"></script>
|
||||
<script>
|
||||
const ORDER_ENTRY_MODEL_TRADE_STYLE = {{ entry_model_trade_style_map | tojson }};
|
||||
const ORDER_ENTRY_MODEL_CATEGORIES = {{ entry_model_categories | tojson }};
|
||||
const ORDER_ENTRY_MODEL_CODE_TO_CATEGORY = {{ entry_model_code_to_category | tojson }};
|
||||
</script>
|
||||
<script src="/static/order_entry_model.js?v=4"></script>
|
||||
<script src="/static/manual_order_rr_preview.js?v=5"></script>
|
||||
<script src="/static/symbol_live_price.js?v=2"></script>
|
||||
<script src="/static/strategy_roll.js?v=6"></script>
|
||||
|
||||
@@ -554,13 +554,17 @@
|
||||
<script src="/static/time_close_ui.js?v=3"></script>
|
||||
<script src="/static/ai_review_render.js?v=2"></script>
|
||||
<script src="/static/form_submit_guard.js?v=2"></script>
|
||||
<script src="/static/order_entry_model.js?v=3"></script>
|
||||
<script>
|
||||
const ORDER_ENTRY_MODEL_TRADE_STYLE = {{ entry_model_trade_style_map | tojson }};
|
||||
const ORDER_ENTRY_MODEL_CATEGORIES = {{ entry_model_categories | tojson }};
|
||||
const ORDER_ENTRY_MODEL_CODE_TO_CATEGORY = {{ entry_model_code_to_category | tojson }};
|
||||
</script>
|
||||
<script src="/static/order_entry_model.js?v=4"></script>
|
||||
<script src="/static/manual_order_rr_preview.js?v=5"></script>
|
||||
<script src="/static/symbol_live_price.js?v=2"></script>
|
||||
<script src="/static/strategy_roll.js?v=6"></script>
|
||||
<script>
|
||||
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
|
||||
const ORDER_ENTRY_MODEL_TRADE_STYLE = {{ entry_model_trade_style_map | tojson }};
|
||||
|
||||
function validateJournalEntryReason(){
|
||||
const form = document.getElementById("journal-form");
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
{# 趋势户:开仓类型 → 自动 trade_style;日内户:仍选手动 trend/swing #}
|
||||
{# 趋势户:两级开仓类型 → 自动 trade_style;日内户:仍选手动 trend/swing #}
|
||||
{% macro order_entry_type_fields() -%}
|
||||
{% if order_entry_profile == 'trend_div' %}
|
||||
<select name="entry_model" id="order-entry-model" required title="大分歧A/B为趋势单,小分歧为波段单" onchange="syncOrderEntryModelTradeStyle()">
|
||||
<option value="">开仓类型</option>
|
||||
{% for opt in entry_model_options %}
|
||||
<option value="{{ opt.code }}" data-trade-style="{{ opt.trade_style }}" title="{{ opt.help }}">{{ opt.label }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<input type="hidden" name="trade_style" id="order-trade-style-hidden" value="trend">
|
||||
<span id="order-trade-style-hint" class="order-trade-style-hint" title="由开仓类型自动设定">趋势单</span>
|
||||
<div class="order-entry-model-row">
|
||||
<select id="order-entry-category" class="order-entry-category" required title="反转 / 顺势 / 波段" aria-label="开仓性质">
|
||||
<option value="">性质</option>
|
||||
{% for cat in entry_model_categories %}
|
||||
<option value="{{ cat.key }}">{{ cat.label }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<select name="entry_model" id="order-entry-model" class="order-entry-model-sub" required disabled title="启动A/B、大分歧A/B、小分歧" aria-label="开仓类型">
|
||||
<option value="">类型</option>
|
||||
</select>
|
||||
<input type="hidden" name="trade_style" id="order-trade-style-hidden" value="trend">
|
||||
<span id="order-trade-style-hint" class="order-trade-style-hint" title="由开仓类型自动设定">趋势单</span>
|
||||
</div>
|
||||
{% else %}
|
||||
<select name="trade_style" required>
|
||||
<option value="trend">趋势单</option>
|
||||
|
||||
Reference in New Issue
Block a user