Jelajahi Sumber

v3.1.0,最后一个版本

skyffire 1 tahun lalu
induk
melakukan
4f97267bc5
2 mengubah file dengan 14 tambahan dan 8 penghapusan
  1. 2 1
      pull_k_lines.js
  2. 12 7
      十面埋伏分析.js

+ 2 - 1
pull_k_lines.js

@@ -51,9 +51,10 @@ async function main() {
 
   let kLinesMap = {}
 
+  // TODO 有空接一下期货的
   for (let i = 0; i < symbols.length; i++) {
     let symbol = symbols[i]
-    // let url = `${BASE_REST}/api/v3/klines?symbol=${symbol.replace('_', '')}&interval=2h&limit=${NUMBER_OF_DAYS_TO_PULL}&startTime=1697040000000`
+    // let url = `${BASE_REST}/api/v3/klines?symbol=${symbol.replace('_', '')}&interval=2h&limit=${NUMBER_OF_DAYS_TO_PULL}&startTime=1636560000000`
     let url = `${BASE_REST}/api/v3/klines?symbol=${symbol.replace('_', '')}&interval=2h&limit=${NUMBER_OF_DAYS_TO_PULL}`
     const kLines = await HttpQuery(url)
 

+ 12 - 7
十面埋伏分析.js

@@ -91,19 +91,20 @@ function statisticC(kLines, index, btcKLines, btcIndex) {
 //   return date.getHours()
 // }
 
-// 过去24小时成交额度之和。大于1B用1000表示,小于10M用0表示,没啥意义
+// 过去24小时主动买入比例
 // function statisticF(kLines, index) {
 //   let sum = 0
-//   for (let i = index - 1; i >= index - 12; i--) {
+//   let buySum = 0
+//   for (let i = index - 1; i >= index - 24; i--) {
 //     let kLine = kLines[i]
 //
 //     if (!kLines[i - 1]) break
 //
 //     sum += kLine.Turnover
+//     buySum += kLine.BuyTurnover
 //   }
 //
-//   let rst = parseInt(sum / 1e7)
-//   return rst > 100 ? 100 : rst
+//   return parseInt(100 * buySum / sum)
 // }
 
 // 指标过滤
@@ -220,6 +221,7 @@ function dragonAnalysis(btcKLines, kLinesMap, dragonMap, _dayCount) {
     // dataY = [100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722]
     // let x = statisticE(btcKLines, kLines, index)
     let x = symbol
+    // let x = statisticF(kLines, index)
     let y = dragonMap[symbol].Profit
 
     // 打印实际的量
@@ -259,7 +261,8 @@ function dragonAnalysis(btcKLines, kLinesMap, dragonMap, _dayCount) {
   }
 }
 
-let NOOBS = ["PDA_USDT","ID_USDT","PNT_USDT"]
+let NOOBS = ["ZRX_USDT","OGN_USDT","UMA_USDT","ACA_USDT","PROS_USDT","VANRY_USDT","SC_USDT","MKR_USDT","ASR_USDT","ACM_USDT","RAD_USDT","UFT_USDT","FDUSD_USDT","AEUR_USDT","PAXG_USDT","COS_USDT","CVC_USDT","RSR_USDT","SUN_USDT","BETA_USDT","ALPINE_USDT","REI_USDT","DODO_USDT","RARE_USDT","VGX_USDT","NULS_USDT","MTL_USDT","LSK_USDT","SUSHI_USDT","UNI_USDT","CTK_USDT","CELO_USDT","FIS_USDT","SLP_USDT","QNT_USDT","REQ_USDT","WAXP_USDT","DYDX_USDT","AGLD_USDT","PEOPLE_USDT","GAS_USDT","ID_USDT","FLOKI_USDT","MEME_USDT","XAI_USDT","PROM_USDT","CTXC_USDT","TKO_USDT","JUP_USDT","RONIN_USDT","VTHO_USDT","STRK_USDT","PDA_USDT","AXL_USDT","BOME_USDT","DREP_USDT","MOB_USDT","PNT_USDT"]
+// let NOOBS = []
 
 async function main() {
   let kLinesMap = await readData()
@@ -267,13 +270,13 @@ async function main() {
   const BUY_LIMIT_RATE = 0               // 从什么比例入场
 
   const FIRST_FEW_DAYS = 0               // 第几K的数据,0表示今K,1表示昨K,2表示前K,以此类推
-  const BAKE_TEST_DAYS = 36              // 一共回测多少K
+  const BAKE_TEST_DAYS = 24              // 一共回测多少K
   // 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++) {
+  for (let day_count = FIRST_FEW_DAYS + BAKE_TEST_DAYS - 1; day_count > 0; day_count--) {
     let btcKline = btcKLines[btcKLines.length - (day_count + 1)]
     // let btcKlineDownRate = 100 * (btcKline.Open - btcKline.Low) / btcKline.Open // 可能的回撤计算
     let btcKlineUpRate = 100 * (btcKline.High - btcKline.Close) / btcKline.High // 可能的回撤计算
@@ -310,6 +313,8 @@ async function main() {
         if (avgProfit < -6.8) avgProfit = -6.8
         isStopLoss = true
       }
+
+      avgProfit = NumKit.getSubFloat(avgProfit - 0.2, 2)    // 手续费算进去
     } else {
       avgProfit = 0
     }