VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 101
声望: 9

《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附近展示的目录结构为:

description

2.6.0版本的目录结构为:

description

因此,应该打开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()下。

Member
avatar
加入于:
帖子: 9
声望: 2

课时8 自定义K线

# 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

应该改为

# Check if window bar completed
self.interval_count += 1
if not self.interval_count % self.window:
    self.interval_count = 0
    self.on_window_bar(self.window_bar)
    self.window_bar = None

不然的话,K线会多算一分钟

Member
avatar
加入于:
帖子: 4622
声望: 284

vn.py是以K线开始做时间戳的,这个地方没写错

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】