|
|
@@ -91,6 +91,21 @@ function statisticE(kLines, index) {
|
|
|
return date.getHours()
|
|
|
}
|
|
|
|
|
|
+// 过去24小时成交额度之和。大于1B用1000表示,小于10M用0表示,没啥意义
|
|
|
+// function statisticF(kLines, index) {
|
|
|
+// let sum = 0
|
|
|
+// for (let i = index - 1; i >= index - 12; i--) {
|
|
|
+// let kLine = kLines[i]
|
|
|
+//
|
|
|
+// if (!kLines[i - 1]) break
|
|
|
+//
|
|
|
+// sum += kLine.Turnover
|
|
|
+// }
|
|
|
+//
|
|
|
+// let rst = parseInt(sum / 1e7)
|
|
|
+// return rst > 100 ? 100 : rst
|
|
|
+// }
|
|
|
+
|
|
|
// 指标过滤
|
|
|
function filter(btcKLines, kLines, index) {
|
|
|
// 过去N根K的累计涨幅
|
|
|
@@ -193,7 +208,7 @@ let dataLeft = []
|
|
|
let dataRight = []
|
|
|
let tempLeft = []
|
|
|
let tempRight = []
|
|
|
-let dataY = [...Array(30).keys()]
|
|
|
+let dataY = [...Array(101).keys()]
|
|
|
function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
|
|
|
for (let symbol in dragonMap) {
|
|
|
let kLines = kLinesMap[symbol]
|
|
|
@@ -248,7 +263,7 @@ async function main() {
|
|
|
|
|
|
|
|
|
const FIRST_FEW_DAYS = 1 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
- const BAKE_TEST_DAYS = 900 // 一共回测多少K
|
|
|
+ const BAKE_TEST_DAYS = 100 // 一共回测多少K
|
|
|
// const FIRST_FEW_DAYS = 710 // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
|
|
|
// const BAKE_TEST_DAYS = 1 // 一共回测多少K
|
|
|
|
|
|
@@ -257,7 +272,8 @@ async function main() {
|
|
|
let totalProfit = 0
|
|
|
for (let day_count = FIRST_FEW_DAYS; day_count < FIRST_FEW_DAYS + BAKE_TEST_DAYS; day_count++) {
|
|
|
let btcKline = btcKLines[btcKLines.length - (day_count + 1)]
|
|
|
- let btcKlineDownRate = 100 * (btcKline.Open - btcKline.Low) / btcKline.Open // 可能的回撤计算
|
|
|
+ // let btcKlineDownRate = 100 * (btcKline.Open - btcKline.Low) / btcKline.Open // 可能的回撤计算
|
|
|
+ let btcKlineUpRate = 100 * (btcKline.High - btcKline.Close) / btcKline.High // 可能的回撤计算
|
|
|
|
|
|
// 赚钱榜
|
|
|
// logger.info("----------------赚钱榜数据分析----------------")
|
|
|
@@ -291,8 +307,9 @@ async function main() {
|
|
|
let avgProfit = NumKit.getSubFloat(synProfit / (realLength + fakeLength), 2)
|
|
|
let isStopLoss = false
|
|
|
if ((Object.keys(fakeDragonMap).length !== 0 || Object.keys(realDragonMap).length !== 0)) {
|
|
|
- if (avgProfit < -0.8 || btcKlineDownRate > 0.5) {
|
|
|
- avgProfit = -1
|
|
|
+ if (btcKlineUpRate > 3.4) {
|
|
|
+ avgProfit -= 6.8
|
|
|
+ if (avgProfit < -6.8) avgProfit = -6.8
|
|
|
isStopLoss = true
|
|
|
}
|
|
|
} else {
|