custom_exit_price签名修复

This commit is contained in:
zhangkun9038@dingtalk.com 2026-01-07 20:56:49 +08:00
parent 17e99c7ac8
commit cfbbf11820
3 changed files with 267 additions and 3 deletions

View File

@ -931,10 +931,11 @@ class FreqaiPrimer(IStrategy):
adjusted_rate = proposed_rate * (1 - 0.0015)
self.strategy_log(f"[{pair}] 自定义买入价:{adjusted_rate:.6f}(原价:{proposed_rate:.6f}")
return adjusted_rate
def custom_exit_price(self, pair: str, trade: Trade | None, current_time: datetime, proposed_rate: float,
entry_tag: str | None, side: str, **kwargs) -> float:
def custom_exit_price(self, pair: str, trade: Trade, current_time: datetime, proposed_rate: float,
current_profit: float, exit_tag: str | None, **kwargs) -> float:
"""自定义出场价格:向上浮动 0.15%"""
adjusted_rate = proposed_rate * (1 + 0.0015)
self.strategy_log(f"[{pair}] 自定义买入价:{adjusted_rate:.6f}(原价:{proposed_rate:.6f}")
self.strategy_log(f"[{pair}] 自定义卖出价:{adjusted_rate:.6f}(原价:{proposed_rate:.6f},利润:{current_profit:.2%}")
return adjusted_rate
def confirm_trade_exit(

70
outputs/filted.log Normal file
View File

@ -0,0 +1,70 @@
2026-01-07 09:25:24,336 - freqaiprimer - INFO - [入场诊断] BTC/USDT | 价格: 91321.300000 | vs 5K高点: -0.13% | vs EMA5: +0.00% | 布林位置: 0.64 | RSI: 51.0 | MACD: down | 市场: strong_bull | ML概率: 0.28
2026-01-07 09:25:24,337 - freqaiprimer - INFO - [入场诊断] BTC/USDT | 价格: 91313.600000 | vs 5K高点: -0.14% | vs EMA5: +0.00% | 布林位置: 0.63 | RSI: 51.0 | MACD: down | 市场: strong_bull | ML概率: 0.29
2026-01-07 09:25:24,338 - freqaiprimer - INFO - [入场诊断] BTC/USDT | 价格: 91415.200000 | vs 5K高点: -0.05% | vs EMA5: +0.00% | 布林位置: 0.71 | RSI: 51.0 | MACD: down | 市场: strong_bull | ML概率: 0.28
2026-01-07 09:25:24,338 - freqaiprimer - INFO - [入场诊断] BTC/USDT | 价格: 91537.100000 | vs 5K高点: -0.60% | vs EMA5: +0.00% | 布林位置: 0.81 | RSI: 51.0 | MACD: down | 市场: strong_bull | ML概率: 0.28
2026-01-07 09:25:24,339 - freqaiprimer - INFO - [入场诊断] BTC/USDT | 价格: 91939.700000 | vs 5K高点: -0.17% | vs EMA5: +0.00% | 布林位置: 1.04 | RSI: 69.5 | MACD: up | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:24,608 - freqaiprimer - INFO - [入场诊断] TON/USDT | 价格: 1.865000 | vs 5K高点: -0.37% | vs EMA5: +0.00% | 布林位置: 0.67 | RSI: 50.0 | MACD: down | 市场: strong_bull | ML概率: 0.54
2026-01-07 09:25:24,608 - freqaiprimer - INFO - [入场诊断] TON/USDT | 价格: 1.865000 | vs 5K高点: -0.37% | vs EMA5: +0.00% | 布林位置: 0.67 | RSI: 50.0 | MACD: down | 市场: strong_bull | ML概率: 0.49
2026-01-07 09:25:24,609 - freqaiprimer - INFO - [入场诊断] TON/USDT | 价格: 1.869000 | vs 5K高点: -0.16% | vs EMA5: +0.00% | 布林位置: 0.81 | RSI: 50.0 | MACD: down | 市场: strong_bull | ML概率: 0.49
2026-01-07 09:25:24,609 - freqaiprimer - INFO - [入场诊断] TON/USDT | 价格: 1.865000 | vs 5K高点: -0.27% | vs EMA5: +0.00% | 布林位置: 0.67 | RSI: 50.0 | MACD: down | 市场: strong_bull | ML概率: 0.51
2026-01-07 09:25:24,610 - freqaiprimer - INFO - [入场诊断] TON/USDT | 价格: 1.873000 | vs 5K高点: -0.16% | vs EMA5: +0.00% | 布林位置: 0.93 | RSI: 56.0 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:24,873 - freqaiprimer - INFO - [入场诊断] DOT/USDT | 价格: 2.140000 | vs 5K高点: -0.19% | vs EMA5: +0.00% | 布林位置: 0.45 | RSI: 49.3 | MACD: down | 市场: strong_bull | ML概率: 0.12
2026-01-07 09:25:24,874 - freqaiprimer - INFO - [入场诊断] DOT/USDT | 价格: 2.140000 | vs 5K高点: -0.05% | vs EMA5: +0.00% | 布林位置: 0.45 | RSI: 49.3 | MACD: down | 市场: strong_bull | ML概率: 0.11
2026-01-07 09:25:24,875 - freqaiprimer - INFO - [入场诊断] DOT/USDT | 价格: 2.141000 | vs 5K高点: -0.14% | vs EMA5: +0.00% | 布林位置: 0.47 | RSI: 49.3 | MACD: down | 市场: strong_bull | ML概率: 0.09
2026-01-07 09:25:24,875 - freqaiprimer - INFO - [入场诊断] DOT/USDT | 价格: 2.144000 | vs 5K高点: -0.60% | vs EMA5: +0.00% | 布林位置: 0.54 | RSI: 49.3 | MACD: down | 市场: strong_bull | ML概率: -0.01
2026-01-07 09:25:24,876 - freqaiprimer - INFO - [入场诊断] DOT/USDT | 价格: 2.152000 | vs 5K高点: -0.23% | vs EMA5: +0.00% | 布林位置: 0.70 | RSI: 56.5 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:25,145 - freqaiprimer - INFO - [入场诊断] XRP/USDT | 价格: 2.091900 | vs 5K高点: -0.10% | vs EMA5: +0.00% | 布林位置: 0.74 | RSI: 59.8 | MACD: down | 市场: strong_bull | ML概率: 0.11
2026-01-07 09:25:25,146 - freqaiprimer - INFO - [入场诊断] XRP/USDT | 价格: 2.091500 | vs 5K高点: -0.08% | vs EMA5: +0.00% | 布林位置: 0.74 | RSI: 59.8 | MACD: down | 市场: strong_bull | ML概率: 0.16
2026-01-07 09:25:25,146 - freqaiprimer - INFO - [入场诊断] XRP/USDT | 价格: 2.090400 | vs 5K高点: -0.13% | vs EMA5: +0.00% | 布林位置: 0.73 | RSI: 59.8 | MACD: down | 市场: strong_bull | ML概率: 0.15
2026-01-07 09:25:25,147 - freqaiprimer - INFO - [入场诊断] XRP/USDT | 价格: 2.090700 | vs 5K高点: -0.43% | vs EMA5: +0.00% | 布林位置: 0.73 | RSI: 59.8 | MACD: down | 市场: strong_bull | ML概率: 0.11
2026-01-07 09:25:25,147 - freqaiprimer - INFO - [入场诊断] XRP/USDT | 价格: 2.096400 | vs 5K高点: -0.16% | vs EMA5: +0.00% | 布林位置: 0.75 | RSI: 65.7 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:25,404 - freqaiprimer - INFO - [入场诊断] SOL/USDT | 价格: 133.870000 | vs 5K高点: -0.37% | vs EMA5: +0.00% | 布林位置: 0.47 | RSI: 45.7 | MACD: down | 市场: strong_bull | ML概率: 0.26
2026-01-07 09:25:25,405 - freqaiprimer - INFO - [入场诊断] SOL/USDT | 价格: 134.030000 | vs 5K高点: -0.13% | vs EMA5: +0.00% | 布林位置: 0.52 | RSI: 45.7 | MACD: down | 市场: strong_bull | ML概率: 0.19
2026-01-07 09:25:25,406 - freqaiprimer - INFO - [入场诊断] SOL/USDT | 价格: 134.010000 | vs 5K高点: -0.13% | vs EMA5: +0.00% | 布林位置: 0.52 | RSI: 45.7 | MACD: down | 市场: strong_bull | ML概率: 0.23
2026-01-07 09:25:25,407 - freqaiprimer - INFO - [入场诊断] SOL/USDT | 价格: 133.920000 | vs 5K高点: -0.20% | vs EMA5: +0.00% | 布林位置: 0.48 | RSI: 45.7 | MACD: down | 市场: strong_bull | ML概率: 0.31
2026-01-07 09:25:25,407 - freqaiprimer - INFO - [入场诊断] SOL/USDT | 价格: 134.100000 | vs 5K高点: -0.55% | vs EMA5: +0.00% | 布林位置: 0.55 | RSI: 45.7 | MACD: down | 市场: strong_bull | ML概率: 0.07
2026-01-07 09:25:25,666 - freqaiprimer - INFO - [入场诊断] DOGE/USDT | 价格: 0.149310 | vs 5K高点: -0.27% | vs EMA5: +0.00% | 布林位置: 0.52 | RSI: 36.2 | MACD: down | 市场: strong_bull | ML概率: 0.06
2026-01-07 09:25:25,667 - freqaiprimer - INFO - [入场诊断] DOGE/USDT | 价格: 0.149360 | vs 5K高点: -0.21% | vs EMA5: +0.00% | 布林位置: 0.52 | RSI: 36.2 | MACD: down | 市场: strong_bull | ML概率: 0.04
2026-01-07 09:25:25,667 - freqaiprimer - INFO - [入场诊断] DOGE/USDT | 价格: 0.149340 | vs 5K高点: -0.23% | vs EMA5: +0.00% | 布林位置: 0.52 | RSI: 36.2 | MACD: down | 市场: strong_bull | ML概率: 0.08
2026-01-07 09:25:25,668 - freqaiprimer - INFO - [入场诊断] DOGE/USDT | 价格: 0.149500 | vs 5K高点: -0.61% | vs EMA5: +0.00% | 布林位置: 0.54 | RSI: 36.2 | MACD: down | 市场: strong_bull | ML概率: 0.03
2026-01-07 09:25:25,668 - freqaiprimer - INFO - [入场诊断] DOGE/USDT | 价格: 0.150160 | vs 5K高点: -0.17% | vs EMA5: +0.00% | 布林位置: 0.57 | RSI: 50.4 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:25,936 - freqaiprimer - INFO - [入场诊断] WCT/USDT | 价格: 0.082490 | vs 5K高点: -0.18% | vs EMA5: +0.00% | 布林位置: 0.16 | RSI: 46.8 | MACD: down | 市场: strong_bull | ML概率: 0.14
2026-01-07 09:25:25,937 - freqaiprimer - INFO - [入场诊断] WCT/USDT | 价格: 0.082570 | vs 5K高点: -0.08% | vs EMA5: +0.00% | 布林位置: 0.19 | RSI: 46.8 | MACD: down | 市场: strong_bull | ML概率: 0.14
2026-01-07 09:25:25,938 - freqaiprimer - INFO - [入场诊断] WCT/USDT | 价格: 0.082560 | vs 5K高点: -0.15% | vs EMA5: +0.00% | 布林位置: 0.18 | RSI: 46.8 | MACD: down | 市场: strong_bull | ML概率: 0.17
2026-01-07 09:25:25,938 - freqaiprimer - INFO - [入场诊断] WCT/USDT | 价格: 0.082650 | vs 5K高点: -0.72% | vs EMA5: +0.00% | 布林位置: 0.21 | RSI: 46.8 | MACD: down | 市场: strong_bull | ML概率: 0.08
2026-01-07 09:25:25,939 - freqaiprimer - INFO - [入场诊断] WCT/USDT | 价格: 0.083060 | vs 5K高点: -0.23% | vs EMA5: +0.00% | 布林位置: 0.32 | RSI: 56.1 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:26,221 - freqaiprimer - INFO - [入场诊断] TRUMP/USDT | 价格: 5.393000 | vs 5K高点: -0.20% | vs EMA5: +0.00% | 布林位置: 0.54 | RSI: 54.7 | MACD: down | 市场: strong_bull | ML概率: 0.31
2026-01-07 09:25:26,222 - freqaiprimer - INFO - [入场诊断] TRUMP/USDT | 价格: 5.402000 | vs 5K高点: -0.13% | vs EMA5: +0.00% | 布林位置: 0.59 | RSI: 54.7 | MACD: down | 市场: strong_bull | ML概率: 0.32
2026-01-07 09:25:26,223 - freqaiprimer - INFO - [入场诊断] TRUMP/USDT | 价格: 5.409000 | vs 5K高点: -0.22% | vs EMA5: +0.00% | 布林位置: 0.63 | RSI: 54.7 | MACD: down | 市场: strong_bull | ML概率: 0.34
2026-01-07 09:25:26,223 - freqaiprimer - INFO - [入场诊断] TRUMP/USDT | 价格: 5.421000 | vs 5K高点: -0.29% | vs EMA5: +0.00% | 布林位置: 0.70 | RSI: 54.7 | MACD: down | 市场: strong_bull | ML概率: 0.36
2026-01-07 09:25:26,224 - freqaiprimer - INFO - [入场诊断] TRUMP/USDT | 价格: 5.425000 | vs 5K高点: -0.22% | vs EMA5: +0.00% | 布林位置: 0.72 | RSI: 53.9 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:26,481 - freqaiprimer - INFO - [入场诊断] SUI/USDT | 价格: 1.691100 | vs 5K高点: -0.19% | vs EMA5: +0.00% | 布林位置: 0.49 | RSI: 49.1 | MACD: down | 市场: strong_bull | ML概率: 0.33
2026-01-07 09:25:26,482 - freqaiprimer - INFO - [入场诊断] SUI/USDT | 价格: 1.691400 | vs 5K高点: -0.17% | vs EMA5: +0.00% | 布林位置: 0.49 | RSI: 49.1 | MACD: down | 市场: strong_bull | ML概率: 0.34
2026-01-07 09:25:26,482 - freqaiprimer - INFO - [入场诊断] SUI/USDT | 价格: 1.691200 | vs 5K高点: -0.18% | vs EMA5: +0.00% | 布林位置: 0.49 | RSI: 49.1 | MACD: down | 市场: strong_bull | ML概率: 0.39
2026-01-07 09:25:26,483 - freqaiprimer - INFO - [入场诊断] SUI/USDT | 价格: 1.694000 | vs 5K高点: -0.51% | vs EMA5: +0.00% | 布林位置: 0.53 | RSI: 49.1 | MACD: down | 市场: strong_bull | ML概率: 0.14
2026-01-07 09:25:26,483 - freqaiprimer - INFO - [入场诊断] SUI/USDT | 价格: 1.701500 | vs 5K高点: -0.06% | vs EMA5: +0.00% | 布林位置: 0.61 | RSI: 56.8 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:26,740 - freqaiprimer - INFO - [入场诊断] PEPE/USDT | 价格: 0.000007 | vs 5K高点: -0.41% | vs EMA5: +0.00% | 布林位置: 0.91 | RSI: 76.4 | MACD: up | 市场: strong_bull | ML概率: 0.06
2026-01-07 09:25:26,741 - freqaiprimer - INFO - [入场诊断] PEPE/USDT | 价格: 0.000007 | vs 5K高点: -0.33% | vs EMA5: +0.00% | 布林位置: 0.92 | RSI: 76.4 | MACD: up | 市场: strong_bull | ML概率: 0.15
2026-01-07 09:25:26,742 - freqaiprimer - INFO - [入场诊断] PEPE/USDT | 价格: 0.000007 | vs 5K高点: -0.09% | vs EMA5: +0.00% | 布林位置: 0.93 | RSI: 76.4 | MACD: up | 市场: strong_bull | ML概率: 0.08
2026-01-07 09:25:26,742 - freqaiprimer - INFO - [入场诊断] PEPE/USDT | 价格: 0.000007 | vs 5K高点: -0.10% | vs EMA5: +0.00% | 布林位置: 0.94 | RSI: 76.4 | MACD: up | 市场: strong_bull | ML概率: 0.13
2026-01-07 09:25:26,743 - freqaiprimer - INFO - [入场诊断] PEPE/USDT | 价格: 0.000007 | vs 5K高点: -0.16% | vs EMA5: +0.00% | 布林位置: 0.93 | RSI: 76.4 | MACD: up | 市场: strong_bull | ML概率: 0.14
2026-01-07 09:25:26,998 - freqaiprimer - INFO - [入场诊断] TRB/USDT | 价格: 21.870000 | vs 5K高点: -0.41% | vs EMA5: +0.00% | 布林位置: 0.42 | RSI: 55.1 | MACD: down | 市场: strong_bull | ML概率: 0.04
2026-01-07 09:25:26,999 - freqaiprimer - INFO - [入场诊断] TRB/USDT | 价格: 21.870000 | vs 5K高点: -0.41% | vs EMA5: +0.00% | 布林位置: 0.42 | RSI: 55.1 | MACD: down | 市场: strong_bull | ML概率: 0.03
2026-01-07 09:25:27,000 - freqaiprimer - INFO - [入场诊断] TRB/USDT | 价格: 21.870000 | vs 5K高点: -0.32% | vs EMA5: +0.00% | 布林位置: 0.42 | RSI: 55.1 | MACD: down | 市场: strong_bull | ML概率: 0.03
2026-01-07 09:25:27,000 - freqaiprimer - INFO - [入场诊断] TRB/USDT | 价格: 21.930000 | vs 5K高点: -0.72% | vs EMA5: +0.00% | 布林位置: 0.50 | RSI: 55.1 | MACD: down | 市场: strong_bull | ML概率: -0.06
2026-01-07 09:25:27,001 - freqaiprimer - INFO - [入场诊断] TRB/USDT | 价格: 22.050000 | vs 5K高点: -0.18% | vs EMA5: +0.00% | 布林位置: 0.66 | RSI: 63.1 | MACD: down | 市场: strong_bull | ML概率: 0.00
2026-01-07 09:25:27,259 - freqaiprimer - INFO - [入场诊断] MASK/USDT | 价格: 0.657800 | vs 5K高点: -0.60% | vs EMA5: +0.00% | 布林位置: 0.73 | RSI: 54.7 | MACD: up | 市场: strong_bull | ML概率: 0.50
2026-01-07 09:25:27,260 - freqaiprimer - INFO - [入场诊断] MASK/USDT | 价格: 0.657800 | vs 5K高点: -0.44% | vs EMA5: +0.00% | 布林位置: 0.73 | RSI: 54.7 | MACD: up | 市场: strong_bull | ML概率: 0.48
2026-01-07 09:25:27,261 - freqaiprimer - INFO - [入场诊断] MASK/USDT | 价格: 0.658400 | vs 5K高点: -0.24% | vs EMA5: +0.00% | 布林位置: 0.77 | RSI: 54.7 | MACD: up | 市场: strong_bull | ML概率: 0.47
2026-01-07 09:25:27,261 - freqaiprimer - INFO - [入场诊断] MASK/USDT | 价格: 0.659300 | vs 5K高点: +0.00% | vs EMA5: +0.00% | 布林位置: 0.81 | RSI: 54.7 | MACD: up | 市场: strong_bull | ML概率: 0.45
2026-01-07 09:25:27,262 - freqaiprimer - INFO - [入场诊断] MASK/USDT | 价格: 0.659300 | vs 5K高点: -0.03% | vs EMA5: +0.00% | 布林位置: 0.81 | RSI: 54.7 | MACD: up | 市场: strong_bull | ML概率: 0.43
2026-01-07 09:25:27,538 - freqaiprimer - INFO - [入场诊断] UNI/USDT | 价格: 5.826000 | vs 5K高点: -0.34% | vs EMA5: +0.00% | 布林位置: -0.03 | RSI: 43.6 | MACD: down | 市场: weak_bull | ML概率: 0.65
2026-01-07 09:25:27,539 - freqaiprimer - INFO - [入场诊断] UNI/USDT | 价格: 5.834000 | vs 5K高点: -0.15% | vs EMA5: +0.00% | 布林位置: 0.02 | RSI: 43.6 | MACD: down | 市场: weak_bull | ML概率: 0.57
2026-01-07 09:25:27,539 - freqaiprimer - INFO - [入场诊断] UNI/USDT | 价格: 5.837000 | vs 5K高点: -0.10% | vs EMA5: +0.00% | 布林位置: 0.04 | RSI: 43.6 | MACD: down | 市场: weak_bull | ML概率: 0.58
2026-01-07 09:25:27,540 - freqaiprimer - INFO - [入场诊断] UNI/USDT | 价格: 5.838000 | vs 5K高点: -0.32% | vs EMA5: +0.00% | 布林位置: 0.05 | RSI: 43.6 | MACD: down | 市场: weak_bull | ML概率: 0.59
2026-01-07 09:25:27,541 - freqaiprimer - INFO - [入场诊断] UNI/USDT | 价格: 5.851000 | vs 5K高点: -0.70% | vs EMA5: +0.00% | 布林位置: 0.13 | RSI: 43.6 | MACD: down | 市场: weak_bull | ML概率: 0.55
2026-01-07 09:25:27,797 - freqaiprimer - INFO - [入场诊断] KAITO/USDT | 价格: 0.541700 | vs 5K高点: -0.24% | vs EMA5: +0.00% | 布林位置: -0.12 | RSI: 28.3 | MACD: down | 市场: weak_bull | ML概率: 0.39
2026-01-07 09:25:27,798 - freqaiprimer - INFO - [入场诊断] KAITO/USDT | 价格: 0.542000 | vs 5K高点: -0.40% | vs EMA5: +0.00% | 布林位置: -0.10 | RSI: 28.3 | MACD: down | 市场: weak_bull | ML概率: 0.41
2026-01-07 09:25:27,799 - freqaiprimer - INFO - [入场诊断] KAITO/USDT | 价格: 0.543300 | vs 5K高点: -0.17% | vs EMA5: +0.00% | 布林位置: -0.03 | RSI: 28.3 | MACD: down | 市场: weak_bull | ML概率: 0.37
2026-01-07 09:25:27,799 - freqaiprimer - INFO - [入场诊断] KAITO/USDT | 价格: 0.543000 | vs 5K高点: -0.49% | vs EMA5: +0.00% | 布林位置: -0.04 | RSI: 28.3 | MACD: down | 市场: weak_bull | ML概率: 0.38
2026-01-07 09:25:27,800 - freqaiprimer - INFO - [入场诊断] KAITO/USDT | 价格: 0.544500 | vs 5K高点: -0.22% | vs EMA5: +0.00% | 布林位置: 0.09 | RSI: 35.2 | MACD: down | 市场: weak_bull | ML概率: 0.00

View File

@ -0,0 +1,193 @@
#!/usr/bin/env python3
"""
入场诊断统计分析脚本
分析回测日志中的入场诊断数据生成统计报告
"""
import re
import sys
from collections import defaultdict
def parse_log_file(log_file):
"""解析日志文件,提取入场诊断数据"""
entries = []
with open(log_file, 'r', encoding='utf-8') as f:
for line in f:
if '[入场诊断]' not in line:
continue
entry = {}
# 提取币对
pair_match = re.search(r'\[入场诊断\]\s+(\S+)\s+\|', line)
if pair_match:
entry['pair'] = pair_match.group(1)
# 提取价格
price_match = re.search(r'价格:\s+([0-9.]+)', line)
if price_match:
entry['price'] = float(price_match.group(1))
# 提取 vs 5K高点
high_match = re.search(r'vs 5K高点:\s+([+-]?[0-9.]+)%', line)
if high_match:
entry['vs_5k_high'] = float(high_match.group(1))
# 提取 vs EMA5
ema_match = re.search(r'vs EMA5:\s+([+-]?[0-9.]+)%', line)
if ema_match:
entry['vs_ema5'] = float(ema_match.group(1))
# 提取布林位置
bb_match = re.search(r'布林位置:\s+([0-9.-]+)', line)
if bb_match:
entry['bb_position'] = float(bb_match.group(1))
# 提取 RSI
rsi_match = re.search(r'RSI:\s+([0-9.]+)', line)
if rsi_match:
entry['rsi'] = float(rsi_match.group(1))
# 提取 MACD
macd_match = re.search(r'MACD:\s+(\w+)', line)
if macd_match:
entry['macd'] = macd_match.group(1)
# 提取市场状态
market_match = re.search(r'市场:\s+(\w+)', line)
if market_match:
entry['market_state'] = market_match.group(1)
# 提取 ML概率
ml_match = re.search(r'ML概率:\s+([0-9.-]+)', line)
if ml_match:
entry['ml_prob'] = float(ml_match.group(1))
if entry:
entries.append(entry)
return entries
def analyze_entries(entries):
"""分析入场数据,生成统计报告"""
if not entries:
print("❌ 没有找到入场诊断数据")
return
total = len(entries)
# 统计各项指标
bb_over_1 = sum(1 for e in entries if e.get('bb_position', 0) > 1.0)
bb_over_0_8 = sum(1 for e in entries if e.get('bb_position', 0) > 0.8)
rsi_over_70 = sum(1 for e in entries if e.get('rsi', 0) > 70)
rsi_over_60 = sum(1 for e in entries if e.get('rsi', 0) > 60)
high_positive = sum(1 for e in entries if e.get('vs_5k_high', -1) > 0)
high_near_zero = sum(1 for e in entries if -0.1 <= e.get('vs_5k_high', -1) <= 0)
ml_zero = sum(1 for e in entries if e.get('ml_prob', -1) == 0.0)
ml_very_low = sum(1 for e in entries if 0 < e.get('ml_prob', -1) < 0.2)
ml_low = sum(1 for e in entries if 0.2 <= e.get('ml_prob', -1) < 0.5)
ml_medium = sum(1 for e in entries if 0.5 <= e.get('ml_prob', -1) < 0.7)
ml_high = sum(1 for e in entries if e.get('ml_prob', -1) >= 0.7)
macd_up = sum(1 for e in entries if e.get('macd') == 'up')
macd_down = sum(1 for e in entries if e.get('macd') == 'down')
# 市场状态统计
market_states = defaultdict(int)
for e in entries:
if 'market_state' in e:
market_states[e['market_state']] += 1
# 币对统计
pair_counts = defaultdict(int)
for e in entries:
if 'pair' in e:
pair_counts[e['pair']] += 1
# 打印报告
print("=" * 80)
print(f"📊 入场诊断统计报告(共 {total} 条候选入场)")
print("=" * 80)
print("\n【1. 布林位置分布】")
print(f" 布林位置 > 1.0 (布林上轨之上): {bb_over_1:3d}/{total} ({bb_over_1*100//total:2d}%)")
print(f" 布林位置 > 0.8 (接近上轨): {bb_over_0_8:3d}/{total} ({bb_over_0_8*100//total:2d}%)")
print(f" 布林位置 ≤ 0.8 (相对安全): {total-bb_over_0_8:3d}/{total} ({(total-bb_over_0_8)*100//total:2d}%)")
if bb_over_1 > total * 0.1:
print(f" ⚠️ 警告:{bb_over_1*100//total}% 的入场在布林上轨之上(追高风险)")
print("\n【2. RSI 超买分布】")
print(f" RSI > 70 (严重超买): {rsi_over_70:3d}/{total} ({rsi_over_70*100//total:2d}%)")
print(f" RSI > 60 (轻度超买): {rsi_over_60:3d}/{total} ({rsi_over_60*100//total:2d}%)")
print(f" RSI ≤ 60 (正常/超卖): {total-rsi_over_60:3d}/{total} ({(total-rsi_over_60)*100//total:2d}%)")
if rsi_over_70 > total * 0.2:
print(f" ⚠️ 警告:{rsi_over_70*100//total}% 的入场 RSI 超过 70超买风险")
print("\n【3. 短期高点位置】")
print(f" vs 5K高点 > 0 (买在高位): {high_positive:3d}/{total} ({high_positive*100//total:2d}%)")
print(f" vs 5K高点 [-0.1%, 0] (接近): {high_near_zero:3d}/{total} ({high_near_zero*100//total:2d}%)")
print(f" vs 5K高点 < -0.1% (回调后): {total-high_positive-high_near_zero:3d}/{total} ({(total-high_positive-high_near_zero)*100//total:2d}%)")
if high_positive > total * 0.05:
print(f" ⚠️ 警告:{high_positive*100//total}% 的入场买在短期高点之上")
print("\n【4. ML 置信度分布】")
print(f" ML 概率 = 0.00 (完全不看好): {ml_zero:3d}/{total} ({ml_zero*100//total:2d}%)")
print(f" ML 概率 (0, 0.2) (极低): {ml_very_low:3d}/{total} ({ml_very_low*100//total:2d}%)")
print(f" ML 概率 [0.2, 0.5) (低): {ml_low:3d}/{total} ({ml_low*100//total:2d}%)")
print(f" ML 概率 [0.5, 0.7) (中): {ml_medium:3d}/{total} ({ml_medium*100//total:2d}%)")
print(f" ML 概率 >= 0.7 (高): {ml_high:3d}/{total} ({ml_high*100//total:2d}%)")
print(f" ML 概率 < 0.5 小计: {ml_zero+ml_very_low+ml_low:3d}/{total} ({(ml_zero+ml_very_low+ml_low)*100//total:2d}%)")
if ml_zero + ml_very_low + ml_low > total * 0.7:
print(f" ⚠️ 警告:{(ml_zero+ml_very_low+ml_low)*100//total}% 的候选入场 ML 置信度 < 0.5")
print("\n【5. MACD 趋势】")
print(f" MACD 上升 (up): {macd_up:3d}/{total} ({macd_up*100//total:2d}%)")
print(f" MACD 下降 (down): {macd_down:3d}/{total} ({macd_down*100//total:2d}%)")
print("\n【6. 市场状态分布】")
for state, count in sorted(market_states.items(), key=lambda x: -x[1]):
print(f" {state:15s}: {count:3d}/{total} ({count*100//total:2d}%)")
print("\n【7. 币对分布Top 10")
for pair, count in sorted(pair_counts.items(), key=lambda x: -x[1])[:10]:
print(f" {pair:15s}: {count:3d}/{total} ({count*100//total:2d}%)")
print("\n" + "=" * 80)
print("💡 建议:")
if bb_over_1 > total * 0.1:
print(f" • 建议添加布林位置过滤bb_position <= 0.8")
if rsi_over_70 > total * 0.2:
print(f" • 建议添加 RSI 过滤rsi <= 65 或 70")
if high_positive > total * 0.05:
print(f" • 建议添加短期高点过滤vs_5k_high <= 0")
if ml_zero + ml_very_low + ml_low > total * 0.7:
print(f" • ML 审核官可能阈值过低,建议提高 ml_entry_signal_threshold")
print("=" * 80)
if __name__ == '__main__':
if len(sys.argv) < 2:
print("用法: python analyze_entry_diagnostics.py <日志文件路径>")
print("示例: python analyze_entry_diagnostics.py outputs/filted.log")
sys.exit(1)
log_file = sys.argv[1]
try:
entries = parse_log_file(log_file)
analyze_entries(entries)
except FileNotFoundError:
print(f"❌ 错误:找不到文件 {log_file}")
sys.exit(1)
except Exception as e:
print(f"❌ 错误:{e}")
import traceback
traceback.print_exc()
sys.exit(1)