|
|
@@ -5,7 +5,7 @@ const ChartKit = require('./utils/chart-kit');
|
|
|
const fs = require('fs').promises;
|
|
|
|
|
|
async function readData() {
|
|
|
- let data = await fs.readFile('./data/k_lines_202401_202403.json', 'utf8')
|
|
|
+ let data = await fs.readFile('./data/k_lines.json', 'utf8')
|
|
|
|
|
|
return JSON.parse(data)
|
|
|
}
|
|
|
@@ -127,11 +127,6 @@ function filter(btcKLines, kLines, index, symbol) {
|
|
|
if (NOOBS.indexOf(symbol) !== -1) {
|
|
|
return false
|
|
|
}
|
|
|
-
|
|
|
- // if ([4, 6, 14, 22].indexOf(statisticE(kLines, index)) === -1) {
|
|
|
- // return false
|
|
|
- // }
|
|
|
-
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -286,7 +281,7 @@ async function main() {
|
|
|
|
|
|
|
|
|
const FIRST_FEW_DAYS = 1 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
- const BAKE_TEST_DAYS = 100 // 一共回测多少K
|
|
|
+ const BAKE_TEST_DAYS = 12 // 一共回测多少K
|
|
|
// const FIRST_FEW_DAYS = 710 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
// const BAKE_TEST_DAYS = 1 // 一共回测多少K
|
|
|
|
|
|
@@ -303,7 +298,7 @@ async function main() {
|
|
|
let realDragonMap = getRealDragonMap(btcKLines, kLinesMap, day_count, BUY_LIMIT_RATE)
|
|
|
for (let symbol in realDragonMap) {
|
|
|
realDragonProfit += realDragonMap[symbol].Profit
|
|
|
- // logger.info(`${realDragonMap[symbol].Symbol}, ${realDragonMap[symbol].Profit}%`)
|
|
|
+ logger.info(`${realDragonMap[symbol].Symbol}, ${realDragonMap[symbol].Profit}%`)
|
|
|
}
|
|
|
dragonAnalysis(btcKLines, kLinesMap, realDragonMap, day_count)
|
|
|
|
|
|
@@ -313,7 +308,7 @@ async function main() {
|
|
|
let fakeDragonMap = getFakeDragonMap(btcKLines, kLinesMap, day_count, BUY_LIMIT_RATE)
|
|
|
for (let symbol in fakeDragonMap) {
|
|
|
fakeDragonProfit += fakeDragonMap[symbol].Profit
|
|
|
- // logger.info(`${fakeDragonMap[symbol].Symbol}, ${fakeDragonMap[symbol].Profit}%`)
|
|
|
+ logger.info(`${fakeDragonMap[symbol].Symbol}, ${fakeDragonMap[symbol].Profit}%`)
|
|
|
}
|
|
|
dragonAnalysis(btcKLines, kLinesMap, fakeDragonMap, day_count)
|
|
|
|
|
|
@@ -344,11 +339,12 @@ async function main() {
|
|
|
let dateStr = TimeKit.getTimeByMillisecond(btcK.Time)
|
|
|
let btcUpRate = NumKit.getSubFloat(100 * (btcK.Close - btcK.Open) / btcK.Open, 2)
|
|
|
|
|
|
- logger.info(`${day_count}根(${dateStr}, ${realLength + fakeLength}只),赚钱榜(${realLength}只)利润${realDragonProfit}%`
|
|
|
- + `,亏钱榜(${fakeLength}只)利润${fakeDragonProfit}%`
|
|
|
- + `,赚钱榜期望利润${expRealProfit}%,亏钱榜期望利润${expFakeProfit}%,综合利润${synProfit}%,平均每只利润${avgProfit}% ${isStopLoss ? '(止损)' : ''}`
|
|
|
- + `,BTC涨幅${btcUpRate}%`
|
|
|
+ logger.info(`${day_count}根(${dateStr}), ${realLength + fakeLength}只, 平均每只利润${avgProfit}% ${isStopLoss ? '(止损)' : ''},`
|
|
|
+ + `赚钱(${realLength}只)利润${realDragonProfit}%,亏钱(${fakeLength}只)利润${fakeDragonProfit}%`
|
|
|
+ + `,赚钱榜期望利润${expRealProfit}%,亏钱榜期望利润${expFakeProfit}%,综合利润${synProfit}%`
|
|
|
+ // + `,BTC涨幅${btcUpRate}%`
|
|
|
)
|
|
|
+ logger.info('')
|
|
|
|
|
|
totalProfit += avgProfit
|
|
|
totalProfit = NumKit.getSubFloat(totalProfit, 2)
|