交作业
来源:3-8 【作业】:比较3只股票的累计收益率,并进行可视化
慕娘2479997
2021-05-21
from XmartTrading.data import stock from XmartTrading.QuantCore import Stratagy import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline
# 交易策略函数 周四买入 周一卖出def StgFunc(price: pd.DataFrame) -> pd.DataFrame: df = Stratagy.CreateStratagyFuncReturnType(price.index) df['weekdays'] = df.index.weekday df.loc[df['weekdays'] == 3, 'buySignal'] = 1 df.loc[df['weekdays'] == 0, 'buySignal'] = -1 return df
start_date = '2019-1-1'end_date = '2019-12-31'prams= {
'price': '@~'}stgs = {
'600519.XSHG': Stratagy(stock('600519.XSHG', start_date = start_date, end_date = end_date)),
'601021.XSHG': Stratagy(stock('601021.XSHG', start_date = start_date, end_date = end_date)),
'600327.XSHG': Stratagy(stock('600327.XSHG', start_date = start_date, end_date = end_date))}df_cums : pd.DataFrame = pd.DataFrame()for code, s in stgs.items():
s.set_stgFuncParams(prams)
s.SetStratagyFunc(StgFunc)
s.execStg()
df_cums[code] = s.get_data()[~np.isnan(s.get_data().position_profit)].cummulative_profit
df_cums.plot()
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('2019全年 周四买入周一卖')
plt.xlabel('Date')
plt.ylabel('累计收益率(%)')
plt.show()自己写的这个库主要是OOP实现的,用法看起来和函数式的有些不同。
写回答
1回答
-
DeltaF
2021-06-08
基本一致的,棒棒哒~ 祝学习愉快!
00