diff --git a/gogogo/result_visualizer.py b/gogogo/result_visualizer.py index 32cb739..7b23d54 100644 --- a/gogogo/result_visualizer.py +++ b/gogogo/result_visualizer.py @@ -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): """绘制结果图表""" diff --git a/gogogo/strategy_executor.py b/gogogo/strategy_executor.py index 3de9ccd..ed6b2c2 100644 --- a/gogogo/strategy_executor.py +++ b/gogogo/strategy_executor.py @@ -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("策略执行完成!") \ No newline at end of file