test_extract.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python3
  2. import subprocess
  3. result = subprocess.run(['python3', 'cyb50_kalman_filter_daily.py'], cwd='/root/.openclaw/workspace/kalman-filter', capture_output=True, text=True, timeout=300)
  4. output = result.stdout
  5. lines = output.split('\n')
  6. signals = []
  7. in_signal_section = False
  8. for line in lines:
  9. if '所有交易信号详情' in line:
  10. in_signal_section = True
  11. continue
  12. if in_signal_section:
  13. stripped = line.strip()
  14. if len(stripped) > 30:
  15. parts = stripped.split()
  16. if len(parts) >= 3 and parts[0].isdigit() and len(parts[1]) == 10 and parts[1][4] == '-':
  17. signals.append({
  18. 'num': parts[0],
  19. 'date': parts[1],
  20. 'action': parts[2],
  21. 'price': parts[3] if len(parts) > 3 else '',
  22. })
  23. # 获取所有信号
  24. if '当前市场状态' in line:
  25. break
  26. print(f'找到 {len(signals)} 个交易信号')
  27. # 取最近40个信号
  28. recent_signals = signals[-40:] if len(signals) > 40 else signals
  29. print(f'\n最近40个信号中的前10个:')
  30. for s in recent_signals[:10]:
  31. print(f" {s['num']:>3} {s['date']} {s['action']:>4} {s['price']}")
  32. print(f'\n最近40个信号中的后10个:')
  33. for s in recent_signals[-10:]:
  34. print(f" {s['num']:>3} {s['date']} {s['action']:>4} {s['price']}")
  35. # 配对
  36. trades = []
  37. for i in range(len(recent_signals) - 1):
  38. if recent_signals[i]['action'] == '买入' and recent_signals[i+1]['action'] == '卖出':
  39. buy = recent_signals[i]
  40. sell = recent_signals[i+1]
  41. trades.append(f"{buy['num']} {buy['date']}买入→{sell['date']}卖出")
  42. print(f'\n配对到 {len(trades)} 对交易')
  43. print('\n最近5对:')
  44. for t in trades[-5:]:
  45. print(f' {t}')