策略相关代码移动
This commit is contained in:
@ -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转换为DataFrame(vectorbt需要)
|
||||
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):
|
||||
"""绘制结果图表"""
|
||||
|
||||
@ -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转换为DataFrame(vectorbt需要)
|
||||
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("策略执行完成!")
|
||||
Reference in New Issue
Block a user