|
@@ -52,7 +52,7 @@ function getOptimalSelections(odds, rules) {
|
|
|
isValid = false;
|
|
isValid = false;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
- const best = candidates.reduce((a, b) => item[a]*obRebate > item[b]*hgRebate ? a : b);
|
|
|
|
|
|
|
+ const best = candidates.reduce((a, b) => (item[a]-1)*obRebate > (item[b]-1)*hgRebate ? a : b);
|
|
|
selection.push({
|
|
selection.push({
|
|
|
k: key,
|
|
k: key,
|
|
|
p: best,
|
|
p: best,
|
|
@@ -166,27 +166,33 @@ const triangleGoldCalc = (oddsInfo, oddsOption) => {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
const { crossType, innerIndex, rebateA: A = 0, rebateB: B = 0, rebateC: C = 0 } = oddsOption;
|
|
const { crossType, innerIndex, rebateA: A = 0, rebateB: B = 0, rebateC: C = 0 } = oddsOption;
|
|
|
|
|
+ const k1 = a * (1 + A);
|
|
|
|
|
+ const k2 = 1 - A;
|
|
|
|
|
+ const k3 = b * (1 + B);
|
|
|
|
|
+ const k4 = 1 - B;
|
|
|
|
|
+ const k5 = c * (1 + C);
|
|
|
|
|
+ const k6 = 1 - C;
|
|
|
let x = innerDefaultAmount;
|
|
let x = innerDefaultAmount;
|
|
|
- let y = (a + a*A + 1 - A) * x / (b + b*B + 1 - B);
|
|
|
|
|
|
|
+ let y = (k1 + k2) * x / (k3 + k4);
|
|
|
let z;
|
|
let z;
|
|
|
switch (crossType) {
|
|
switch (crossType) {
|
|
|
case 'la_wh_wa': // 全输 半赢 全赢
|
|
case 'la_wh_wa': // 全输 半赢 全赢
|
|
|
- z = (b + b*B) * y / 2 / (c + c*C + 1 - C);
|
|
|
|
|
|
|
+ z = k3 * y / 2 / (k5 + k6);
|
|
|
break;
|
|
break;
|
|
|
case 'la_dr_wa': // 全输 和局 全赢
|
|
case 'la_dr_wa': // 全输 和局 全赢
|
|
|
- z = (b + b*B) * y / (c + c*C + 1 - C);
|
|
|
|
|
|
|
+ z = k3 * y / (k5 + k6);
|
|
|
break;
|
|
break;
|
|
|
case 'la_lh_wa': // 全输 半输 全赢
|
|
case 'la_lh_wa': // 全输 半输 全赢
|
|
|
- z = (2*b + 2*b*B + 1 - B) * y / 2 / (c + c*C + 1 - C);
|
|
|
|
|
|
|
+ z = (k3 + k4 / 2) * y / (k5 + k6);
|
|
|
break;
|
|
break;
|
|
|
case 'lh_dr_wa': // 半输 和局 全赢
|
|
case 'lh_dr_wa': // 半输 和局 全赢
|
|
|
- z = ((b + b*B) * y - (1 - A) * x / 2) / (c + c*C + 1 - C);
|
|
|
|
|
|
|
+ z = (k3 * y - k2 * x / 2) / (k5 + k6);
|
|
|
break;
|
|
break;
|
|
|
case 'lh_lh_wa': // 半输 半输 全赢
|
|
case 'lh_lh_wa': // 半输 半输 全赢
|
|
|
- z = ((2*b + 2*b*B + 1 - B) * y / 2 + (1 - A) * x / 2) / (c + c*C + 1 - C);
|
|
|
|
|
|
|
+ z = ((k3 + k4/2) * y - k2x / 2) / (k5 + k6);
|
|
|
break;
|
|
break;
|
|
|
case 'la_la_wa': // 全输 全输 全赢
|
|
case 'la_la_wa': // 全输 全输 全赢
|
|
|
- z = (b + b*B + 1 - B) * y / (c + c*C + 1 - C);
|
|
|
|
|
|
|
+ z = (k4 + k4) * y / (k5 + k6);
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
z = 0;
|
|
z = 0;
|
|
@@ -225,11 +231,12 @@ const eventSolutions = (oddsInfo, oddsOption) => {
|
|
|
const profitInfo = triangleProfitCalc(goldsInfo, oddsOption);
|
|
const profitInfo = triangleProfitCalc(goldsInfo, oddsOption);
|
|
|
|
|
|
|
|
const { odds_side_a, odds_side_b, odds_side_c } = goldsInfo;
|
|
const { odds_side_a, odds_side_b, odds_side_c } = goldsInfo;
|
|
|
- const { win_average } = profitInfo;
|
|
|
|
|
|
|
+ const { win_side_a, win_side_b, win_side_c, win_average } = profitInfo;
|
|
|
return {
|
|
return {
|
|
|
odds_side_a,
|
|
odds_side_a,
|
|
|
odds_side_b,
|
|
odds_side_b,
|
|
|
odds_side_c,
|
|
odds_side_c,
|
|
|
|
|
+ win_side_a, win_side_b, win_side_c,
|
|
|
win_average,
|
|
win_average,
|
|
|
rebate_side_a: oddsOption.rebateA,
|
|
rebate_side_a: oddsOption.rebateA,
|
|
|
rebate_side_b: oddsOption.rebateB,
|
|
rebate_side_b: oddsOption.rebateB,
|