Slim CoinOX UI to okx对冲: drop records/stats nav and trim env.
Redirect removed pages, disable trade-records API, and keep only options/hedge-related env groups. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6617,7 +6617,7 @@ def login():
|
|||||||
return render_template(
|
return render_template(
|
||||||
"login.html",
|
"login.html",
|
||||||
exchange_display=EXCHANGE_DISPLAY_NAME,
|
exchange_display=EXCHANGE_DISPLAY_NAME,
|
||||||
pwa_app_name="OKX 交易系统",
|
pwa_app_name="okx对冲",
|
||||||
)
|
)
|
||||||
|
|
||||||
@app.route("/logout")
|
@app.route("/logout")
|
||||||
@@ -7042,7 +7042,7 @@ def api_sync_exchange_pnl():
|
|||||||
@app.route("/")
|
@app.route("/")
|
||||||
@login_required
|
@login_required
|
||||||
def index():
|
def index():
|
||||||
return redirect("/trade")
|
return redirect("/hedge-plan")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/key_monitor")
|
@app.route("/key_monitor")
|
||||||
@@ -7064,19 +7064,17 @@ def trade_page():
|
|||||||
@app.route("/records")
|
@app.route("/records")
|
||||||
@login_required
|
@login_required
|
||||||
def records_page():
|
def records_page():
|
||||||
redir = redirect_to_embed_shell_if_enabled("records")
|
# CoinOX 已移除「交易记录与复盘」
|
||||||
if redir is not None:
|
flash("CoinOX 不提供交易记录与复盘,请使用期权复盘或对冲计划")
|
||||||
return redir
|
return redirect("/hedge-plan")
|
||||||
return render_main_page("records")
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/stats")
|
@app.route("/stats")
|
||||||
@login_required
|
@login_required
|
||||||
def stats_page():
|
def stats_page():
|
||||||
redir = redirect_to_embed_shell_if_enabled("stats")
|
# CoinOX 已移除全站「统计分析」(对冲计划内统计仍保留)
|
||||||
if redir is not None:
|
flash("CoinOX 不提供全站统计分析,请在对冲计划内查看")
|
||||||
return redir
|
return redirect("/hedge-plan")
|
||||||
return render_main_page("stats")
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/dashboard")
|
@app.route("/dashboard")
|
||||||
@@ -9297,21 +9295,11 @@ def api_journal_upload_slot():
|
|||||||
return jsonify(payload), code
|
return jsonify(payload), code
|
||||||
|
|
||||||
|
|
||||||
from lib.instance.records_api_register import register_trade_records_api
|
# CoinOX: 不再注册 /api/trade_records(交易记录与复盘已下线)
|
||||||
|
@app.route("/api/trade_records")
|
||||||
register_trade_records_api(
|
@login_required
|
||||||
app,
|
def api_trade_records_removed():
|
||||||
login_required=login_required,
|
return jsonify({"ok": False, "msg": "CoinOX 已移除交易记录与复盘"}), 410
|
||||||
get_db=get_db,
|
|
||||||
list_window_from_request=_list_window_from_request,
|
|
||||||
utc_window_to_bj_sql_strings=utc_window_to_bj_sql_strings,
|
|
||||||
sql_list_time_field=sql_list_time_field,
|
|
||||||
to_effective_trade_dict=to_effective_trade_dict,
|
|
||||||
filter_trade_records_excluding_miss=filter_trade_records_excluding_miss,
|
|
||||||
app_tz=APP_TZ,
|
|
||||||
format_price_fn=format_price_for_symbol,
|
|
||||||
sync_exchange_pnl_fn=lambda conn: sync_trade_records_from_exchange(conn, force=False),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _dashboard_fetch_options_positions():
|
def _dashboard_fetch_options_positions():
|
||||||
|
|||||||
Vendored
+4
@@ -179,6 +179,10 @@ SELECT_OPTIONS: dict[str, tuple[tuple[str, str], ...]] = {
|
|||||||
("true", "以期权为主"),
|
("true", "以期权为主"),
|
||||||
("false", "保险模式"),
|
("false", "保险模式"),
|
||||||
),
|
),
|
||||||
|
"SIM_DEFAULT_MODE": (
|
||||||
|
("sim", "模拟盘"),
|
||||||
|
("live", "实盘"),
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
_SELECT_ALIASES: dict[str, dict[str, str]] = {
|
_SELECT_ALIASES: dict[str, dict[str, str]] = {
|
||||||
|
|||||||
Vendored
+44
-1
@@ -44,6 +44,7 @@ _EXCHANGE_LIVE_FIELDS: dict[str, list[tuple[str, str, str]]] = {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 通用共享区(三所模板遗留);CoinOX 用下方 _COINOX_SHARED_SECTIONS
|
||||||
_SHARED_SECTIONS: list[dict[str, Any]] = [
|
_SHARED_SECTIONS: list[dict[str, Any]] = [
|
||||||
{
|
{
|
||||||
"title": "企业微信",
|
"title": "企业微信",
|
||||||
@@ -118,6 +119,47 @@ _SHARED_SECTIONS: list[dict[str, Any]] = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# CoinOX env 页:去掉关键位/AI复盘/永续手工单等无关项
|
||||||
|
_COINOX_SHARED_SECTIONS: list[dict[str, Any]] = [
|
||||||
|
{
|
||||||
|
"title": "企业微信",
|
||||||
|
"fields": [
|
||||||
|
("WECHAT_WEBHOOK", "机器人 Webhook", "行情与风控推送地址"),
|
||||||
|
("WECHAT_TIMEOUT_SECONDS", "推送超时(秒)", "默认 10"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "资金与杠杆",
|
||||||
|
"fields": [
|
||||||
|
("POSITION_SIZING_MODE", "计仓模式", "切换须无仓后重启"),
|
||||||
|
("RISK_PERCENT", "以损定仓风险%", "单笔风险占资金比例"),
|
||||||
|
("FULL_MARGIN_BUFFER_RATIO", "全仓资金缓冲比例", "如 0.98"),
|
||||||
|
("BTC_LEVERAGE", "BTC 默认杠杆", ""),
|
||||||
|
("ALT_LEVERAGE", "山寨默认杠杆", ""),
|
||||||
|
("TRADING_DAY_RESET_HOUR", "交易日切点(北京时间)", "整点,默认 8"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "模拟盘",
|
||||||
|
"fields": [
|
||||||
|
("SIM_DEFAULT_MODE", "默认交易模式", "sim=模拟资金;live=实盘"),
|
||||||
|
("SIM_INITIAL_EQUITY_USDT", "模拟初始权益(USDT)", ""),
|
||||||
|
("SIM_FEE_RATE", "模拟手续费率", "默认 0.0005"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "自动划转",
|
||||||
|
"fields": [
|
||||||
|
("AUTO_TRANSFER_ENABLED", "启用自动划转", ""),
|
||||||
|
("AUTO_TRANSFER_AMOUNT", "目标余额(U)", "交易账户目标 USDT"),
|
||||||
|
("AUTO_TRANSFER_FROM", "划出账户", "余额不足时从此账户划入交易账户"),
|
||||||
|
("AUTO_TRANSFER_TO", "划入账户", "目标余额所在账户,一般为 swap"),
|
||||||
|
("AUTO_TRANSFER_BJ_HOUR", "执行整点(北京时间)", ""),
|
||||||
|
("TRANSFER_CCY", "划转币种", ""),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
_MODE_SECTION: dict[str, Any] = {
|
_MODE_SECTION: dict[str, Any] = {
|
||||||
"title": "期权/对冲模式",
|
"title": "期权/对冲模式",
|
||||||
"exchanges": frozenset({"okx"}),
|
"exchanges": frozenset({"okx"}),
|
||||||
@@ -481,7 +523,8 @@ def ui_sections_for_exchange(
|
|||||||
sections: list[dict[str, Any]] = []
|
sections: list[dict[str, Any]] = []
|
||||||
live_fields = _EXCHANGE_LIVE_FIELDS.get(ex, _EXCHANGE_LIVE_FIELDS["okx"])
|
live_fields = _EXCHANGE_LIVE_FIELDS.get(ex, _EXCHANGE_LIVE_FIELDS["okx"])
|
||||||
sections.append({"title": "交易所与实盘", "fields": live_fields})
|
sections.append({"title": "交易所与实盘", "fields": live_fields})
|
||||||
sections.extend(_SHARED_SECTIONS)
|
# CoinOX(okx)用精简共享区;其它交易所保留完整遗留分区
|
||||||
|
sections.extend(_COINOX_SHARED_SECTIONS if ex == "okx" else _SHARED_SECTIONS)
|
||||||
if ex in _MODE_SECTION.get("exchanges", frozenset()):
|
if ex in _MODE_SECTION.get("exchanges", frozenset()):
|
||||||
from lib.hedge_plan.okx_trade_mode_lib import normalize_okx_trade_mode
|
from lib.hedge_plan.okx_trade_mode_lib import normalize_okx_trade_mode
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ DEFAULT_INSTANCE_DISPLAY: dict[str, bool] = {
|
|||||||
"show_nav_trade": False,
|
"show_nav_trade": False,
|
||||||
"show_nav_strategy": False,
|
"show_nav_strategy": False,
|
||||||
"show_nav_strategy_records": False,
|
"show_nav_strategy_records": False,
|
||||||
"show_nav_records": True,
|
# CoinOX: 已去掉交易记录与复盘 / 全站统计分析
|
||||||
"show_nav_stats": True,
|
"show_nav_records": False,
|
||||||
|
"show_nav_stats": False,
|
||||||
"show_nav_risk_policy": True,
|
"show_nav_risk_policy": True,
|
||||||
"show_nav_system_guide": False,
|
"show_nav_system_guide": False,
|
||||||
"show_nav_env_config": True,
|
"show_nav_env_config": True,
|
||||||
@@ -75,6 +76,16 @@ def normalize_display_prefs(raw: dict | None) -> dict[str, bool]:
|
|||||||
for key in DEFAULT_INSTANCE_DISPLAY:
|
for key in DEFAULT_INSTANCE_DISPLAY:
|
||||||
if key in raw:
|
if key in raw:
|
||||||
out[key] = bool(raw[key])
|
out[key] = bool(raw[key])
|
||||||
|
# CoinOX 产品面强制隐藏已下线入口(忽略库里旧开关)
|
||||||
|
out["show_nav_records"] = False
|
||||||
|
out["show_nav_stats"] = False
|
||||||
|
out["show_nav_dashboard"] = False
|
||||||
|
out["show_nav_account_ledger"] = False
|
||||||
|
out["show_nav_key_monitor"] = False
|
||||||
|
out["show_nav_trade"] = False
|
||||||
|
out["show_nav_strategy"] = False
|
||||||
|
out["show_nav_strategy_records"] = False
|
||||||
|
out["show_nav_system_guide"] = False
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
@@ -117,21 +128,13 @@ def tab_allowed(tab: str, display: Optional[dict[str, bool]] = None) -> bool:
|
|||||||
|
|
||||||
|
|
||||||
def display_meta_for_ui() -> list[dict[str, Any]]:
|
def display_meta_for_ui() -> list[dict[str, Any]]:
|
||||||
|
# CoinOX 顶栏仅保留期权/对冲相关入口
|
||||||
nav_keys = [
|
nav_keys = [
|
||||||
"show_nav_dashboard",
|
|
||||||
"show_nav_account_ledger",
|
|
||||||
"show_nav_key_monitor",
|
|
||||||
"show_nav_trade",
|
|
||||||
"show_nav_strategy",
|
|
||||||
"show_nav_strategy_records",
|
|
||||||
"show_nav_records",
|
|
||||||
"show_nav_stats",
|
|
||||||
"show_nav_risk_policy",
|
|
||||||
"show_nav_system_guide",
|
|
||||||
"show_nav_env_config",
|
|
||||||
"show_nav_options",
|
"show_nav_options",
|
||||||
"show_nav_options_review",
|
"show_nav_options_review",
|
||||||
"show_nav_hedge_plan",
|
"show_nav_hedge_plan",
|
||||||
|
"show_nav_risk_policy",
|
||||||
|
"show_nav_env_config",
|
||||||
]
|
]
|
||||||
settings_keys = [
|
settings_keys = [
|
||||||
"show_settings_transfer",
|
"show_settings_transfer",
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ def pwa_app_name(exchange_key: str) -> str:
|
|||||||
ex = (exchange_key or "").strip().lower()
|
ex = (exchange_key or "").strip().lower()
|
||||||
return {
|
return {
|
||||||
"binance": "Binance 交易系统",
|
"binance": "Binance 交易系统",
|
||||||
"okx": "OKX 交易系统",
|
"okx": "okx对冲",
|
||||||
"gate": "Gate 交易系统",
|
"gate": "Gate 交易系统",
|
||||||
}.get(ex, "交易系统")
|
}.get(ex, "交易系统")
|
||||||
|
|
||||||
|
|||||||
@@ -292,9 +292,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% if page == 'records' %}
|
|
||||||
{% include 'records_panel.html' %}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% if page == 'env_config' %}
|
{% if page == 'env_config' %}
|
||||||
{% include 'env_config_panel.html' %}
|
{% include 'env_config_panel.html' %}
|
||||||
@@ -304,49 +301,6 @@
|
|||||||
{% include 'risk_policy_panel.html' %}
|
{% include 'risk_policy_panel.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page == 'system_guide' %}
|
|
||||||
{% include 'system_guide_panel.html' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page == 'settings' %}
|
{% if page == 'settings' %}
|
||||||
{% include 'settings_panel.html' %}
|
{% include 'settings_panel.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page == 'stats' %}
|
|
||||||
<div class="card stats-card full" id="stats-card">
|
|
||||||
<div style="display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap">
|
|
||||||
<h2 style="margin-bottom:0">数据统计</h2>
|
|
||||||
<button type="button" class="stats-toggle" id="stats-toggle-btn" onclick="toggleStatsCard()">折叠</button>
|
|
||||||
</div>
|
|
||||||
<div class="stats-content" id="stats-content">
|
|
||||||
<div class="sub" style="margin-bottom:12px;color:#8892b0;font-size:.82rem">
|
|
||||||
统计分析按<strong>北京时间 {{ stats_bundle.stats_reset_hour }}:00</strong>切日计入(与顶栏 UTC 列表窗无关).历史总开仓(累计):
|
|
||||||
<strong style="color:#cfd3ef">{{ stats_bundle.total_opens_all }}</strong> 次
|
|
||||||
</div>
|
|
||||||
<div class="form-row" style="margin-bottom:14px;align-items:center">
|
|
||||||
<label style="display:flex;align-items:center;gap:8px;font-size:.88rem;color:#cfd3ef">
|
|
||||||
统计品类
|
|
||||||
<select id="stats-segment-select" onchange="switchStatsSegment()" style="min-width:200px">
|
|
||||||
{% for seg in stats_bundle.segments %}
|
|
||||||
<option value="{{ seg.key }}">{{ seg.title }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
{% for seg in stats_bundle.segments %}
|
|
||||||
<div class="stats-segment-block stats-segment-panel" data-stats-segment="{{ seg.key }}"{% if not loop.first %} style="display:none"{% endif %}>
|
|
||||||
<div class="stats-period-tabs" role="tablist" aria-label="统计周期">
|
|
||||||
<button type="button" class="stats-period-tab active" data-stats-period="day" role="tab" aria-selected="true" onclick="switchStatsPeriod('day')">日统计</button>
|
|
||||||
<button type="button" class="stats-period-tab" data-stats-period="week" role="tab" aria-selected="false" onclick="switchStatsPeriod('week')">周统计</button>
|
|
||||||
<button type="button" class="stats-period-tab" data-stats-period="month" role="tab" aria-selected="false" onclick="switchStatsPeriod('month')">月统计</button>
|
|
||||||
<button type="button" class="stats-period-tab" data-stats-period="all" role="tab" aria-selected="false" onclick="switchStatsPeriod('all')">全部统计</button>
|
|
||||||
</div>
|
|
||||||
{{ period_stats_pane("day", seg.day) }}
|
|
||||||
{{ period_stats_pane("week", seg.week) }}
|
|
||||||
{{ period_stats_pane("month", seg.month) }}
|
|
||||||
{{ period_stats_pane("all", seg.all) }}
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|||||||
@@ -28,25 +28,9 @@
|
|||||||
>
|
>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h1>加密货币|交易监控 + AI复盘一体化</h1>
|
<h1>okx对冲</h1>
|
||||||
</div>
|
</div>
|
||||||
<nav class="top-nav embed-top-nav" aria-label="实例导航">
|
<nav class="top-nav embed-top-nav" aria-label="实例导航">
|
||||||
<a href="/dashboard" data-embed-tab="dashboard" class="{% if initial_tab == 'dashboard' %}active{% endif %}"{% if not display.show_nav_dashboard %} style="display:none"{% endif %}>数据看板</a>
|
|
||||||
<a href="/account_ledger" data-embed-tab="account_ledger" class="{% if initial_tab == 'account_ledger' %}active{% endif %}"{% if not display.show_nav_account_ledger %} style="display:none"{% endif %}>账户流水</a>
|
|
||||||
<a href="/key_monitor" data-embed-tab="key_monitor" class="{% if initial_tab == 'key_monitor' %}active{% endif %}"{% if not display.show_nav_key_monitor %} style="display:none"{% endif %}>关键位监控</a>
|
|
||||||
<a href="/trade" data-embed-tab="trade" class="{% if initial_tab == 'trade' %}active{% endif %}"{% if not display.show_nav_trade %} style="display:none"{% endif %}>实盘下单</a>
|
|
||||||
{% if not intraday_discipline and display.show_nav_strategy %}
|
|
||||||
<a href="/strategy" data-embed-tab="strategy" class="{% if initial_tab == 'strategy' %}active{% endif %}">策略交易</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if not intraday_discipline and display.show_nav_strategy_records %}
|
|
||||||
<a href="/strategy/records" data-embed-tab="strategy_records" class="{% if initial_tab == 'strategy_records' %}active{% endif %}">策略交易记录</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if display.show_nav_records %}
|
|
||||||
<a href="/records" data-embed-tab="records" class="{% if initial_tab == 'records' %}active{% endif %}">交易记录与复盘</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if display.show_nav_stats %}
|
|
||||||
<a href="/stats" data-embed-tab="stats" class="{% if initial_tab == 'stats' %}active{% endif %}">统计分析</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if options_nav_visible and display.show_nav_options %}
|
{% if options_nav_visible and display.show_nav_options %}
|
||||||
<a href="/options" data-embed-tab="options" class="{% if initial_tab == 'options' %}active{% endif %}">期权</a>
|
<a href="/options" data-embed-tab="options" class="{% if initial_tab == 'options' %}active{% endif %}">期权</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -59,7 +43,6 @@
|
|||||||
{% if display.show_nav_risk_policy %}
|
{% if display.show_nav_risk_policy %}
|
||||||
<a href="/risk_policy" data-embed-tab="risk_policy" class="{% if initial_tab == 'risk_policy' %}active{% endif %}">风控说明</a>
|
<a href="/risk_policy" data-embed-tab="risk_policy" class="{% if initial_tab == 'risk_policy' %}active{% endif %}">风控说明</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="/system_guide" data-embed-tab="system_guide" class="{% if initial_tab == 'system_guide' %}active{% endif %}"{% if not display.show_nav_system_guide %} style="display:none"{% endif %}>系统说明</a>
|
|
||||||
{% if display.show_nav_env_config %}
|
{% if display.show_nav_env_config %}
|
||||||
<a href="/env_config" data-embed-tab="env_config" class="{% if initial_tab == 'env_config' %}active{% endif %}">env配置</a>
|
<a href="/env_config" data-embed-tab="env_config" class="{% if initial_tab == 'env_config' %}active{% endif %}">env配置</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -97,11 +80,12 @@
|
|||||||
|
|
||||||
<!-- 手机端主导航(≤720px);桌面不显示 -->
|
<!-- 手机端主导航(≤720px);桌面不显示 -->
|
||||||
<nav id="inst-mobile-tabbar" class="inst-mobile-tabbar" aria-label="手机主导航">
|
<nav id="inst-mobile-tabbar" class="inst-mobile-tabbar" aria-label="手机主导航">
|
||||||
<a href="/trade" class="inst-m-tab{% if initial_tab == 'trade' %} active{% endif %}" data-embed-tab="trade"{% if not display.show_nav_trade %} style="display:none"{% endif %}>下单</a>
|
|
||||||
<a href="/key_monitor" class="inst-m-tab{% if initial_tab == 'key_monitor' %} active{% endif %}" data-embed-tab="key_monitor"{% if not display.show_nav_key_monitor %} style="display:none"{% endif %}>关键位</a>
|
|
||||||
{% if options_nav_visible and display.show_nav_options %}
|
{% if options_nav_visible and display.show_nav_options %}
|
||||||
<a href="/options" class="inst-m-tab{% if initial_tab == 'options' %} active{% endif %}" data-embed-tab="options">期权</a>
|
<a href="/options" class="inst-m-tab{% if initial_tab == 'options' %} active{% endif %}" data-embed-tab="options">期权</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if hedge_plan_nav_visible and display.show_nav_hedge_plan %}
|
||||||
|
<a href="/hedge-plan" class="inst-m-tab{% if initial_tab == 'hedge_plan' %} active{% endif %}" data-embed-tab="hedge_plan">对冲</a>
|
||||||
|
{% endif %}
|
||||||
<button type="button" class="inst-m-tab" data-embed-tab="more" id="inst-m-tab-more" aria-haspopup="dialog" aria-expanded="false">更多</button>
|
<button type="button" class="inst-m-tab" data-embed-tab="more" id="inst-m-tab-more" aria-haspopup="dialog" aria-expanded="false">更多</button>
|
||||||
</nav>
|
</nav>
|
||||||
<div id="inst-mobile-more" class="inst-mobile-more" aria-hidden="true">
|
<div id="inst-mobile-more" class="inst-mobile-more" aria-hidden="true">
|
||||||
@@ -111,30 +95,12 @@
|
|||||||
<h2 id="inst-mobile-more-title" class="inst-mobile-more-title">更多</h2>
|
<h2 id="inst-mobile-more-title" class="inst-mobile-more-title">更多</h2>
|
||||||
<p class="inst-mobile-more-hint">次要页面 · 完整界面请用电脑</p>
|
<p class="inst-mobile-more-hint">次要页面 · 完整界面请用电脑</p>
|
||||||
<nav class="inst-mobile-more-nav" aria-label="更多页面">
|
<nav class="inst-mobile-more-nav" aria-label="更多页面">
|
||||||
<a href="/dashboard" data-embed-tab="dashboard"{% if not display.show_nav_dashboard %} style="display:none"{% endif %}>数据看板</a>
|
|
||||||
<a href="/account_ledger" data-embed-tab="account_ledger"{% if not display.show_nav_account_ledger %} style="display:none"{% endif %}>账户流水</a>
|
|
||||||
{% if display.show_nav_records %}
|
|
||||||
<a href="/records" data-embed-tab="records">交易记录</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if not intraday_discipline and display.show_nav_strategy %}
|
|
||||||
<a href="/strategy" data-embed-tab="strategy">策略交易</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if not intraday_discipline and display.show_nav_strategy_records %}
|
|
||||||
<a href="/strategy/records" data-embed-tab="strategy_records">策略记录</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if display.show_nav_stats %}
|
|
||||||
<a href="/stats" data-embed-tab="stats">统计分析</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if options_nav_visible and display.show_nav_options_review %}
|
{% if options_nav_visible and display.show_nav_options_review %}
|
||||||
<a href="/options/review" data-embed-tab="options_review">期权复盘</a>
|
<a href="/options/review" data-embed-tab="options_review">期权复盘</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if hedge_plan_nav_visible and display.show_nav_hedge_plan %}
|
|
||||||
<a href="/hedge-plan" data-embed-tab="hedge_plan">对冲计划</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if display.show_nav_risk_policy %}
|
{% if display.show_nav_risk_policy %}
|
||||||
<a href="/risk_policy" data-embed-tab="risk_policy">风控说明</a>
|
<a href="/risk_policy" data-embed-tab="risk_policy">风控说明</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="/system_guide" data-embed-tab="system_guide"{% if not display.show_nav_system_guide %} style="display:none"{% endif %}>系统说明</a>
|
|
||||||
{% if display.show_nav_env_config %}
|
{% if display.show_nav_env_config %}
|
||||||
<a href="/env_config" data-embed-tab="env_config">env配置</a>
|
<a href="/env_config" data-embed-tab="env_config">env配置</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -151,25 +151,9 @@
|
|||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h1>CoinOX|币本位期权 + U 本位对冲</h1>
|
<h1>okx对冲</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="top-nav">
|
<div class="top-nav">
|
||||||
<a href="/dashboard" data-embed-tab="dashboard" class="{% if page == 'dashboard' %}active{% endif %}"{% if not display.show_nav_dashboard %} style="display:none"{% endif %}>数据看板</a>
|
|
||||||
<a href="/account_ledger" data-embed-tab="account_ledger" class="{% if page == 'account_ledger' %}active{% endif %}"{% if not display.show_nav_account_ledger %} style="display:none"{% endif %}>账户流水</a>
|
|
||||||
<a href="/key_monitor" class="{% if page == 'key_monitor' %}active{% endif %}"{% if not display.show_nav_key_monitor %} style="display:none"{% endif %}>关键位监控</a>
|
|
||||||
<a href="/trade" class="{% if page == 'trade' %}active{% endif %}"{% if not display.show_nav_trade %} style="display:none"{% endif %}>实盘下单</a>
|
|
||||||
{% if not intraday_discipline and display.show_nav_strategy %}
|
|
||||||
<a href="/strategy" class="{% if page in ('strategy', 'strategy_trend', 'strategy_roll') %}active{% endif %}">策略交易</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if not intraday_discipline and display.show_nav_strategy_records %}
|
|
||||||
<a href="/strategy/records" class="{% if page == 'strategy_records' %}active{% endif %}">策略交易记录</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if display.show_nav_records %}
|
|
||||||
<a href="/records" class="{% if page == 'records' %}active{% endif %}">交易记录与复盘</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if display.show_nav_stats %}
|
|
||||||
<a href="/stats" class="{% if page == 'stats' %}active{% endif %}">统计分析</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if options_nav_visible and display.show_nav_options %}
|
{% if options_nav_visible and display.show_nav_options %}
|
||||||
<a href="/options" class="{% if page == 'options' %}active{% endif %}">期权</a>
|
<a href="/options" class="{% if page == 'options' %}active{% endif %}">期权</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -182,7 +166,6 @@
|
|||||||
{% if display.show_nav_risk_policy %}
|
{% if display.show_nav_risk_policy %}
|
||||||
<a href="/risk_policy" class="{% if page == 'risk_policy' %}active{% endif %}">风控说明</a>
|
<a href="/risk_policy" class="{% if page == 'risk_policy' %}active{% endif %}">风控说明</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="/system_guide" class="{% if page == 'system_guide' %}active{% endif %}"{% if not display.show_nav_system_guide %} style="display:none"{% endif %}>系统说明</a>
|
|
||||||
{% if display.show_nav_env_config %}
|
{% if display.show_nav_env_config %}
|
||||||
<a href="/env_config" class="{% if page == 'env_config' %}active{% endif %}">env配置</a>
|
<a href="/env_config" class="{% if page == 'env_config' %}active{% endif %}">env配置</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -371,10 +354,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% if page == 'records' %}
|
|
||||||
{% include 'records_panel.html' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page == 'env_config' %}
|
{% if page == 'env_config' %}
|
||||||
{% include 'env_config_panel.html' %}
|
{% include 'env_config_panel.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -383,52 +362,9 @@
|
|||||||
{% include 'risk_policy_panel.html' %}
|
{% include 'risk_policy_panel.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page == 'system_guide' %}
|
|
||||||
{% include 'system_guide_panel.html' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page == 'settings' %}
|
{% if page == 'settings' %}
|
||||||
{% include 'settings_panel.html' %}
|
{% include 'settings_panel.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page == 'stats' %}
|
|
||||||
<div class="card stats-card full" id="stats-card">
|
|
||||||
<div style="display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap">
|
|
||||||
<h2 style="margin-bottom:0">数据统计</h2>
|
|
||||||
<button type="button" class="stats-toggle" id="stats-toggle-btn" onclick="toggleStatsCard()">折叠</button>
|
|
||||||
</div>
|
|
||||||
<div class="stats-content" id="stats-content">
|
|
||||||
<div class="sub" style="margin-bottom:12px;color:#8892b0;font-size:.82rem">
|
|
||||||
统计分析按<strong>北京时间 {{ stats_bundle.stats_reset_hour }}:00</strong>切日计入(与顶栏 UTC 列表窗无关).历史总开仓(累计):
|
|
||||||
<strong style="color:#cfd3ef">{{ stats_bundle.total_opens_all }}</strong> 次
|
|
||||||
</div>
|
|
||||||
<div class="form-row" style="margin-bottom:14px;align-items:center">
|
|
||||||
<label style="display:flex;align-items:center;gap:8px;font-size:.88rem;color:#cfd3ef">
|
|
||||||
统计品类
|
|
||||||
<select id="stats-segment-select" onchange="switchStatsSegment()" style="min-width:200px">
|
|
||||||
{% for seg in stats_bundle.segments %}
|
|
||||||
<option value="{{ seg.key }}">{{ seg.title }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
{% for seg in stats_bundle.segments %}
|
|
||||||
<div class="stats-segment-block stats-segment-panel" data-stats-segment="{{ seg.key }}"{% if not loop.first %} style="display:none"{% endif %}>
|
|
||||||
<div class="stats-period-tabs" role="tablist" aria-label="统计周期">
|
|
||||||
<button type="button" class="stats-period-tab active" data-stats-period="day" role="tab" aria-selected="true" onclick="switchStatsPeriod('day')">日统计</button>
|
|
||||||
<button type="button" class="stats-period-tab" data-stats-period="week" role="tab" aria-selected="false" onclick="switchStatsPeriod('week')">周统计</button>
|
|
||||||
<button type="button" class="stats-period-tab" data-stats-period="month" role="tab" aria-selected="false" onclick="switchStatsPeriod('month')">月统计</button>
|
|
||||||
<button type="button" class="stats-period-tab" data-stats-period="all" role="tab" aria-selected="false" onclick="switchStatsPeriod('all')">全部统计</button>
|
|
||||||
</div>
|
|
||||||
{{ period_stats_pane("day", seg.day) }}
|
|
||||||
{{ period_stats_pane("week", seg.week) }}
|
|
||||||
{{ period_stats_pane("month", seg.month) }}
|
|
||||||
{{ period_stats_pane("all", seg.all) }}
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal" id="imgModal" onclick="closeModal()">
|
<div class="modal" id="imgModal" onclick="closeModal()">
|
||||||
|
|||||||
Reference in New Issue
Block a user