feat: 持仓委托改止盈止损,保证金改读CTP柜台UseMargin
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+27
-8
@@ -587,6 +587,13 @@
|
||||
symbol_code: row.symbol_code, direction: row.direction,
|
||||
lots: row.lots, entry_price: row.entry_price, monitor_id: row.monitor_id || null
|
||||
})) + '">设置止盈止损</button>' : '';
|
||||
var editPayload = encodeURIComponent(JSON.stringify({
|
||||
symbol_code: row.symbol_code, direction: row.direction,
|
||||
lots: row.lots, entry_price: row.entry_price, monitor_id: row.monitor_id || null,
|
||||
stop_loss: row.stop_loss, take_profit: row.take_profit
|
||||
}));
|
||||
var entrustBtn = row.can_close ?
|
||||
'<button type="button" class="pos-order-btn pos-entrust-btn" data-edit-sl-tp="' + editPayload + '">委托</button>' : '';
|
||||
var orderBtn = '';
|
||||
if (row.monitor_id && (row.stop_loss != null || row.take_profit != null) && row.can_place_orders) {
|
||||
orderBtn = '<button type="button" class="pos-order-btn" data-place-orders="' + row.monitor_id + '">清理旧挂单</button>';
|
||||
@@ -597,8 +604,8 @@
|
||||
}));
|
||||
var closeBtn = row.can_close ?
|
||||
'<button type="button" class="pos-close-btn" data-close="' + closePayload + '">平仓</button>' : '';
|
||||
var actionBtns = (orderBtn || closeBtn) ?
|
||||
'<div class="pos-card-actions">' + orderBtn + closeBtn + '</div>' : '';
|
||||
var actionBtns = (entrustBtn || orderBtn || closeBtn) ?
|
||||
'<div class="pos-card-actions">' + entrustBtn + orderBtn + closeBtn + '</div>' : '';
|
||||
var riskMeta = '';
|
||||
if (row.rr_ratio != null) {
|
||||
riskMeta += ' · 盈亏比 <strong>' + row.rr_ratio + ':1</strong>';
|
||||
@@ -624,7 +631,7 @@
|
||||
'<div class="cell"><label>当前价格</label><div>' + (row.current_price != null ? fmtNum(row.current_price) : '--') + '</div></div>' +
|
||||
'<div class="cell"><label>止损</label><div>' + (row.stop_loss != null ? fmtNum(row.stop_loss) : '--') + '</div></div>' +
|
||||
'<div class="cell"><label>止盈</label><div>' + (row.take_profit != null ? fmtNum(row.take_profit) : '--') + '</div></div>' +
|
||||
'<div class="cell"><label>占用保证金</label><div>' + (row.margin != null ? fmtNum(row.margin) + ' 元' : '--') + '</div></div>' +
|
||||
'<div class="cell"><label>' + (row.margin_source === 'ctp' ? '占用保证金(柜台)' : '占用保证金') + '</label><div>' + (row.margin != null ? fmtNum(row.margin) + ' 元' : '--') + '</div></div>' +
|
||||
'<div class="cell"><label>仓位占比</label><div>' + (row.position_pct != null ? fmtNum(row.position_pct) + '%' : '--') + '</div></div>' +
|
||||
'<div class="cell ' + pnlClass + '"><label>浮盈亏</label><div>' + pnlText + '</div></div>' +
|
||||
'<div class="cell"><label>预估手续费</label><div>' + (row.est_fee != null ? fmtNum(row.est_fee) + ' 元' : '--') + '</div></div>' +
|
||||
@@ -679,10 +686,13 @@
|
||||
});
|
||||
}
|
||||
|
||||
function promptStopTakeProfit(payload, btn) {
|
||||
var slRaw = prompt('止损价(可留空)', '');
|
||||
function promptStopTakeProfit(payload, btn, btnLabel) {
|
||||
btnLabel = btnLabel || '设置止盈止损';
|
||||
var slDefault = payload.stop_loss != null && payload.stop_loss !== '' ? String(payload.stop_loss) : '';
|
||||
var tpDefault = payload.take_profit != null && payload.take_profit !== '' ? String(payload.take_profit) : '';
|
||||
var slRaw = prompt('止损价(可留空)', slDefault);
|
||||
if (slRaw === null) return;
|
||||
var tpRaw = prompt('止盈价(可留空)', '');
|
||||
var tpRaw = prompt('止盈价(可留空)', tpDefault);
|
||||
if (tpRaw === null) return;
|
||||
var sl = slRaw.trim() ? parseFloat(slRaw) : null;
|
||||
var tp = tpRaw.trim() ? parseFloat(tpRaw) : null;
|
||||
@@ -726,7 +736,7 @@
|
||||
alert(msg);
|
||||
if (btn) {
|
||||
btn.disabled = false;
|
||||
btn.textContent = '设置止盈止损';
|
||||
btn.textContent = btnLabel;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -735,7 +745,16 @@
|
||||
if (!root) return;
|
||||
root.querySelectorAll('[data-sl-tp]').forEach(function (btn) {
|
||||
btn.addEventListener('click', function () {
|
||||
promptStopTakeProfit(JSON.parse(decodeURIComponent(btn.getAttribute('data-sl-tp'))), btn);
|
||||
promptStopTakeProfit(
|
||||
JSON.parse(decodeURIComponent(btn.getAttribute('data-sl-tp'))), btn, '设置止盈止损'
|
||||
);
|
||||
});
|
||||
});
|
||||
root.querySelectorAll('[data-edit-sl-tp]').forEach(function (btn) {
|
||||
btn.addEventListener('click', function () {
|
||||
promptStopTakeProfit(
|
||||
JSON.parse(decodeURIComponent(btn.getAttribute('data-edit-sl-tp'))), btn, '委托'
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user