在上一章节 MACD金死叉中结束了如何根据 MACD 金死叉计算交易信号。
目录
本次将根据交易信号,模拟交易。更加历史数据对MACD金死叉交易策略进行回测,看一下收益如何。
下面进行一个简单的实现:
- 定义一个资金池
- 当出现买入信号且无仓位时,全仓买入。买入价为第二日收盘价(其实以第二日开盘价计算比较合理)。
- 当出现卖出信号且有仓位时,清仓。卖出价为第二日收盘价(同样,也是以第二日开盘价更合理)
- 以下程序未计算印花税等交易费用。
- 对金额进行了取整,方便展示。
defcalculate_profit(prices, signals):
capital =100000# 初始资金000001
shares =0# 持有股票数量
position =0# 0表示空仓,1表示持仓
balance =0
profit =[]
profit.append(capital)for i,singal in signals:if singal =='buy'and position ==0:
shares =int(capital / prices[i+1]/100)
balance =int(capital -(shares*prices[i+1]*100))
position =1elif singal =='sell'and position ==1:
capital =int(shares *100* prices[i+1]+ balance)
shares =0
position =0
profit.append(capital)return profit
对MACD 和收益进行图形化输出
plt.figure(figsize=(12,8))
plt.subplot(3,1,1)
plt.plot(df.index, df['close'])
plt.title('收盘价')
plt.xlabel('tdate')
plt.ylabel('Price')
plt.subplot(3,1,2)
plt.title("MACD")
plt.plot(df['DIF'],'r',linewidth=1.0,label='DIF')
plt.plot(df['DEA'],'y',linewidth=1.0,label='DEA')
plt.legend()
plt.grid()
plt.subplot(3,1,3)
plt.title("收益曲线")
plt.plot(profits,'r',linewidth=1.0,label='Profit')
plt.bar(range(len(profits)),profits)
plt.ylabel('RMB')
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()
以下是不同股票的策略回测结果:
平安银行(000001)
全柴动力(600218)
中航高科(600862)
脚本说明文档(DevChat 生成)
再次展示一下 AI 的力量。
MACD 分析脚本
这是一个用于从 TDengine 数据库查询股票收盘价,并进行 MACD 分析的 Python 脚本示例。脚本会绘制收盘价曲线、MACD 指标曲线以及收益曲线图。
安装依赖库
确保您已安装以下依赖库:
requests
用于发送 RESTful 请求json
用于解析 JSON 响应matplotlib
用于绘制图形pandas
用于处理数据
您可以使用
pip
在命令行中安装它们:
pip install requests matplotlib pandas
参数配置
在开始之前,请根据您的实际情况设置以下参数:
host
:TDengine 数据库的主机名或 IP 地址port
:TDengine 数据库的端口号username
:TDengine 数据库的用户名password
:TDengine 数据库的密码db_name
:数据库名称table_name
:数据表名称fcode
:股票代码
查询与解析数据
首先,脚本通过 RESTful 请求从 TDengine 数据库中查询收盘价数据。然后,将查询结果解析为列表,并将时间戳和收盘价分别存储在
timestamps
和
close_prices
数组中。
计算 MACD 指标
接下来,使用
calculate_macd
函数计算 MACD 和信号线的值。该函数使用指定的周期参数计算指数移动平均线(EMA),然后计算 MACD 和信号线。同时,还计算了 MACD 的柱状图(MACD-Histogram)。
判断金叉和死叉
使用
check_macd
函数判断金叉和死叉的位置。该函数遍历 MACD 和信号线数组,找到金叉和死叉的位置,并将其存储在
crossing_points
数组中。
计算收益
使用
calculate_profit
函数计算根据金叉和死叉信号的策略产生的收益。在此示例中,初始资金为 100,000 RMB,根据买入和卖出信号以及股票价格的变化,计算并存储了每个时刻的资金余额,并返回收益数组
profits
。
绘制图形
最后,脚本使用
matplotlib
库绘制了三个子图。第一个子图展示了收盘价的曲线图,第二个子图展示了 MACD 指标的曲线图,第三个子图展示了收益曲线。
运行脚本
确保您已正确安装依赖库并设置了正确的参数后,您可以执行此 Python 脚本来运行 MACD 分析并绘制图形。
当脚本运行完毕后,将会在屏幕上打印金叉和死叉的位置以及对应的时间戳和收盘价。此外,图形窗口将显示收盘价、MACD 指标和收益曲线。
请根据您的实际需求对脚本进行自定义和调整。希望这个示例对您有所帮助!
版权归原作者 DBA大董 所有, 如有侵权,请联系我们删除。