|
|
@@ -267,7 +267,7 @@ async function main() {
|
|
|
const BUY_LIMIT_RATE = 0 // 从什么比例入场
|
|
|
|
|
|
const FIRST_FEW_DAYS = 0 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
- const BAKE_TEST_DAYS = 360 // 一共回测多少K
|
|
|
+ const BAKE_TEST_DAYS = 36 // 一共回测多少K
|
|
|
// const FIRST_FEW_DAYS = 710 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
// const BAKE_TEST_DAYS = 1 // 一共回测多少K
|
|
|
|
|
|
@@ -302,20 +302,13 @@ async function main() {
|
|
|
fakeDragonProfit = NumKit.getSubFloat(fakeDragonProfit, 2)
|
|
|
let realLength = Object.keys(realDragonMap).length
|
|
|
let fakeLength = Object.keys(fakeDragonMap).length
|
|
|
- let realRate = NumKit.getSubFloat(realLength / (realLength + fakeLength), 2)
|
|
|
- let fakeRate = NumKit.getSubFloat(1 - realRate, 2)
|
|
|
- let expRealProfit = NumKit.getSubFloat(realRate * realDragonProfit, 2)
|
|
|
- let expFakeProfit = NumKit.getSubFloat(fakeRate * fakeDragonProfit, 2)
|
|
|
- let synProfit = NumKit.getSubFloat(expFakeProfit + expRealProfit, 2)
|
|
|
- let avgProfit = NumKit.getSubFloat(synProfit / (realLength + fakeLength), 2)
|
|
|
+ let avgProfit = NumKit.getSubFloat((fakeDragonProfit + realDragonProfit) / (realLength + fakeLength), 2)
|
|
|
let isStopLoss = false
|
|
|
if ((Object.keys(fakeDragonMap).length !== 0 || Object.keys(realDragonMap).length !== 0)) {
|
|
|
if (btcKlineUpRate > 3.4) {
|
|
|
avgProfit -= 6.8
|
|
|
if (avgProfit < -6.8) avgProfit = -6.8
|
|
|
isStopLoss = true
|
|
|
- } else if (avgProfit < -16.8) {
|
|
|
- avgProfit = -16.8
|
|
|
}
|
|
|
} else {
|
|
|
avgProfit = 0
|
|
|
@@ -329,7 +322,6 @@ async function main() {
|
|
|
|
|
|
logger.info(`${day_count}根(${dateStr}), ${realLength + fakeLength}只, 平均每只利润${avgProfit}% ${isStopLoss ? '(止损)' : ''},`
|
|
|
+ `赚钱(${realLength}只)利润${realDragonProfit}%,亏钱(${fakeLength}只)利润${fakeDragonProfit}%`
|
|
|
- + `,赚钱榜期望利润${expRealProfit}%,亏钱榜期望利润${expFakeProfit}%,综合利润${synProfit}%`
|
|
|
// + `,BTC涨幅${btcUpRate}%`
|
|
|
)
|
|
|
logger.info('')
|