2025年3月6日,对代码进一步做优化:
1. 新增日志记录功能
在execute_trade函数中添加日志记录逻辑,并修改函数参数以获取完整的交易上下文信息。
# 新增日志文件路径常量(添加在参数定义区)
LOG_FILE = "trading_log.csv" # 使用CSV格式便于后续分析
def execute_trade(action, symbol, price, rsi, buy_thresh, sell_thresh):
"""执行交易并记录日志"""
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
# 构造日志条目(CSV格式)
log_entry = f"{timestamp},{action},{symbol},{price:.5f},{rsi:.4f},{buy_thresh},{sell_thresh}\n"
# 如果是首次运行,写入CSV头部
try:
with open(LOG_FILE, "x") as f:
f.write("timestamp,action,symbol,price,rsi,buy_threshold,sell_threshold\n")
except FileExistsError:
pass
# 追加日志记录
with open(LOG_FILE, "a") as f:
f.write(log_entry)
print(f"[{timestamp}] {action} {symbol} @ {price:.5f} | RSI: {rsi:.4f}")
2. 修改主循环的交易触发逻辑
将必要的交易参数传递给execute_trade函数:
# 修改后的主循环交易触发部分
if len(price_history) >= 14: # 修改为>=14确保足够数据点
current_prices = price_history[-14:] # 始终取最近14个数据点
rsi = calculate_rsi(current_prices)
if rsi < BUY_THRESHOLD:
execute_trade("BUY", TRADE_SYMBOL, price, rsi, BUY_THRESHOLD, SELL_THRESHOLD)
elif rsi > SELL_THRESHOLD:
execute_trade("SELL", TRADE_SYMBOL, price, rsi, BUY_THRESHOLD, SELL_THRESHOLD)
timestamp,action,symbol,price,rsi,buy_threshold,sell_threshold
2023-10-05 14:30:00,BUY,EUR/USD,1.12345,0.1890,-0.2,0.8
2023-10-05 14:45:15,SELL,EUR/USD,1.12560,0.8105,-0.2,0.8
这些修改会生成结构化交易日志,包含交易决策的所有关键参数,方便后续进行:
交易绩效分析
策略参数优化
异常交易排查
市场环境回查