首先,我们需要准备好环境按月股票配资,安装必要的库:
pip install pandas matplotlib
以下是使用Python实现唐奇安通道量化策略的过程。Python是当下最大众化的编程语言,但其基本概念、基础知识还是比较多的,对于小白来说,一时间要掌握这么多还是有些吃力,甚至学完就忘!
因此,编程君为大家准备了《Python数据科学速查表》,帮助你提高效率,查漏补缺!限时扫码,免费领取!扫描下方图片二维码
先领先用,快人一步
(内部学员联系专属辅导员即可)
图片
图片
图片
一、导入库和数据
import pandas as pdimport matplotlib.pyplot as pltimport numpy as npimport warningswarnings.filterwarnings('ignore')# 假设这里的df是已经加载了股票历史数据的DataFrame,包含每日的收盘价df = pd.read_csv('sz399006.csv') # 以创业板指数为例df['candle_end_time'] = pd.to_datetime(df['candle_end_time'])# 数据从2020年1月1日开始df = df[df['candle_end_time']>=pd.to_datetime('20200101')]# 如果无法使用真实股票数据,可以用随机数据# df = pd.DataFrame({'Close': np.random.rand(100) + np.linspace(1, 2, 100)})
二、计算交易信号
唐奇安通道量化策略的交易逻辑是:
当股价突破近20日收盘价最高点时,买入股票;当股价跌破近10日收盘价最低点时,卖出股票。
# 计算唐奇安通道的上轨和下轨df['20d_high'] = df['Close'].rolling(window=20).max().shift()df['10d_low'] = df['Close'].rolling(window=10).min().shift()# 创建信号df['signal'] = np.nancondition1 = (df['Close'] > df['20d_high']) & (df['Close'].shift() <= df['20d_high'].shift())df['signal'][condition1] = 1 # 突破上轨买入condition2 = (df['Close'] < df['10d_low']) &(df['Close'].shift() >= df['10d_low'].shift())df['signal'][condition2] = 0 # 跌破下轨卖出df['signal'] = df['signal'].fillna(method='ffill')
没基础?从0开始学Python?莫慌!编程君为大家准备了这本专门为0基础小白设计的《Python入门书》.pdf资料!让你快速上手编程,干货满满~。限时扫码,免费领取!
三、计算资金曲线
在算出交易信号之后,我们需要根据信号计算每天的资金曲线变动:
这里的strategy代表我们期初的1块钱,在按照唐奇安通道策略进行交易后的资金曲线。# 计算资金曲线df['position'] = df['signal'].shift()df['position'] = df['position'].fillna(value=0)df['daily_ret'] = df['Close'].pct_change()df['strategy'] = (df['daily_ret'] * df['position'] + 1).cumprod()
四、画图
最后我们把量化策略的收益情况与股价的走势进行可视化,并且标记出买入、卖出的点位:
# 绘制资金曲线和价格图,并标记买入卖出点plt.figure(figsize=(12, 6))plt.subplot(2, 1, 1)plt.title('Stock Price and Donchian Channel')plt.plot(df['Close'], label='Close Price', color='blue')plt.plot(df['20d_high'], label='20-day High', linestyle='--', color='g')plt.plot(df['10d_low'], label='10-day Low', linestyle='--', color='r')# 标记买入点condition1 = (df['position']==1) & (df['position'].shift()==0)buying_points = df[condition1]plt.plot(buying_points.index, df['Close'][buying_points.index], 'v', markersize=10, color='r', label='Buy Signal')# 标记卖出点condition2 = (df['position']==0) & (df['position'].shift()==1)selling_points = df[condition2]plt.plot(selling_points.index, df['Close'][selling_points.index], '^', markersize=10, color='g', label='Sell Signal')plt.legend()plt.subplot(2, 1, 2)plt.title('Cumulative Strategy Returns')plt.plot(df['strategy'], label='Strategy Equity', color='black')plt.legend()plt.tight_layout()plt.show()print(df.tail())
我们用红色的向下三角表示买入信号,用绿色的向上三角表示卖出信号。最终的代码结果如下:
图片
上图表示创业板指数每日收盘价与唐奇安通道,我们用三角形标记出买卖点位。下图表示我们的量化策略得到的资金曲线走势,可以看出从2020年至今,策略收益为26.6%:
图片
虽然这个收益率不算很爆炸,但是我们可以对策略进行进一步优化。比如可以寻找表现更好的其他参数,或者在原始的买入、卖出信号上添加过滤条件……这就留给各位小伙伴们自己探索啦,感兴趣的朋友可以在我们的公众号后台索取代码和数据~通过Python可以快速实现量化策略,并对交易信号和资金曲线进行可视化分析。需要注意的是,虽然量化策略能够基于历史数据给出指引,但市场变化无常,量化策略运用于实际交易时必须结合风险管理和实时市场情况进行动态调整。此外,模拟交易的结果不能代表未来的表现,因此在应用到实际交易之前,应该进行充分的测试和风险评估。编程君为大家准备了Python思维导图,搭建知识网络,快速梳理知识点,限时0元,免费领取!
编程君建了一个专门的Python学习资源分享群!汇集众多编程人!群内除了有Python学习、技能提升、工作各个环节的指导交流外,还会定期分享行业资讯、实用工具资料包、书籍推荐、大咖分享会等等信息,Python干货信息不断发送!
本站仅提供存储服务按月股票配资,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。