模拟交易读取csv文件报错?

datasource
csv
标签: #<Tag:0x00007fcf6184d7e8> #<Tag:0x00007fcf6184d6a8>

(大胡子) #1

在模拟交易中,我的策略需要读取事先保存好的csv文件数据,报错如下:no such file or directory
请问这是什么原因呢?怎么解决?
我在回测中读取csv文件是没有问题的。


(小Q) #2

你好,是的,模拟交易运行时,读取其他格式的数据,例如csv,h5等格式文件可能会报错。
目前你可以采取这种方式:将数据存为DataSource,通过DataSource id 来获取数据,这种方式是可行的。
DataSource的具体使用可以看看下列简单例子:

克隆策略

保存数据为DataSource

In [1]:
def foo1():
    start_date = '2018-02-01'
    end_date = '2018-02-28'
    ins = ['000002.SZA']
    fields = ['close','open','high','low']
    df = D.history_data(ins, start_date, end_date, fields)
    ds = DataSource.write_df(df)
    return Outputs(data=ds)

# 使用 M.cached 实现 DataSource 复用
m1 = M.cached.v2(run=foo1)
[2018-03-01 17:02:44.785664] INFO: bigquant: cached.v2 开始运行..
[2018-03-01 17:02:44.842135] INFO: bigquant: cached.v2 运行完成[0.05645s].

DataSource的id

In [5]:
ds_id = m1.data.id
Out[5]:
'4e3cfefe1d2f11e89f8b0242ac11000b'

通过id获取数据

In [4]:
data = DataSource(id='4e3cfefe1d2f11e89f8b0242ac11000b').read_df()
Out[4]:
open low instrument close date high
0 5148.751953 5066.372070 000002.SZA 5148.751953 2018-02-01 5222.894043
1 5011.452148 4915.341797 000002.SZA 5132.275879 2018-02-02 5203.671875
2 5052.642090 4985.365234 000002.SZA 5078.729004 2018-02-05 5225.640137
3 4933.190918 4789.025879 000002.SZA 4918.087891 2018-02-06 4956.532227
4 5001.840820 4462.251953 000002.SZA 4528.155762 2018-02-07 5022.436035
5 4530.901855 4460.878906 000002.SZA 4496.576660 2018-02-08 4651.726074
6 4324.951660 4146.461426 000002.SZA 4293.372559 2018-02-09 4388.109863
7 4315.340820 4298.864746 000002.SZA 4379.871582 2018-02-12 4437.537598
8 4432.045898 4432.045898 000002.SZA 4493.830566 2018-02-13 4639.368652
9 4513.052734 4416.942871 000002.SZA 4554.242676 2018-02-14 4574.837891
10 4668.201660 4576.210938 000002.SZA 4627.011719 2018-02-22 4675.066895
11 4654.471680 4576.210938 000002.SZA 4767.058105 2018-02-23 4819.231934
12 4815.112793 4546.004883 000002.SZA 4692.916016 2018-02-26 4819.231934
13 4695.662109 4482.846680 000002.SZA 4517.171875 2018-02-27 4706.645996
14 4463.625000 4371.633789 000002.SZA 4489.711914 2018-02-28 4562.480957