作者:老余捞鱼
原创不易,转载请标明出处及原作者。
写在前面的话:最近在研究黄金交易策略的时候,发现了一个看上去很厉害的Python库,叫 VectorBT,它就像是一个给交易策略加速的“神器”,今天就来给大家好好分享一下!
先给大家讲讲我为啥对这个 VectorBT 这么感兴趣。想象一下这样的场景:我们坐在电脑前,面对海量的交易数据,脑海中不断涌现出各种交易策略的灵感,但如何验证这些想法的可行性呢?
在过去,测试这些交易策略可谓是一项艰巨的任务。我们需要手动计算大量数据,考虑复杂的市场因素,不仅耗时耗力,而且结果往往不够精确。然而,VectorBT的出现彻底改变了这一局面,让整个过程变得异常简便!
接下来,我将为大家详细介绍如何利用VectorBT来构建和测试黄金交易策略。
一、黄金交易策略执行
第一步:工具准备
这一步就是安装我们要用的库。在代码里输入 “!pip install vectorbt numpy pandas matplotlib -q”,这里的 “-q” 能让安装过程悄悄进行,不打扰咱们。
安装好后,再把这些库都导入到代码里,就像这样:
import vectorbt as vbt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
这就好比我们准备好了一套专业的工具,接下来就能大干一场啦!
第二步:用 VectorBT 开启 ”淘金“
接下来咱们得去 “找宝藏”,也就是获取黄金的价格数据。VectorBT 很厉害,用它的 “vbt.YFData.download” 功能,一行代码就能拿到五年的黄金期货(“GC=F”)每天的收盘价、最高价、最低价和成交量数据。代码如下:
ticker = "GC=F"
price = vbt.YFData.download(ticker, period="5y", interval="1d").get("Close")
high = vbt.YFData.download(ticker, period="5y", interval="1d").get("High")
low = vbt.YFData.download(ticker, period="5y", interval="1d").get("Low")
volume = vbt.YFData.download(ticker, period="5y", interval="1d").get("Volume")
拿到数据后,把它们整理到一个 pandas 的 DataFrame 里,再把那些没用的空数据去掉,代码是 “data.dropna (inplace=True)”,这样数据就干干净净,能用来分析啦!
第三步:指标计算
接下来就是神奇的指标计算环节啦!VectorBT 自带很多计算指标的工具,比如计算相对强弱指数(RSI),用 “vbt.RSI.run” 就能轻松搞定,14 天的 RSI 一下子就算出来了。代码如下:
rsi = vbt.RSI.run(data['Close'], window=14)
data['RSI'] = rsi.rsi
要是你想要一些更个性化的指标,也没问题!像成交量变化率(VROC)和威廉指标(Williams % R),自己写个函数就能算出来。
第四步:策略制定
有了指标,就要制定交易策略啦!这可是关键的一步。我用 VectorBT 制定了四个策略:
移动平均线策略:当价格大于 50 日移动平均线时,就买入;当价格小于 50 日移动平均线时,就卖出。
RSI 策略:RSI 小于 30 的时候,说明市场超卖,是买入信号;RSI 大于 70 的时候,市场超买,就卖出。
VROC 策略:成交量变化率大于 0,就买入;小于 0,就卖出。
威廉指标策略:威廉指标小于 -80,买入;大于 -20,卖出。
第五步:回测
制定好策略后,就可以用 VectorBT 进行回测啦!用 “vbt.Portfolio.from_signals” 这个函数,把我们的策略放进去,还能设置交易手续费、滑点(就是交易时实际价格和预期价格的差距)这些真实市场会遇到的因素,代码如下:
results = {}
for strategy_name, strategy_params in strategies.items():
portfolio = vbt.Portfolio.from_signals(
close=data['Close'],
entries=strategy_params["entries"],
exits=strategy_params["exits"],
size=np.inf,
fees=0.002,
slippage=0.001,
freq='D'
)
results[strategy_name] = portfolio
回测完,就到了看结果的时候啦!
第六步:可视化与统计
VectorBT 不仅能算出各种数据,还能把结果用图表展示出来,超级直观。让我们遍历这些策略,看看随着时间推移我们的投资组合表现如何:
# 第六步:分析和比较结果
for strategy_name, portfolio in results.items():
print(f"--- {strategy_name} ---")
print("性能指标:")
print(portfolio.stats())
print("\n")
# 确保图表显示
portfolio.value().plot(title=f"{strategy_name} - 投资组合价值随时间变化")
plt.show()
portfolio.trades.plot()
plt.show()
二、黄金交易策略比较
我回测了从 2020 年 4 月到 2025 年 3 月这五年的黄金交易策略,发现不同策略表现差别很大。
威廉指标策略表现:在测试期内,该策略呈现出持续增长的态势,最终总回报率达到 18.14%。注意它在 2023 年年中市场下跌时的表现,以及在 2024 - 2025 年的强劲复苏。
VROC 策略表现:成交量变化率策略在测试期内价值损失超过一半,这表明仅基于成交量的信号可能并不可靠。平稳的下降趋势表明,无论市场状况如何,该策略始终表现不佳。
RSI 策略表现:在某些时期表现强劲,特别是在 2022 年和 2025 年初。水平的直线部分表示该策略退出市场的时期(既未达到超买也未达到超卖条件)。它抓住了几个显著的上升趋势,同时避开了一些下跌趋势。
移动平均线策略表现:该策略经历了最高的波动性,在 2021 年初大幅下跌后出现了急剧上涨。2024 - 2025 年的复苏表明,这种策略在趋势明显的市场中表现良好,但在市场盘整期会遇到困难。
三、用 VectorBT 拓展你的分析
除了上面这些基础的用法,VectorBT 还有很多高级玩法。比如:
3.1 参数优化
可以进一步优化策略的参数,找到最适合的指标数值.
strategies = {
"MA策略": {
# 买入信号:价格上穿短期移动平均线(例如,50日移动平均线)
# 卖出信号:价格下穿短期移动平均线
"entries": data['Close'] > data['Close'].rolling(window=50).mean(),
"exits": data['Close'] < data['Close'].rolling(window=50).mean()
},
"RSI策略": {
# 买入信号:RSI < 30(超卖)
# 卖出信号:RSI > 70(超买)
"entries": data['RSI'] < 30,
"exits": data['RSI'] > 70
}
}
3.2 多指标组合
将多个指标组合起来,制定更复杂的策略。
# 示例:结合RSI和威廉指标确定买卖信号
combined_entries = (data['RSI'] < 30) & (data['Williams %R'] < -80) # 两者都表明超卖
combined_exits = (data['RSI'] > 70) | (data['Williams %R'] > -20) # 任意一个表明超买
# 用组合策略进行回测
combined_portfolio = vbt.Portfolio.from_signals(
close=data['Close'],
entries=combined_entries,
exits=combined_exits,
size=np.inf,
fees=0.002,
slippage=0.001,
freq='D'
)
print("组合策略性能:")
print(combined_portfolio.stats())
3.3 实施止损
还能设置止损,控制交易风险。
# 示例:带有5%止损的威廉指标策略
portfolio_with_sl = vbt.Portfolio.from_signals(
close=data['Close'],
entries=data['Williams %R'] < -80,
exits=data['Williams %R'] > -20,
sl_stop=0.05, # 5%止损
size=np.inf,
fees=0.002,
slippage=0.001,
freq='D'
)
print("带止损策略的性能:")
print(portfolio_with_sl.stats())
3.4 源代码下载
以上的源代码请在我的Google Colab中申请下载(附言:CSDN),内附中文构建说明。
如觉得对您有所帮助,请留言或者私信向我要完整源代码,同时请我喝杯咖啡就好。
四、观点总结
VectorBT真的是一个非常强大的工具,它能让我们在交易策略的研究上更加科学、高效。通过用它回测黄金交易策略,我们能从历史数据中找到规律,发现更适合自己的交易方法。
- 多策略测试:可以同时测试多个交易策略,快速对比不同策略的优劣。
- 自动生成指标:自动生成详细的性能指标,帮助我们深入分析策略表现。
- 可视化结果:用图表展示回测结果,让数据更加直观易懂。
- 高级玩法多样:支持参数优化、指标组合和止损设置等高级功能,满足不同需求。
- 适用范围广:不管是黄金、股票,还是数字货币、外汇交易,都能使用 VectorBT 来测试策略。
感谢您阅读到最后,希望这篇文章为您带来了新的启发和实用的知识!如果觉得有帮助,请不吝点赞和分享,您的支持是我持续创作的动力。祝您投资顺利,收益长虹!如果对文中内容有任何疑问,欢迎留言,我会尽快回复!
本文内容仅限技术探讨和学习,不构成任何投资建议。