Fix slow CTP position sync after restart and link positions to 15m K-line.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-26 11:05:13 +08:00
parent deb9501cbe
commit 7a4a3f08e5
4 changed files with 80 additions and 10 deletions
+20 -5
View File
@@ -30,6 +30,7 @@
var isTradingSession = false;
var hasSlTpMonitoring = false;
var ctpConnected = false;
var ctpConnecting = false;
var positionsRendered = false;
var selectedMaxLots = null;
var recommendMaxByProduct = {};
@@ -164,6 +165,7 @@
var cooldownSec = (data.ctp_status && data.ctp_status.login_cooldown_sec) || 0;
if (cooldownSec > 0) connecting = false;
ctpConnected = !!connected;
ctpConnecting = !!connecting;
isTradingSession = !!data.trading_session;
syncCtpBadgeFromStatus(data.ctp_status || { connected: connected, connecting: connecting });
if (!connected && !connecting && data.ctp_status && data.ctp_status.last_error) {
@@ -811,13 +813,17 @@
var name = row.symbol_name || row.symbol || '';
var code = row.symbol_code || '';
var mainBadge = row.symbol_is_main ? ' <span class="badge planned pos-main-badge">主力</span>' : '';
var title = name + mainBadge;
var inner = name + mainBadge;
if (code && String(name).toLowerCase() !== String(code).toLowerCase()) {
title += ' <span class="text-accent">' + code + '</span>';
inner += ' <span class="text-accent">' + code + '</span>';
} else if (!name && code) {
title = '<span class="text-accent">' + code + '</span>';
inner = '<span class="text-accent">' + code + '</span>';
}
return title + extraBadges;
if (marketNavEnabled && code) {
var href = '/market?symbol=' + encodeURIComponent(code) + '&period=15m';
inner = '<a href="' + href + '" class="pos-market-link" title="查看 15 分 K 线">' + inner + '</a>';
}
return inner + extraBadges;
}
function posSymbolSubHtml(row) {
@@ -910,7 +916,16 @@
' · ' + slTpStatusHtml(row) +
' · 移动保本 ' + trailingStatusHtml(row) +
(slTpBtn ? ' · ' + slTpBtn : '') +
(row.sync_pending ? ' · <span class="text-muted">同步柜台中…</span>' : '');
(function () {
if (row.order_state === 'pending' || !row.monitor_id) return '';
if (ctpConnecting) {
return ' · <span class="text-muted">CTP 连接中…</span>';
}
if (row.sync_pending) {
return ' · <span class="text-muted">同步柜台中…</span>';
}
return '';
}());
var feeLabel = row.fee_source === 'ctp' ? '手续费(柜台)' : '手续费';
var marginLabel = row.margin_source === 'ctp' ? '占用保证金(柜台)' : '占用保证金';
var openLabel = '开仓';