代码发布:简化版本的vnpy,内置期货数据和策略

今天按星球的惯例会更新系统代码

今天暂不更新Quantlab了,大家仍然使用v3.7即可:QuantlabV3.7源代码发布啦!带策略生成向导,内置多策略示例(年化20%+)供参考

今天开一个新的工程——简化版本的vnpy

图片

数据我导入数据库了,setting是配置好的,直接就可以使用了!

图片

直接运行main.py即可:

图片

主界面长这样:

图片

通过“功能”菜单打开“回测”界面:

图片

点击回测,就可以运行策略啦:

经典的DualTrust策略,年化19.81%,这是基于分钟线的操作。

图片

如下是vnpy内置带的策略,后续我会补充:

图片

仔细对比下来,vnpy有一个缺点——写策略特别麻烦,为了完美还原和兼容实盘的逻辑,就是tick是一个一个到达的逻辑,它甚至没有向量化计算指标,每个值是数据到达后现算的。

比如, 以dualthrast策略为例,要计算14天的max_high。

它其实是自己递归着算的

last_bar = self.bars[-2]

if last_bar.datetime.date() != bar.datetime.date():
    if self.day_high:
        self.day_range = self.day_high - self.day_low
        self.long_entry = bar.open_price + self.k1 * self.day_range
        self.short_entry = bar.open_price - self.k2 * self.day_range

    self.day_open = bar.open_price
    self.day_high = bar.high_price
    self.day_low = bar.low_price

    self.long_entered = False
    self.short_entered = False
else:
    self.day_high = max(self.day_high, bar.high_price)
    self.day_low = min(self.day_low, bar.low_price)

这会带出一个问题,如果结果不好,到底是策略不行,还是策略有bug。

我们应该把精力专注在策略和因子的研发上,这也就是Quantlab的初心,基本上就是低代码或者零代码写策略,只要你的因子计算没写错,信号天达没写错,策略就是对的!

由于vnpy最初是做期货实盘接口起家,后面补充的backtesting,所以backtesting只是一个补充。

vnpy双均线的核心代码:

1、on_bar的时候,计算双均线指标(在实盘的时候,数据是依次到达和合成的,确实需要每次都计算一下最新的指标)。

fast_ma = am.sma(self.fast_window, array=True)
self.fast_ma0 = fast_ma[-1]
self.fast_ma1 = fast_ma[-2]

slow_ma = am.sma(self.slow_window, array=True)
self.slow_ma0 = slow_ma[-1]
self.slow_ma1 = slow_ma[-2]

cross_over = self.fast_ma0 > self.slow_ma0 and self.fast_ma1 < self.slow_ma1
cross_below = self.fast_ma0 < self.slow_ma0 and self.fast_ma1 > self.slow_ma1

if cross_over:
    if self.pos == 0:
        self.buy(bar.close_price, 1)
    elif self.pos < 0:
        self.cover(bar.close_price, 1)
        self.buy(bar.close_price, 1)

elif cross_below:
    if self.pos == 0:
        self.short(bar.close_price, 1)
    elif self.pos > 0:
        self.sell(bar.close_price, 1)
        self.short(bar.close_price, 1)

2、传统量化框架里的写法:

if crossover(self.ma1, self.ma2):
            self.buy()
        elif crossover(self.ma2, self.ma1):
            self.sell()

当然,传统量化框架,如何直接平移到实盘,这是一个要思考的问题。

当然国内期货允许同时开多单和空单,所以先平后开的操作,不过这个小细节都好办。

历史文章:

vnpy使用初体验,从代码运行,导入csv数据,回测及参数调优

大部分做量化以及想接触量化人的目标是——每天1%。

全量ETF回测,年化25.5%,动量轮动yyds!

量化投资(投机)无外乎两个策略模板

QuantlabV3.7源代码发布啦!带策略生成向导,内置多策略示例(年化20%+)供参考

AI量化实验室——2024量化投资的星辰大海

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103458
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注