策略相关代码移动

This commit is contained in:
2025-11-02 08:41:37 +08:00
parent 77fbebe231
commit 636be73db0
2 changed files with 32 additions and 29 deletions

View File

@ -3,40 +3,12 @@ import vectorbt as vbt
import pandas as pd
import matplotlib.pyplot as plt
from strategy_executor import execute_strategy
from strategy_executor import create_portfolio
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def create_portfolio(strategy_data):
"""创建投资组合"""
print("创建基于价格比率的投资组合...")
price_ratio = strategy_data['price_ratio']
size = strategy_data['size']
initial_cash = strategy_data['initial_cash']
commission = strategy_data['commission']
try:
# 将price_ratio转换为DataFramevectorbt需要
ratio_close = pd.DataFrame({'RATIO': price_ratio})
portfolio = vbt.Portfolio.from_orders(
close=ratio_close, # 只传入比率数据
size=size, # 基于比率的交易信号
init_cash=initial_cash,
fees=commission,
freq='D'
)
print("基于价格比率的投资组合创建成功!")
return portfolio
except Exception as e:
print(f"创建投资组合时出错: {e}")
import traceback
traceback.print_exc()
return None
def plot_results(strategy_data, portfolio):
"""绘制结果图表"""

View File

@ -1,6 +1,7 @@
# strategy_executor.py
import pandas as pd
import numpy as np
import vectorbt as vbt
from data_fetcher import get_processed_data
def calculate_ratio_signals(ratio_series, window=20, num_std=2):
@ -117,6 +118,36 @@ def execute_strategy():
'hhic_data': hhic_data
}
def create_portfolio(strategy_data):
"""创建投资组合"""
print("创建基于价格比率的投资组合...")
price_ratio = strategy_data['price_ratio']
size = strategy_data['size']
initial_cash = strategy_data['initial_cash']
commission = strategy_data['commission']
try:
# 将price_ratio转换为DataFramevectorbt需要
ratio_close = pd.DataFrame({'RATIO': price_ratio})
portfolio = vbt.Portfolio.from_orders(
close=ratio_close, # 只传入比率数据
size=size, # 基于比率的交易信号
init_cash=initial_cash,
fees=commission,
freq='D'
)
print("基于价格比率的投资组合创建成功!")
return portfolio
except Exception as e:
print(f"创建投资组合时出错: {e}")
import traceback
traceback.print_exc()
return None
if __name__ == "__main__":
strategy_data = execute_strategy()
print("策略执行完成!")