VeighNa量化社区
你的开源社区量化交易平台
Member
离线
116 帖子
声望: 2

我看了。
我的理解是在策略的init阶段会自动载入历史数据。但我还有个问题,就是load_bar载入的数据和arraymanager载入的数据有什么关系呢?技术指标的计算都由arraymanager缓存的数据来提供的,load_bar的数据有什么作用?

在实盘中策略使用到的参数需要大量的数据准备,比方说ATR,我需要100根k线的平均值。但是我用到是小时线,策略每天都要重新启动,重新初始化,这样我永远也无法准备到100根k线的数据。怎么样能把历史数据当成数据准备储存下来在实盘中使用呢?

我想做动力煤和铁矿石的模拟,请问simnow的账号能连接到郑商所和大商所吗?我在合约查询里不能查到zc或i的合约。
如果模拟账号不行那实盘行不行呢?

我想在策略中创建一个日志,记录交易信息,请问怎么实现?

我想在每个策略里都记录所有的交易信息,放在日志里,这个怎么实现?

description
从中午12点20就开始连不上服务器,重启vn trader之后还是连不上,这是什么原因?

持仓的净代表什么意思呢

在trader.constant这个文件里面看到direction的定义:
description
我不清楚 NET = "净" 这个赋值的含义是什么。
如果direction == NET, 那么怎么计算这手交易的资金使用情况?
还是 trade.price*trade.volume吗?此时volume在空的时候为负吗?

哦,知道了

现在在simnow上跑cu1909的模拟。早上的发单让我觉得很奇怪,这是一手平多头的委托:

  1. 首先是在vn trader这个界面上的委托栏
    description
    价格在49410.这个价格是错误的,因为策略里的所有委托我都是用的bar.close_price,而最近今天都没有出现这么高的价格。

  2. 然后仍然是vn trader界面,看成交栏
    description
    这个46970的价格是合理的。

  3. 我用jupyter 查过了order 和 trade
    description

description
这里可以看到和 vn trader界面上显示的是一致的。

  1. 但是,在CTA策略这个界面上可以显示停止委托单,这里的价格是正常的价格:
    description
    我仔细查过9点11分和9点10分的价格,46960确实是9点10分的收盘价,所以这个单是符合策略逻辑的。而且似乎成交也是按照这个价格成交的。

我现在的问题是为什么vn trader上显示的和CTA策略界面显示不一样?为什么jupyter上查到的委托价格也是不正确的?到底是哪个价格出了问题?

这个load_bar()最少也要载入一个交易日的历史数据:就是填入0。回测的时候问题是不大,问题是如果模拟或者实盘的时候是否也要等一个交易日才能启动交易呢?如果我需要马上进行交易怎么处理呢?

我在on_init下面写的self.load_bar(0),而且我试过,这个self.load_bar()里面写n,成交时间就往后移n+1天。但是我明明用的是分钟线啊。

我在做回测的时候发现,所有的的交易都从导入的历史数据的第二天开始。我用的是分钟线。这是我的代码:
def on_bar(self, bar: BarData):
self.cancel_all()

    am = self.am
    am.update_bar(bar)

    self.buy(bar.close_price, 1)

查看交易记录都是从第二天开始的,然后后面每分钟都正常买入了。为什么第一天不能成功开仓呢?

我想在on_bar里面输出一下策略里计算的各种数据,以此检查策略是不是按照我的想法在运转。主要是在回测模式里,可以写一个类似output这样的函数吗?这个有办法实现吗?

问题找到了,平仓的时候一定要下停止单才能够成交

我刚用VNPY,写了一个非常简单的策略来作为测试:
就是在指定时间买入一手,然后在指定时间卖出平仓。
策略如下:
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""

    self.cancel_all()

    am = self.am
    am.update_bar(bar)


    if bar.datetime.year == 2019 and bar.datetime.month == 5 and bar.datetime.day == 8 and bar.datetime.hour == 22 and bar.datetime.minute == 20:
        self.short(bar.close_price+0.001, 1)


    if bar.datetime.year == 2019 and bar.datetime.month == 5 and bar.datetime.day == 8 and bar.datetime.hour == 22 and bar.datetime.minute == 39:
        self.cover(bar.close_price-0.001, 1)


    self.put_event()

但是在回测时只看到了开仓的操作,好像后面就再没有平仓了。
2019-07-05 17:31:53.901897 开始加载历史数据
2019-07-05 17:31:53.947744 加载进度:##### [54%]
2019-07-05 17:31:54.046480 加载进度:########## [100%]
2019-07-05 17:31:54.046480 历史数据加载完成,数据量:3366
2019-07-05 17:31:54.046480 策略初始化完成
2019-07-05 17:31:54.046480 开始回放历史数据
2019-07-05 17:31:54.069419 历史数据回放结束
2019-07-05 17:31:54.069419 开始计算逐日盯市盈亏
2019-07-05 17:31:54.071414 逐日盯市盈亏计算完成
2019-07-05 17:31:54.071414 开始计算策略统计指标
2019-07-05 17:31:54.077398 ------------------------------
2019-07-05 17:31:54.077398 首个交易日: 2019-05-08
2019-07-05 17:31:54.082383 最后交易日: 2019-07-03
2019-07-05 17:31:54.082383 总交易日: 48
2019-07-05 17:31:54.082383 盈利交易日: 20
2019-07-05 17:31:54.082383 亏损交易日: 18
2019-07-05 17:31:54.082383 起始资金: 1,000,000.00
2019-07-05 17:31:54.082383 结束资金: 999,999.80
2019-07-05 17:31:54.082383 总收益率: -0.00%
2019-07-05 17:31:54.082383 年化收益: -0.00%
2019-07-05 17:31:54.082383 最大回撤: -0.01
2019-07-05 17:31:54.082383 百分比最大回撤: -0.00%
2019-07-05 17:31:54.082383 总盈亏: -0.20
2019-07-05 17:31:54.082383 总手续费: 0.00
2019-07-05 17:31:54.082383 总滑点: 0.20
2019-07-05 17:31:54.082383 总成交金额: 1.12
2019-07-05 17:31:54.082383 总成交笔数: 1
2019-07-05 17:31:54.082383 日均盈亏: -0.00
2019-07-05 17:31:54.082383 日均手续费: 0.00
2019-07-05 17:31:54.082383 日均滑点: 0.00
2019-07-05 17:31:54.082383 日均成交金额: 0.02
2019-07-05 17:31:54.082383 日均成交笔数: 0.020833333333333332
2019-07-05 17:31:54.082383 日均收益率: 0.00%
2019-07-05 17:31:54.082383 收益标准差: 0.00%
2019-07-05 17:31:54.082383 Sharpe Ratio: 0.49
2019-07-05 17:31:54.082383 收益回撤比: -13.93

想请教一下这是什么问题?

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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