修改前端盈亏比
This commit is contained in:
@@ -1208,6 +1208,20 @@ function calcClientRr(direction, entry, sl, tp){
|
||||
if(s >= e || t <= e) return null;
|
||||
return (t - e) / (e - s);
|
||||
}
|
||||
function calcClientRrFromPct(slPct, tpPct){
|
||||
const sl = Number(slPct), tp = Number(tpPct);
|
||||
if(!Number.isFinite(sl) || !Number.isFinite(tp) || sl <= 0 || tp <= 0) return null;
|
||||
return tp / sl;
|
||||
}
|
||||
function rejectManualOrderRr(rr){
|
||||
if(rr !== null && rr >= MANUAL_MIN_PLANNED_RR) return false;
|
||||
alert(`计划盈亏比 ${rr === null ? '无效' : rr.toFixed(2)}:1 低于最低要求 ${MANUAL_MIN_PLANNED_RR}:1,已阻止人工下单。`);
|
||||
return true;
|
||||
}
|
||||
function allowManualOrderSubmit(form){
|
||||
form.dataset.rrOk = "1";
|
||||
form.submit();
|
||||
}
|
||||
|
||||
let latestAvailableUsdt = null;
|
||||
const lastPriceMap = {};
|
||||
@@ -1422,26 +1436,31 @@ if(addOrderForm){
|
||||
ev.preventDefault();
|
||||
const direction = (document.getElementById("order-direction")||{}).value || "long";
|
||||
const mode = (document.getElementById("sltp-mode")||{}).value || "price";
|
||||
let sl, tp, entry;
|
||||
const symbol = ((document.getElementById("order-symbol")||{}).value || "").trim();
|
||||
if(mode === "pct"){
|
||||
alert("百分比模式请确认盈亏比后再提交;建议使用价格模式以便校验。");
|
||||
const rr = calcClientRrFromPct(
|
||||
(document.getElementById("order-sl-pct")||{}).value,
|
||||
(document.getElementById("order-tp-pct")||{}).value
|
||||
);
|
||||
if(rejectManualOrderRr(rr)) return;
|
||||
allowManualOrderSubmit(addOrderForm);
|
||||
return;
|
||||
}
|
||||
sl = Number((document.getElementById("order-sl")||{}).value);
|
||||
tp = Number((document.getElementById("order-tp")||{}).value);
|
||||
entry = sl;
|
||||
fetch(`/api/order_defaults?symbol=${encodeURIComponent((document.getElementById("order-symbol")||{}).value||"")}&direction=${encodeURIComponent(direction)}`)
|
||||
const sl = Number((document.getElementById("order-sl")||{}).value);
|
||||
const tp = Number((document.getElementById("order-tp")||{}).value);
|
||||
let entry = sl;
|
||||
if(!symbol){
|
||||
if(rejectManualOrderRr(calcClientRr(direction, entry, sl, tp))) return;
|
||||
allowManualOrderSubmit(addOrderForm);
|
||||
return;
|
||||
}
|
||||
fetch(`/api/order_defaults?symbol=${encodeURIComponent(symbol)}&direction=${encodeURIComponent(direction)}`)
|
||||
.then(r=>r.json())
|
||||
.then(data=>{
|
||||
const px = data.last_price || data.price;
|
||||
if(px) entry = Number(px);
|
||||
const rr = calcClientRr(direction, entry, sl, tp);
|
||||
if(rr === null || rr < MANUAL_MIN_PLANNED_RR){
|
||||
alert(`计划盈亏比 ${rr === null ? '无效' : rr.toFixed(2)}:1 低于最低要求 ${MANUAL_MIN_PLANNED_RR}:1,已阻止人工下单。`);
|
||||
return;
|
||||
}
|
||||
addOrderForm.dataset.rrOk = "1";
|
||||
addOrderForm.submit();
|
||||
if(rejectManualOrderRr(calcClientRr(direction, entry, sl, tp))) return;
|
||||
allowManualOrderSubmit(addOrderForm);
|
||||
})
|
||||
.catch(()=>{ alert("无法校验盈亏比,请稍后重试"); });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user