在掘金终端的使用过程中,一些数据的提取和储存不太方便。小编针对数据的提取和储存问题,提供一些解决方法和使用范例:
list[dict]类型数据,以tick里面的quotes为例
tick数据是一类比较特殊的数据,返回字段中的quotes代表五档行情,是一个list[dict]的结构。其中quotes[0]-quotes[4]代表1-5档行情,每一档行情里面又分为"bid_p"、"bid_v"、"ask_p"、"ask_v"四个字段,对应的格式为字典。
先看一下quotes的结构
[{'bid_p': 1747.31005859375, 'bid_v': 500, 'ask_p': 1748.0, 'ask_v': 100},
{'bid_p': 1747.0, 'bid_v': 100, 'ask_p': 1748.3800048828125, 'ask_v': 100},
{'bid_p': 1746.8599853515625, 'bid_v': 600, 'ask_p': 1748.4000244140625, 'ask_v': 1200},
{'bid_p': 1746.010009765625, 'bid_v': 59, 'ask_p': 1748.449951171875, 'ask_v': 100},
{'bid_p': 1746.0, 'bid_v': 400, 'ask_p': 1748.47998046875, 'ask_v': 100}]
每一档行情对应的字段可以通过quotes[i][字段名]获取。以获取买一价为例,可写出如下代码:
def init(context):
# 订阅
subscribe(symbols='SHSE.600519', frequency='tick', count = 1)
def on_tick(context,tick):
print(tick['quotes'][0]['bid_p'])
if __name__ == '__main__':
run(strategy_id='在这里输入你的策略id',
filename='main.py',
mode=MODE_BACKTEST,
token='在这里输入你的token',
backtest_start_time='2020-12-01 08:00:00',
backtest_end_time='2020-12-02 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=2000000000,
backtest_commission_ratio=0.0002,
backtest_slippage_ratio=0.0001)
)