diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index be0942a1..05d785f8 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -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( diff --git a/outputs/filted.log b/outputs/filted.log new file mode 100644 index 00000000..c2f4c6e2 --- /dev/null +++ b/outputs/filted.log @@ -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 \ No newline at end of file diff --git a/tools/analyze_entry_diagnostics.py b/tools/analyze_entry_diagnostics.py new file mode 100644 index 00000000..7b1337b6 --- /dev/null +++ b/tools/analyze_entry_diagnostics.py @@ -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)