|
|
@@ -107,7 +107,7 @@ function statisticE(kLines, index) {
|
|
|
// }
|
|
|
|
|
|
// 指标过滤
|
|
|
-function filter(btcKLines, kLines, index) {
|
|
|
+function filter(btcKLines, kLines, index, symbol) {
|
|
|
// 过去N根K的累计涨幅
|
|
|
let upRateN = statisticA(kLines, index)
|
|
|
if (upRateN >= 90) {
|
|
|
@@ -124,6 +124,10 @@ function filter(btcKLines, kLines, index) {
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
+ if (NOOBS.indexOf(symbol) !== -1) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
// if ([4, 6, 14, 22].indexOf(statisticE(kLines, index)) === -1) {
|
|
|
// return false
|
|
|
// }
|
|
|
@@ -145,7 +149,7 @@ function getRealDragonMap(btcKLines, kLinesMap, dayCount, BUY_LIMIT_RATE) {
|
|
|
if (!kLine || !prevKline) continue
|
|
|
|
|
|
// 指标过滤
|
|
|
- if (!filter(btcKLines, kLines, index)) continue
|
|
|
+ if (!filter(btcKLines, kLines, index, symbol)) continue
|
|
|
|
|
|
let rate = 100 * (kLine.Close - kLine.Open) / kLine.Open
|
|
|
// let upRate = 100 * (kLine.High - kLine.Open) / kLine.Open
|
|
|
@@ -183,7 +187,7 @@ function getFakeDragonMap(btcKLines, kLinesMap, dayCount, BUY_LIMIT_RATE) {
|
|
|
if (!kLine || (!prevKline)) continue
|
|
|
|
|
|
// 指标过滤
|
|
|
- if (!filter(btcKLines, kLines, index)) continue
|
|
|
+ if (!filter(btcKLines, kLines, index, symbol)) continue
|
|
|
|
|
|
let rate = 100 * (kLine.Close - kLine.Open) / kLine.Open
|
|
|
if (rate < BUY_LIMIT_RATE) {
|
|
|
@@ -220,7 +224,7 @@ function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
|
|
|
let y = dragonMap[symbol].Profit
|
|
|
|
|
|
// 打印实际的量
|
|
|
- if (1 === 2) {
|
|
|
+ if (1 === 1) {
|
|
|
if (y > 0) {
|
|
|
if (dataRight[x]) {
|
|
|
dataRight[x] += y
|
|
|
@@ -256,6 +260,25 @@ function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+let NOOBS = [
|
|
|
+ 'ZRX_USDT', 'ID_USDT', 'NULS_USDT',
|
|
|
+ 'COS_USDT', 'PROM_USDT', 'JUP_USDT',
|
|
|
+ 'COMP_USDT', 'RONIN_USDT', 'PDA_USDT',
|
|
|
+ 'CTK_USDT', 'ORN_USDT', 'RARE_USDT',
|
|
|
+ 'STG_USDT', 'WIN_USDT', 'MTL_USDT',
|
|
|
+ 'CELO_USDT', 'MASK_USDT', 'LQTY_USDT',
|
|
|
+ 'MEME_USDT', 'NFP_USDT', 'XAI_USDT',
|
|
|
+ 'VIC_USDT', 'DODO_USDT', 'SCRT_USDT',
|
|
|
+ 'MANTA_USDT', 'BOME_USDT', 'TKO_USDT',
|
|
|
+ 'JTO_USDT', 'REI_USDT', 'RSR_USDT',
|
|
|
+ 'STRK_USDT', 'CTXC_USDT', 'FLOKI_USDT',
|
|
|
+ 'LSK_USDT', 'PROS_USDT', 'PEOPLE_USDT',
|
|
|
+ 'JASMY_USDT', 'SC_USDT', 'AUCTION_USDT',
|
|
|
+ 'VTHO_USDT', 'REQ_USDT', 'DEXE_USDT',
|
|
|
+ 'FIS_USDT', 'ASTR_USDT', 'AGLD_USDT',
|
|
|
+ 'FOR_USDT', 'PYR_USDT'
|
|
|
+]
|
|
|
+
|
|
|
async function main() {
|
|
|
let kLinesMap = await readData()
|
|
|
|
|
|
@@ -267,7 +290,6 @@ async function main() {
|
|
|
// const FIRST_FEW_DAYS = 710 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
// const BAKE_TEST_DAYS = 1 // 一共回测多少K
|
|
|
|
|
|
-
|
|
|
let btcKLines = kLinesMap['BTC_USDT']
|
|
|
let totalProfit = 0
|
|
|
for (let day_count = FIRST_FEW_DAYS; day_count < FIRST_FEW_DAYS + BAKE_TEST_DAYS; day_count++) {
|
|
|
@@ -339,6 +361,19 @@ async function main() {
|
|
|
// lastData.push([x, dataRight[x]])
|
|
|
// }
|
|
|
|
|
|
+
|
|
|
+ // 这里可以生成noobs
|
|
|
+ // dataY = Object.keys(dataRight)
|
|
|
+ // let noobs = []
|
|
|
+ // for (let symbol in dataLeft) {
|
|
|
+ // if (dataLeft[symbol] + dataRight[symbol] < 0) {
|
|
|
+ // noobs.push(symbol)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // logger.info(noobs)
|
|
|
+ // 如果key是字符串,就要加这些
|
|
|
+ // dataLeft = Object.values(dataLeft)
|
|
|
+ // dataRight = Object.values(dataRight)
|
|
|
let rst = 'option=' + JSON.stringify(ChartKit.printBar(dataY, dataLeft, dataRight), null, 2)
|
|
|
// let rst = 'option=' + JSON.stringify(ChartKit.printPointChart(lastData), null, 2)
|
|
|
require('fs').writeFile('./data/option.txt', rst, 'utf8', (err) => {
|