Browse Source

新加入一些指标,

skyffire 1 năm trước cách đây
mục cha
commit
275fd3b6f3
1 tập tin đã thay đổi với 40 bổ sung17 xóa
  1. 40 17
      十面埋伏分析.js

+ 40 - 17
十面埋伏分析.js

@@ -54,10 +54,8 @@ function getFakeDragonMap(kLinesMap, dayCount, BUY_LIMIT_RATE) {
     if (!kLine || (!prevKline)) continue
 
     let rate = 100 * (kLine.Close - kLine.Open) / kLine.Open
-    let maxRate = 100 * (kLine.High - kLine.Open) / kLine.Open
-    if (maxRate > BUY_LIMIT_RATE && rate < BUY_LIMIT_RATE) {
+    if (rate < BUY_LIMIT_RATE) {
       kLine.Rate = rate
-      kLine.MaxRate = maxRate
       // kLine.Profit = NumKit.getSubFloat(rate > 0 ? rate - BUY_LIMIT_RATE : -BUY_LIMIT_RATE, 2)
       kLine.Profit = NumKit.getSubFloat(rate - BUY_LIMIT_RATE, 2)
       fakeDragonMap[symbol] = kLine
@@ -153,11 +151,11 @@ function statisticD(kLines, index) {
   return NumKit.getSubFloat(totalRiseAndFall / kCount, 2)
 }
 
-// 过去60天的上影线幅度大于2.5%,并且收盘是阴线的次数
+// 过去N天的上影线幅度大于2.5%,并且收盘是阴线的次数
 function statisticE(kLines, index) {
   let kCount = 0
   let count = 0
-  for (let i = index - 1; i >= index - 60; i--) {
+  for (let i = index - 1; i >= index - 30; i--) {
     let kLine = kLines[i]
 
     if (!kLines[i - 1]) break
@@ -221,7 +219,7 @@ function statisticG(kLines, index) {
 function statisticH(kLines, index) {
   let kCount = 0
   let rst = 0
-  for (let i = index - 1; i >= index - 3; i--) {
+  for (let i = index - 1; i >= index - 2; i--) {
     let kLine = kLines[i]
 
     if (!kLines[i - 1]) break
@@ -236,23 +234,47 @@ function statisticH(kLines, index) {
     return 0
   }
 
-  return parseInt(NumKit.getSubFloat((rst / kCount - 50) * 10 + 50, 2))
+  return parseInt(NumKit.getSubFloat((rst / kCount - 50) * 10 + 100, 2))
+}
+
+// *******过去N天阴线数量,有一定关系
+function statisticI(kLines, index) {
+  let count = 0
+  for (let i = index - 1; i >= index - 10; i--) {
+    let kLine = kLines[i]
+
+    if (!kLines[i - 1]) break
+
+    count += kLine.Close < kLine.Open ? 1 : 0
+  }
+
+  return count
 }
 
-// BTC涨跌幅与当日收益率的关系
-// function statisticI(btcKLines, kLines, index) {
-//
-// }
+// 返回过去一共连续N天阴线
+function statisticJ(kLines, index) {
+  let count = 0
+  for (let i = index - 1; i >= 0; i--) {
+    let kLine = kLines[i]
+
+    if (!kLines[i - 1]) break
+    if (kLine.Close > kLine.Open) break
+
+    count += 1
+  }
+
+  return count
+}
 
 let dataLeft = []
 let dataRight = []
-let dataY = [...Array(150).keys()]
+let dataY = [...Array(60).keys()]
 function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
   for (let symbol in dragonMap) {
     let kLines = kLinesMap[symbol]
     let index = kLines.length - (dayCount + 1)
 
-    let x = statisticH(kLines, index)
+    let x = statisticJ(kLines, index)
     let y = dragonMap[symbol].Profit
 
     // logger.info(
@@ -262,6 +284,7 @@ function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
     //   + `前30日平均(High - Close)${x}%。`
     // )
     if (dataRight[x]) {
+      logger.info(x, dataRight[x], y)
       dataRight[x] += y
     } else {
       dataRight[x] = y
@@ -272,9 +295,9 @@ function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
 async function main() {
   let kLinesMap = await readData()
 
-  const FIRST_FEW_DAYS = 1              // 第几天的数据,0表示今天,1表示昨天,2表示前天,以此类推
-  const BUY_LIMIT_RATE = 2.5            // 从什么比例入场
-  const BAKE_TEST_DAYS = 30             // 一共回测多少天
+  const FIRST_FEW_DAYS = 1               // 第几天的数据,0表示今天,1表示昨天,2表示前天,以此类推
+  const BUY_LIMIT_RATE = 0               // 从什么比例入场
+  const BAKE_TEST_DAYS = 10              // 一共回测多少天
 
 
   let btcKLines = kLinesMap['BTC_USDT']
@@ -294,7 +317,7 @@ async function main() {
     let fakeDragonMap = getFakeDragonMap(kLinesMap, day_count, BUY_LIMIT_RATE)
     for (let symbol in fakeDragonMap) {
       fakeDragonProfit += fakeDragonMap[symbol].Profit
-      // logger.info(fakeDragonMap[symbol].Symbol, fakeDragonMap[symbol].Profit, fakeDragonMap[symbol].MaxRate, fakeDragonMap[symbol].Rate)
+      // logger.info(fakeDragonMap[symbol].Symbol, fakeDragonMap[symbol].Profit, fakeDragonMap[symbol].Rate)
     }
     logger.info("----------------亏钱榜数据分析----------------")
     dragonAnalysis(btcKLines, kLinesMap, fakeDragonMap, day_count)