Browse Source

上涨吞没实验没通过

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

+ 38 - 3
十面埋伏分析.js

@@ -10,6 +10,7 @@ async function readData() {
   return JSON.parse(data)
 }
 
+/* 概率学说 */
 // 统计过去N日累计涨幅,【在-1%~-20%容易有亏损,有一定关系】
 function statisticA(kLines, index) {
   let startK = kLines[index - 10]
@@ -38,6 +39,40 @@ function statisticB(kLines, index) {
   return count
 }
 
+/* 形态学说 */
+// 最近2根k线出现上涨吞没,或3根k线的组合形态是上涨吞没
+function statisticC(kLines, index) {
+  let kPrev1 = kLines[index - 1]
+  let kPrev2 = kLines[index - 2]
+
+  if (!kPrev1 || !kPrev2) return 0
+
+  // 检查 kPrev2 是否为跌势中的黑色蜡烛
+  const isPrev2Bearish = kPrev2.Close < kPrev2.Open;
+  // 检查 kPrev1 是否为白色蜡烛
+  const isPrev1Bullish = kPrev1.Close > kPrev1.Open;
+  // 检查 kPrev1 的实体是否完全覆盖了 kPrev2 的实体
+  let isEngulfing = kPrev1.Close > kPrev2.Open;
+
+  if (isPrev2Bearish && isPrev1Bullish && isEngulfing) return 1
+
+  // 组合实体判断
+  let kPrev3 = kLines[index - 3]
+
+  if (!kPrev3) return 0
+
+  const isPrev3Bearish = kPrev3.Close < kPrev3.Open;
+  const isPrev2Bullish = kPrev2.Close > kPrev2.Open;
+  // 组合实体满足条件
+  isEngulfing = kPrev1.Close > kPrev3.Open;
+  if (isPrev3Bearish && isPrev2Bullish && isPrev1Bullish && isEngulfing) return 1
+
+  return 0
+}
+
+// 前一根k线是阴线,并且收了影线,影线涨幅>=实体跌幅
+function statisticD(kLines, index) {}
+
 // 指标过滤
 function filter(kLines, index) {
   // 一共N天涨幅超过M%
@@ -122,13 +157,13 @@ let dataLeft = []
 let dataRight = []
 let tempLeft = []
 let tempRight = []
-let dataY = [...Array(100).keys()]
+let dataY = [...Array(10).keys()]
 function dragonAnalysis(btcKLines, kLinesMap, dragonMap, dayCount) {
   for (let symbol in dragonMap) {
     let kLines = kLinesMap[symbol]
     let index = kLines.length - (dayCount + 1)
 
-    let x = statisticA(kLines, index)
+    let x = statisticC(kLines, index)
     let y = dragonMap[symbol].Profit
 
     // logger.info(
@@ -178,7 +213,7 @@ async function main() {
 
   const FIRST_FEW_DAYS = 1               // 第几天的数据,0表示今天,1表示昨天,2表示前天,以此类推
   const BUY_LIMIT_RATE = 0               // 从什么比例入场
-  const BAKE_TEST_DAYS = 30              // 一共回测多少天, 150天是熊市最没有交易量的时候
+  const BAKE_TEST_DAYS = 360              // 一共回测多少天, 150天是熊市最没有交易量的时候
 
 
   let btcKLines = kLinesMap['BTC_USDT']