谢谢回复
"在vnpy/trader/setting种设置database路径可解决"
上面是一位网友的方案,我试过还是不行,现在.vntrader下面的database.db中有IF888.CFFEX日频率数据,IF1911.CFFEX和IF1912.CFFEX的分钟频率数据,而且我跑CTA策略的回测例子是可以跑通的,数据可以加载,回测结果和图形都有。为啥spread-trading就不行?
/opt/anaconda3/envs/vnpy/lib/python3.7/site-packages
mac操作系统,装在了一个叫vnpy的虚拟环境中,上面的地址可以看到vnpy等包的文件夹。
https://github.com/vnpy/vnpy/blob/master/examples/spread_backtesting/backtesting.ipynb
我按照上面的步骤,
rom vnpy_spreadtrading.backtesting import BacktestingEngine
from vnpy_spreadtrading.strategies.statistical_arbitrage_strategy import (StatisticalArbitrageStrategy)
from vnpy_spreadtrading.base import LegData, SpreadData
from datetime import datetime
spread = SpreadData(
name="IF-Spread",
legs=[LegData("IF1911.CFFEX"), LegData("IF1912.CFFEX")],
price_multipliers={"IF1911.CFFEX": 1, "IF1912.CFFEX": -1},
trading_multipliers={"IF1911.CFFEX": 1, "IF1912.CFFEX": -1},
active_symbol="IF1911.CFFEX",
inverse_contracts={"IF1911.CFFEX": False, "IF1912.CFFEX": False},
min_volume=1
)
...
其中 IF1911.CFFEX和IF1912.CFFEX提前用data_manager.import_data_from_csv()把本地csv数据导入到.vntrader下面的database.db中,数据为分钟频率的open, high, low, close, volume, open_interest.
但 engine.load_data() 后反馈“历史数据加载完成,数据量:0”。
请问如何合成价差数据?或者说怎么做才能用命令回测spread_trading, 多谢.
在R的代码如下
Sys.setenv(RETICULATE_PYTHON="C:\vnstudio\python.exe");
library("reticulate");
vnpy=reticulate::import("vnpy",as=NULL,convert=TRUE,delay_load=FALSE);
init_cli_trading=vnpy$app$script_trader$init_cli_trading;
CtpGateway=vnpy$gateway$ctp$CtpGateway;
engine=init_cli_trading(list(CtpGateway));
setting=list(
"用户名"='xxxx',
"密码"='xxxx',
"经纪商代码"='9999',
"交易服务器"='tcp://180.168.146.187:10101',
"行情服务器"='tcp://180.168.146.187:10111',
"产品名称"='simnow_client_test',
"授权编码"='0000000000000000',
"产品信息"=''
)
engine$connect_gateway(setting,"CTP");
报错为:
Error in py_call_impl(callable,dots$args,dots$keywords): UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte
在R中把encoding改为 UTF-8没有帮助
请高手指惑,谢谢。