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

应该主要是symbol,数据库识别的symbol,RB9999.SHFE
但是模拟交易启用的策略只能用"rb2105.SHFE"才能运行,
~/.vntrader/cta_strategy_setting.json

1.改成jqdata识别的RB9999.SHFE,报错
"test": {
"vt_symbol": "RB9999.SHFE",
2021-02-06 12:16:36,805 INFO: test: 行情订阅失败,找不到合约RB9999.SHFE
2.改成vnpy识别的,可以正常运行,bar滚动无打印
"test": {
. "vt_symbol": "rb2105.SHFE",

xiaohe wrote:

你是在am初始化之后打印bar,然后你的am的size又是500,不知道你历史数据是否超过500天足够am初始化,可以把print语句加到cancel_all下面试试看是否有bar传进来。
而且你的日线逻辑里需要对self.window进行相对处理才行

多谢,按下面两步骤调试了下,回测是有打印结果也符合,目前的问题是模拟盘交易的时候没有执行到,数据用的symbol是RB9999.SHFE(jqdata.py拿数据会内部映射RB9999.XSGE,但是CTP的交易用的symbol当前需要映射到rb2105.SHFE,get_dominant_future('RB','2021-02-05')可以达到这个效果从而自动根据日期改symbol在模拟盘下单/换月,但是还不知道在ctp的那个逻辑里改?

1)bar改成500以后,
2)在database提供分钟线后(按代码逻辑会自己合成日线),
self.load_bar(500,use_database=True,interval=Interval.DAILY),

  • 目的是用跟住主力日线交易
  • 下载日线数据RB9999到database
  • 检查database确实更新了2月6号为止
  • 运行交易策略test,使用no-ui模式方便调试,貌似没有执行到on_daily_bar的位置(print bar没有出来)
  • 日线utility逻辑已添加,分钟线的回测有正常打印。启动交易确没有打印,初始化的配置有错误?
    VNPY/vnpy-2.1.8/examples/no_ui$ python run.py
    启动CTA策略守护父进程
    启动子进程
    子进程启动成功
    2021-02-06 00:49:13,048 INFO: 主引擎创建成功
    2021-02-06 00:49:13,049 INFO: 注册日志事件监听
    2021-02-06 00:49:13,051 INFO: 连接CTP接口
    2021-02-06 00:49:13,068 INFO: 行情服务器连接成功
    2021-02-06 00:49:13,072 INFO: 行情服务器登录成功
    2021-02-06 00:49:13,073 INFO: 交易服务器连接成功
    2021-02-06 00:49:13,086 INFO: 交易服务器授权验证成功
    2021-02-06 00:49:13,093 INFO: 交易服务器登录成功
    2021-02-06 00:49:13,099 INFO: 结算信息确认成功
    2021-02-06 00:49:13,132 INFO: 合约信息查询成功
    auth success
    2021-02-06 00:49:23,404 INFO: jqdata数据接口初始化成功
    2021-02-06 00:49:23,433 INFO: test: -1
    2021-02-06 00:49:23,434 INFO: test: -2
    2021-02-06 00:49:23,437 INFO: CTA策略引擎初始化成功
    2021-02-06 00:49:23,442 INFO: CTA策略初始化完成
    2021-02-06 00:49:23,444 INFO: test开始执行初始化
    2021-02-06 00:49:23,446 INFO: test: 策略初始化
    2021-02-06 00:49:23,450 INFO: test初始化完成

code:
def init(self, cta_engine, strategy_name, vt_symbol, setting):
""""""
super().init(cta_engine, strategy_name, vt_symbol, setting)
self.bg = BarGenerator(self.on_bar,1,self.on_daily_bar, Interval.DAILY)
self.write_log("-1")
self.am = ArrayManager(size=500)
self.write_log("-2")
def on_init(self):
"""
Callback when strategy is inited.
"""
self.write_log("策略初始化")
self.load_bar(10,use_database=True,interval=Interval.DAILY)
log:

def on_daily_bar(self, bar: BarData):
    """"""
    self.cancel_all()

    am = self.am
    am.update_bar(bar)
    if not am.inited:
        return
    print(bar)

问题已解决,利用定时器更新即可

目前看的例子datarecorder是从ctp去拿行情,这样就没有办法匹配到主连历史,打算用load_bar:用use_database,行情跟随jqdata,可以保存历史数据,有没这方面的样例

多谢,犯了低级错误,需要在安装目录里改就好了,因为代码都从系统库导入
~/anaconda_python37/lib/python3.7/site-packages/vnpy

只要能输出都行,不论在log文件还是终端,目前两种都不行,
问题是print也没在终端输出
print在回测函数可以打印到终端,但是在策略def on_bar(self, bar: BarData):添加的打印也显示不了,每日数据的处理调试很必要的

self.bg.update_bar(bar)
print(bar.datetime)
self.write_log(bar.datetime)

环境:
ubuntu20.04
anaconda
python3.7.3
64bit
版本:2.1.8
期望效果:在策略代码中:on_bar: print(bar.datetime)或者self.write_log(bar.datetime)能够在回测后log或者console显示
测试步骤:
1>配置中设置debug等级改10无效果;改0无效果
2>print(bar.datetime)无效果
3>self.write_log(bar.datetime)无效果
4>~/.vntrader/log和终端均没有看到bar.datetime显示

代码:
1>策略部分:加打印
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""

    self.bg.update_bar(bar)
    print(bar.datetime)
    self.write_log(bar.datetime)

2>回测部分
from vnpy.app.cta_strategy.backtesting import BacktestingEngine, OptimizationSetting
from vnpy.app.cta_strategy.strategies.boll_channel_strategy import (
BollChannelStrategy,
)
from datetime import datetime

engine = BacktestingEngine()
engine.set_parameters(
vt_symbol="au888.SHFE",
interval="1m",
start=datetime(2020, 12, 1),
end=datetime(2021, 2, 1),
rate=0.3/10000,
slippage=0.2,
size=300,
pricetick=0.2,
capital=1_000_000,
)
engine.add_strategy(BollChannelStrategy, {})
engine.load_data()
engine.run_backtesting()
df = engine.calculate_result()
engine.calculate_statistics()

显示log:
2021-01-07 17:48:52.365784 开始加载历史数据
2021-01-07 17:48:52.365843 加载进度:# [0%]
2021-01-07 17:48:52.549528 加载进度:# [10%]
2021-01-07 17:48:52.753696 加载进度:## [19%]
2021-01-07 17:48:52.949280 加载进度:### [29%]
2021-01-07 17:48:53.123592 加载进度:#### [39%]
2021-01-07 17:48:53.316483 加载进度:##### [48%]
2021-01-07 17:48:53.412940 加载进度:###### [58%]
2021-01-07 17:48:53.413635 加载进度:####### [68%]
2021-01-07 17:48:53.414179 加载进度:######## [77%]
2021-01-07 17:48:53.414713 加载进度:######### [87%]
2021-01-07 17:48:53.415245 加载进度:########## [97%]
2021-01-07 17:48:53.415777 历史数据加载完成,数据量:13365
2021-01-07 17:48:53.431238 策略初始化完成
2021-01-07 17:48:53.431283 开始回放历史数据
2021-01-07 17:48:53.437451 回放进度:= [0%]
2021-01-07 17:48:53.451508 回放进度:== [10%]
2021-01-07 17:48:53.461197 回放进度:=== [20%]
2021-01-07 17:48:53.470675 回放进度:==== [30%]
2021-01-07 17:48:53.480084 回放进度:===== [40%]
2021-01-07 17:48:53.486435 回放进度:====== [50%]
2021-01-07 17:48:53.499963 回放进度:======= [60%]
2021-01-07 17:48:53.506256 回放进度:======== [70%]
2021-01-07 17:48:53.513867 回放进度:========= [80%]
2021-01-07 17:48:53.525373 回放进度:========== [90%]
2021-01-07 17:48:53.525497 回放进度:=========== [100%]
2021-01-07 17:48:53.525526 历史数据回放结束
2021-01-07 17:48:53.525627 开始计算逐日盯市盈亏
2021-01-07 17:48:53.527545 逐日盯市盈亏计算完成
2021-01-07 17:48:53.527567 开始计算策略统计指标
2021-01-07 17:48:53.557790 ------------------------------
2021-01-07 17:48:53.557828 首个交易日: 2020-12-11
2021-01-07 17:48:53.557837 最后交易日: 2021-01-05
2021-01-07 17:48:53.557843 总交易日: 20
2021-01-07 17:48:53.557849 盈利交易日: 8
2021-01-07 17:48:53.557857 亏损交易日: 12
2021-01-07 17:48:53.557874 起始资金: 1,000,000.00
2021-01-07 17:48:53.557889 结束资金: 998,066.50
2021-01-07 17:48:53.557901 总收益率: -0.19%
2021-01-07 17:48:53.557911 年化收益: -2.32%
2021-01-07 17:48:53.557918 最大回撤: -4,401.36
2021-01-07 17:48:53.557932 百分比最大回撤: -0.44%
2021-01-07 17:48:53.557942 最长回撤天数: 9
2021-01-07 17:48:53.557953 总盈亏: -1,933.50
2021-01-07 17:48:53.557961 总手续费: 67.50
2021-01-07 17:48:53.557968 总滑点: 1,140.00
2021-01-07 17:48:53.557974 总成交金额: 2,250,054.00
2021-01-07 17:48:53.557983 总成交笔数: 19
2021-01-07 17:48:53.557992 日均盈亏: -96.68
2021-01-07 17:48:53.558004 日均手续费: 3.38
2021-01-07 17:48:53.558015 日均滑点: 57.00
2021-01-07 17:48:53.558023 日均成交金额: 112,502.70
2021-01-07 17:48:53.558031 日均成交笔数: 0.95
2021-01-07 17:48:53.558037 日均收益率: -0.01%
2021-01-07 17:48:53.558044 收益标准差: 0.10%
2021-01-07 17:48:53.558056 Sharpe Ratio: -1.65
2021-01-07 17:48:53.558064 收益回撤比: -0.44
2021-01-07 17:48:53.558600 策略统计指标计算完成

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

沪公网安备 31011502017034号

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