48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import json
|
|
import pandas as pd
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# 定义结果目录
|
|
result_dir = Path('../result')
|
|
|
|
# 确保结果目录存在
|
|
if not result_dir.exists():
|
|
raise FileNotFoundError(f"Directory {result_dir} does not exist")
|
|
|
|
# 寻找文件名包含 'backtest-result-' 的 JSON 文件
|
|
json_files = [f for f in result_dir.glob('*.json') if 'backtest-result-' in f.name]
|
|
|
|
if not json_files:
|
|
raise FileNotFoundError("No JSON files with 'backtest-result-' in name found in ../result")
|
|
|
|
# 找到文件大小最大的 JSON 文件
|
|
largest_file = max(json_files, key=lambda x: x.stat().st_size)
|
|
|
|
# 读取最大的 JSON 文件
|
|
with open(largest_file) as f:
|
|
data = json.load(f)
|
|
|
|
# 提取交易记录
|
|
trades = data['strategy']['TheForceV7']['trades']
|
|
trades_df = pd.DataFrame(trades)
|
|
|
|
# 选择关键字段
|
|
trades_df = trades_df[[
|
|
'pair', 'open_date', 'close_date', 'open_rate', 'close_rate', 'amount',
|
|
'profit_ratio', 'profit_abs', 'exit_reason', 'fee_open', 'fee_close',
|
|
'trade_duration', 'min_rate', 'max_rate'
|
|
]]
|
|
|
|
# 转换为本地时间(可选)
|
|
trades_df['open_date'] = pd.to_datetime(trades_df['open_date'])
|
|
trades_df['close_date'] = pd.to_datetime(trades_df['close_date'])
|
|
|
|
# 定义输出 CSV 文件路径(在 ../result 目录下)
|
|
output_csv = result_dir / 'backtest_trades.csv'
|
|
|
|
# 保存为 CSV
|
|
trades_df.to_csv(output_csv, index=False)
|
|
|
|
print(f"Successfully converted {largest_file} to {output_csv}")
|