vn.py官网
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 26
声望: 0
   以前在文化财经上编写过策略,就像玩积木一样,零编程基础,看懂它给的文档就能自己编写策略。学了几天vnpy,没有找到关于如何编辑策略的函数,和介绍它内部函数使用的文档。我想在vnpy上实现如下的信息,如何编写了,求大神教教!

0、如何编写账户的资金,可用资金、交易品种的手续费和保证金比例。
1、如何获取买开、卖开、买平、卖平的位置。
2、如何获取买开、卖开、买平、卖平的价格。
3、如何编写当前我持仓的多少以及方向(多还是空)
4、如何判断之前的交易信号是什么?
5、像这样的函数如何实现:VALUEWHEN(COND,X) 当COND条件成立时,取X的当前值。如COND条件不成立,则取上一次COND条件成立时X的值。
6、HHV(X,N):求X在N个周期内的最高值。
7、LLV(X,N): 求X在N个周期内的最小值。

   看了用Python的交易员编写的几个实例策略,分钟级别的策略只要在def on_bar()这个方法下实现就可以了。是不是把上面的编写成子类的自定义函数,在def on_bar()下调用就可以实现策略了?求教!!!
Member
avatar
加入于:
帖子: 2750
声望: 190

0:账户的资金,交易品种的手续费,合约乘数等不需要在策略中填写,回测过程中在图形界面设定就好了。可用资金只能在实盘中查看,但是在vn.py框架中不推荐这么做。

1-2:on_trade可以收到委托的成交通知,其中:
trade.direction:买卖方向
trade.offset:开平方向
trade.volume:成交数量
trade.price:成交价格

3-4:交易信号与持仓方向需要自己在策略中去写。

5:拿AtrRsiStrategy中第99行代码举例:

elif self.pos > 0:

    self.intra_trade_high = max(self.intra_trade_high, bar.high_price)
    # COND:最新K线的最高价高于持仓周期的最高价
    # bar.high_price = X ; self.intra_trade_high = 上一个X

    self.intra_trade_low = bar.low_price

    long_stop = self.intra_trade_high * \
        (1 - self.trailing_percent / 100)
    self.sell(long_stop, abs(self.pos), stop=True)

6-7:如想求N天最高,最低值,可直接调用am中的唐奇安指标。如想求收盘价,可参考此贴

公众号vnpy-community里有vn.py的快速入门教程。如果想进一步了解CTA策略的编写与回测,可以从《全实战进阶 - CTA策略》教程学起,公众号里同样有。

此外,vn.py和文华因为技术指标细节算法(vn.py使用的欧美通用技术指标库talib),成交记录逻辑(vn.py采用的是T+1时刻K线撮合规则 - 避免未来函数)和统计指标算法不同,回测跑出来的结果可能会存在偏差。

Member
avatar
加入于:
帖子: 26
声望: 0

ruonanhe wrote:

0:账户的资金,交易品种的手续费,合约乘数等不需要在策略中填写,回测过程中在图形界面设定就好了。可用资金只能在实盘中查看,但是在vn.py框架中不推荐这么做。

1-2:on_trade可以收到委托的成交通知,其中:
trade.direction:买卖方向
trade.offset:开平方向
trade.volume:成交数量
trade.price:成交价格

3-4:交易信号与持仓方向需要自己在策略中去写。

5:拿AtrRsiStrategy中第99行代码举例:

elif self.pos > 0:
    
    self.intra_trade_high = max(self.intra_trade_high, bar.high_price)
    # COND:最新K线的最高价高于持仓周期的最高价
    # bar.high_price = X ; self.intra_trade_high = 上一个X

    self.intra_trade_low = bar.low_price

    long_stop = self.intra_trade_high * \
        (1 - self.trailing_percent / 100)
    self.sell(long_stop, abs(self.pos), stop=True)

6-7:如想求N天最高,最低值,可直接调用am中的唐奇安指标。如想求收盘价,可参考此贴

公众号vnpy-community里有vn.py的快速入门教程。如果想进一步了解CTA策略的编写与回测,可以从《全实战进阶 - CTA策略》教程学起,公众号里同样有。

此外,vn.py和文华因为技术指标细节算法(vn.py使用的欧美通用技术指标库talib),成交记录逻辑(vn.py采用的是T+1时刻K线撮合规则 - 避免未来函数)和统计指标算法不同,回测跑出来的结果可能会存在偏差。

谢谢大神,下面的我已经实现了,但是第一个问题的获取账户资金合约情况等方法我觉得还是很有必要的,交易很大一部分的工作就是资金管理,如果VNPY不能获取这些关键信息,那策略很大一部分功能就无法实现。我看到 上弦之月 写过这些修改底层的方法,能不能整理一个傻瓜教程,教教怎么添加,修改和调用方法了,vnpy的底层源码现在还没有弄懂,不敢乱改。谢谢!

Member
avatar
加入于:
帖子: 47
声望: 3

这是开源项目,做到这种程度已经非常OK了,不可能像商业项目那样。

不过作者有小班培训,花些钱支持一下也不错哦!

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

沪公网安备 31011502017034号

【用户协议】
【隐私政策】