VeighNa量化社区
你的开源社区量化交易平台
wayking's Avatar
Member
离线
20 帖子
声望: 2

wayking wrote:

description

可以录制,但是会报个错误,这个要怎么去掉?

已经解决.找到database_mongo.py
修改
connect(
db=database,
host=host,
port=port,
username=username,
password=password,
authentication_source=authentication_source,
)

connect(
db=database,
host=host,
port=port,
username=username,
password=password,
authentication_source=authentication_source,
connect=False
)

mengrong wrote:

请问如果想启动bar 与tick数据同时录制,这个方法下可以如何实现呢,sqlite 只能单进程,那么切换recordmode同时录制不行。

请问如何不默认存储到 默认用户文件夹的.db,而可以存储到自定义的文件夹,如何在脚本部分更改呢?

我用的是mongodb,可以同时录制bar和tick
修改def init(self, main_engine, event_engine, record_modes=[RecordMode.BAR]):
为def init(self, main_engine, event_engine, record_modes=[RecordMode.BAR,RecordMode.TICK]):

description

可以录制,但是会报个错误,这个要怎么去掉?

修正一下楼主的数据:
symbols={
"SHFE": ["AG","AL","AU","BU","CU","FU","HC","LU","NI","NR","PB","RB","RU","SC","SN","SP","SS","WR","ZN"],
"DCE": ["A","B","BB","C","CS","EG","EB","FB","I","J","JD","JM","L","LH","M","P","PG","PP","RR","V","Y"],
"CZCE": ["AP","CF","CJ","CY","FG","JR","LR","MA","OI","PF","PM","RI","RM","RS","SA","SF","SM","SR","TA","UR","WH","ZC"],
"CFFEX": ["IC","IF","IH","T","TF","TS"]
}
增加了生猪-LH,短纤-PF
czce的CL应为为CJ红枣
同时按字母顺序排列了下,方便以后增删查找

https://github.com/ruihuowayking/vnpy/blob/master/quickfix-1.15.1-cp37-cp37m-linux_x86_64.whl

Centos8 python3.7.6,编译好的quickfix whl,大家下载直接安装就行

安装完后
去掉requirements.txt 里的quickfix

mengrong wrote:

请问如果想启动bar 与tick数据同时录制,这个方法下可以如何实现呢,sqlite 只能单进程,那么切换recordmode同时录制不行。

请问如何不默认存储到 默认用户文件夹的.db,而可以存储到自定义的文件夹,如何在脚本部分更改呢?

我也正在找这个办法,你解决了吗?

谢谢楼主分享
vn2.5.4已经可以用了,分钟,小时.日线都可用了,我看实现里面没有tick级数据,如何实现?
我仿照rqdata里的query_tuck_history,写了好像获取数据为0,有成功的吗?

雲信哥哥 wrote:

好的,主要就是要在 futu_gaateway.py 文件裏實現一個 query_history 方法,原理我就不多說啦,自己看下應該也很好理解的,具體代碼如下:

    def exchange_bond(self, exchange: Exchange):
        if exchange.value == "SEHK":
            return "HK"
        elif exchange.value == "SMART":
            return "US"
        else:
            return exchange.value

    def query_history(self, req: HistoryRequest):
        """"""
        symbol = req.symbol
        exchange = req.exchange
        interval = req.interval
        start = req.start.strftime('%Y-%m-%d')
        end = req.end.strftime('%Y-%m-%d')
        tcode = self.exchange_bond(exchange) + '.' + f'{symbol}'
        #tcode = 'HK.09988'
        ret, quotedata, page_req_key = self.quote_ctx.request_history_kline(
            tcode, start=start, end=end)

        data: List[BarData] = []

        if quotedata is not None:
            for ix, row in quotedata.iterrows():
                #date = datetime.strptime(row.time_key, '%Y-%m-%d %H:%M:%S')
                bar = BarData(
                    symbol=symbol,
                    exchange=exchange,
                    interval=interval,
                    datetime=row.time_key,
                    open_price=row.open,
                    high_price=row.high,
                    low_price=row.low,
                    close_price=row.close,
                    volume=row.volume,
                    gateway_name="FUTU"
                )
                print(bar)
                data.append(bar)
        return data

        return data

谢谢,按照方法去做,还是无法下载行情,这里还是使用的RQ的接口去下的,并没有使用gateway里的query_history.

description

希望能获得帮助.

xiaohe wrote:

记录行情就只有datarecorder模块的,别的数据要导入那就将数据根据数据库要求处理过后再用data_manager导入了
https://www.vnpy.com/forum/topic/1979-vn-pyshe-qu-jing-xuan-6-zuo-jiao-yi-ni-xu-yao-xuan-hao-shu-ju-ku
https://www.vnpy.com/forum/topic/3110-vn-pyfa-bu-v2-1-1-quan-gong-neng-shu-ju-guan-li

谢谢,我在vnpy上下了一个单独的行情记录软件,这个软件的数据怎么导入,因为我从mdshare上下的历史数据也是跟这个软件收集的是一样的.

description

xiaohe wrote:

vnpy的datarecorder模块直接就载入到数据库中了https://www.vnpy.com/docs/cn/data_recoder.html

我下载的collectctp的历史数据怎么导入呢?按照之前论坛里的方法,这些数据都是没有表头的,无法导入.

我使用vnpy的collectctp记录每日行情数据的,vnpy现在使用的是mongodb数据库,在数据管理里选择导入数据出错,应该是记录的数据没有表头,这个有没办法批量处理?

刚接触PYTHON,经过测试可用,如有不妥欢迎指正。
新增加了刷新策略按钮,按下后刷新策略文件并重新加载。

description

修改以下文件:
1:添加按钮和方法
vnpy\app\cta_strategy\ui\widget.py
在add_button.clicked.connect(self.add_strategy) 下方添加以下两行

description

reload_button = QtWidgets.QPushButton("刷新策略")
reload_button.clicked.connect(self.reload_class)

在hbox1.addWidget(add_button)下方添加以下一行

description

hbox1.addWidget(reload_button)

在 def update_class_combo(self): 上方添加

description

    def reload_class(self):
        self.cta_engine.load_strategy_class()
        self.class_combo.clear()
        self.update_class_combo()

2:修改加载逻辑
vnpy\app\cta_strategy\engine.py
修改load_strategy_class方法

description

在path1 = Path(file).parent.joinpath("strategies")上方添加

        for loadClass in self.classes:
            del loadClass
        self.classes.clear()

修改load_strategy_class_from_module方法

description

在module = importlib.import_module(module_name)的下方添加

module = importlib.reload(module)

这样可以在不重启vntrader的情况下,修改策略文件,并重新加载,方便调试。

description

同求,加了个按钮,逻辑代码也写了,点击init_engine(), 不知道啥原因,就是没有刷新策略列表里的数据.

xiaohe wrote:

template里buy函数默认是offset为None,自己在算法里写offset方向就行了吧
description
谢谢指点,刚接触vnpy,已经处理好了.

description

description

请问下是改哪里?

打开软件连接ctp后,行情里会显示一些合约,哪些合约会显示,保存在哪里?能否配置?

还有,加载的合约里价格有些显示有问题,在哪里修改?

description

xiaohe wrote:

在run.py里去掉ctpgateway前的注释应该就行了吧

谢谢,已经注释掉了,并且重新编译生成了so文件,linux下已经可用.

新问题是MACOS下无法使用CTP?

description

在~/.vntrader目录下也只有这几个文件

description

怎么获取配置文件的JSON文件?

另外QQ群已经连申请入群不了,拒绝申请入群,怎么加群?

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

沪公网安备 31011502017034号

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