myTestFreqAI/tools/tradestocsv.py
zhangkun9038@dingtalk.com 66492da604 tradestocsv.py update
2025-05-16 12:40:40 +00:00

51 lines
1.6 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)
# 从环境变量中获取策略名称
strategy_name = os.environ.get('STRATEGY_NAME', 'TheForceV7') # 如果未设置环境变量,则使用默认值 'TheForceV7'
# 提取交易记录
trades = data['strategy'][strategy_name]['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}")