Fix dashboard position limit flicker by unifying active count across APIs.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -352,16 +352,41 @@
|
||||
|
||||
function applyRisk(risk, account) {
|
||||
if (!riskGridEl || !risk) return;
|
||||
if (risk.limits && Object.keys(risk.limits).length) {
|
||||
var isFullRisk = risk.limits && Object.keys(risk.limits).length;
|
||||
if (isFullRisk) {
|
||||
lastRiskPayload = risk;
|
||||
} else if (lastRiskPayload) {
|
||||
var incomingSt = risk.status || {};
|
||||
var prevSt = lastRiskPayload.status || {};
|
||||
risk = {
|
||||
enabled: lastRiskPayload.enabled,
|
||||
limits: lastRiskPayload.limits,
|
||||
manual_close_count_today: lastRiskPayload.manual_close_count_today,
|
||||
margin_pct_used: lastRiskPayload.margin_pct_used,
|
||||
status: risk.status || lastRiskPayload.status,
|
||||
daily_open_count: risk.daily_open_count != null
|
||||
? risk.daily_open_count
|
||||
: lastRiskPayload.daily_open_count,
|
||||
daily_risk_used_pct: risk.daily_risk_used_pct != null
|
||||
? risk.daily_risk_used_pct
|
||||
: lastRiskPayload.daily_risk_used_pct,
|
||||
status: Object.assign({}, prevSt, incomingSt),
|
||||
};
|
||||
var incActive = incomingSt.active_count;
|
||||
var prevActive = prevSt.active_count;
|
||||
if (incActive != null && prevActive != null) {
|
||||
var incN = Number(incActive);
|
||||
var prevN = Number(prevActive);
|
||||
var marginUsed = account && account.margin_used != null
|
||||
? Number(account.margin_used)
|
||||
: 0;
|
||||
if (
|
||||
!isNaN(incN) && !isNaN(prevN)
|
||||
&& incN < prevN
|
||||
&& (marginUsed > 0 || prevN > 0)
|
||||
) {
|
||||
risk.status.active_count = prevN;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (account && account.equity > 0 && account.margin_used != null) {
|
||||
risk.margin_pct_used = Math.round(account.margin_used / account.equity * 10000) / 100;
|
||||
@@ -850,7 +875,10 @@
|
||||
if (!data) return;
|
||||
if (data.ctp_status) updateCtpBadge(data.ctp_status);
|
||||
if (data.risk_status) {
|
||||
applyRisk({ status: data.risk_status });
|
||||
applyRisk(
|
||||
{ status: data.risk_status },
|
||||
{ equity: data.capital, margin_used: data.margin_used },
|
||||
);
|
||||
}
|
||||
if (data.trading_mode_label && modeBadge) {
|
||||
modeBadge.textContent = data.trading_mode_label;
|
||||
|
||||
Reference in New Issue
Block a user