《CTA策略》课程中与现版本2.6.0不符的地方
课时2-策略模板
问题(同样的问题还出现在了以下课时:课时24):
在课程03:07附近提到打开cta_strategy目录不在vnpy目录下
解决方案:
大家可以在vnpy的同级目录下寻找。一般在安装veighna_studio的目录下,如路径“C:\veighna_studio\Lib\site-packages\"
课时3-策略开发
问题:
在05:39附近,由于2.6.0版本将cta_strategy等上层应用剥离出去了,因此以前版本的导入cta_strategy的方式有误:
from vnpa.app.cta_strategy import CtaTemplate
解决方案:
from vnpy_ctastrategy import CtaTemplate
课时4-历史数据回测
问题:
在课程02:50附近,由于2.6.0版本中增加了其他的数据获取API,因此增加了datafeed全局字段,大家在升级或者初次使用VNStation时需要根据具体情况自行配置。
解决方案:
具体如何配置请参考官方论坛https://www.vnpy.com/forum/topic/7705-vn-pyfa-bu-v2-6-0-gao-xing-neng-jin-rong-shu-ju-ku
课时8-K线的自定义合成
问题:
2.6.0版本对部分源代码进行了重构,其中就包括了该课程中的BarGenerator,所以课程具体的源代码与课程中展示的不完全一致。
解决方案:
2.6.0版本对BarGenerator进行了重构,对于update_tick函数做了一些改进,同时对于update_bar函数更新分钟数据和小时数据的逻辑分离成了两个独立的函数,分别为update_bar_minute_window函数和update_bar_hour_window函数,虽然与课程中展示的不完全一致,但是功能都是一致的。因此如果大家想要按照课程中所展示的代码自定义一个可以生成类似7分钟这种分钟数据,应该对update_bar_minute_window函数进行复制后再做修改。可以尝试修改如下:
def update_bar_minute_window(self, bar: BarData) -> None:
""""""
# If not inited, create window bar object
if not self.window_bar:
dt = bar.datetime.replace(second=0, microsecond=0)
self.window_bar = BarData(
symbol=bar.symbol,
exchange=bar.exchange,
datetime=dt,
gateway_name=bar.gateway_name,
open_price=bar.open_price,
high_price=bar.high_price,
low_price=bar.low_price
)
# Otherwise, update high/low price into window bar
else:
self.window_bar.high_price = max(
self.window_bar.high_price,
bar.high_price
)
self.window_bar.low_price = min(
self.window_bar.low_price,
bar.low_price
)
# Update close price/volume/turnover into window bar
self.window_bar.close_price = bar.close_price
self.window_bar.volume += bar.volume
self.window_bar.turnover += bar.turnover
self.window_bar.open_interest = bar.open_interest
# Check if window bar completed
if self.window_bar.datetime.minute != bar.datetime.minute:
self.interval_count += 1
if not (bar.datetime.minute + 1) % self.window:
self.on_window_bar(self.window_bar)
self.window_bar = None
self.interval_count = 0
课时14-回测工作流程
提示1:
在03:59附近展示的目录结构为:
2.6.0版本的目录结构为:
因此,应该打开backtesting_demo.ipynb文件。
提示2:
在05:06附近,backtesting_demo.ipynb文件第二个单元格输入的vt_symbol与课程不一致,课程中为IF88.CFFEX, 现在为IF888.CFFEX,因此若出现无法加载历史数据的情况请检查该合约数据是否下载过。
问题1:
11:46左右,同课时2问题,cta_strategy目录不在vnpy目录下,而是在vnpy同级目录下。
课时20-固定止损
问题(同样有导入模块路径错误的课时还有:课时21,22,23,29,44, 49, 51):
boll_demo_Strategy_20.py代码中模块导入路径错误
解决方案:
from vnpy_ctastrategy import .....
提示:
在课程14:10左右说改变代码后需要重启VNtrader,在现版本不需要了,只需要点击CTA回测界面底下的策略重载按钮即可
课时27-曲线绘制
提示:
课程中展示的代码show_chart在现版本中已经通过plotly重构了。
课时36-遗传算法(下)
提示:
课程08:20左右展示的遗传算法的代码在2.6.0版本上做了修改,主体代码在vnpy\trader\optimize\run_ga_optimization()
下。