| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- 诊断报告问题
- """
- import sys
- sys.path.insert(0, '/root/.openclaw/workspace/cat-fly')
- sys.path.insert(0, '/root/.openclaw/workspace/quant')
- from trend_report_fixed import TrendTrackingStrategy
- strategy = TrendTrackingStrategy()
- strategy.load_and_merge_data()
- strategy.calculate_indicators()
- result = strategy.backtest()
- trades = result['trades']
- print('='*70)
- print('交易记录诊断')
- print('='*70)
- print(f"\n总交易记录数: {len(trades)}")
- print(f"第一条交易: {trades[0]['date'].strftime('%Y-%m-%d')} {trades[0]['action']}")
- print(f"最后一条交易: {trades[-1]['date'].strftime('%Y-%m-%d')} {trades[-1]['action']}")
- print("\n前5条交易:")
- for i, t in enumerate(trades[:5], 1):
- print(f"{i}. {t['date'].strftime('%Y-%m-%d')} {t['action']}")
- print("\n后5条交易:")
- for i, t in enumerate(trades[-5:], len(trades)-4):
- print(f"{i}. {t['date'].strftime('%Y-%m-%d')} {t['action']}")
- print("\n" + "="*70)
- print('检查 get_recent_trades(20) 返回的内容:')
- print("="*70)
- recent = strategy.get_recent_trades(20)
- for i, t in enumerate(recent, 1):
- date_str = t['date'].strftime('%Y-%m-%d')
- action = t['action']
- price = t['price']
- if action == 'SELL':
- ret = t.get('return_pct', 0)
- print(f"{i:2d}. {date_str} {action:4s} @ {price:8.2f} ({ret:+.2f}%)")
- else:
- print(f"{i:2d}. {date_str} {action:4s} @ {price:8.2f}")
- print("\n" + "="*70)
- print('配对检查 - 最近10对交易:')
- print("="*70)
- # 从 recent 中配对
- pair_count = 0
- i = 0
- while i < len(recent) - 1:
- if recent[i]['action'] == 'BUY' and recent[i+1]['action'] == 'SELL':
- pair_count += 1
- buy = recent[i]
- sell = recent[i+1]
- hold_days = (sell['date'] - buy['date']).days
- ret = sell.get('return_pct', 0)
- print(f"{pair_count}. 买 {buy['date'].strftime('%Y-%m-%d')} → 卖 {sell['date'].strftime('%Y-%m-%d')} | {ret:+.2f}% | {hold_days}天")
- i += 2
- else:
- i += 1
- print(f"\n找到 {pair_count} 对完整交易")
|