[QMT]08-从本地行情数据解析历史K线信息

77 篇文章 26 订阅
57 篇文章 1 订阅

用python解析QMT本地数据

获取本地行情数据
get_local_data(field_list=[], stock_code=[], period='1d', start_time='', end_time='', count=-1,dividend_type='none', fill_data=True, data_dir=data_dir)
  • 释义

  • 从本地数据文件获取行情数据,用于快速批量获取历史部分的行情数据

  • 参数

  • field_list - list 数据字段列表,传空则为全部字段

  • stock_list - list 合约代码列表

  • period - string 周期

  • start_time - string 起始时间

  • end_time - string 结束时间

  • count - int 数据个数

  • dividend_type - string 除权方式

  • fill_data - bool 是否向后填充空缺数据

  • data_dir - string MiniQmt配套路径的userdata_mini路径,用于直接读取数据文件。默认情况下xtdata会通过连接向MiniQmt直接获取此路径,无需额外设置。如果需要调整,可以将数据路径作为data_dir传入,也可以直接修改xtdata.data_dir以改变默认值

  • 返回

  • period为1m 5m 1dK线周期时

  • 返回dict { field1 : value1, field2 : value2, ... }

  • field1, field2, ... :数据字段

  • value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list

  • 各字段对应的DataFrame维度相同、索引相同

  • period为tick分笔周期时

  • 返回dict { stock1 : value1, stock2 : value2, ... }

  • stock1, stock2, ... :合约代码

  • value1, value2, ... :np.ndarray 数据集,按数据时间戳time增序排列

  • 备注

  • 仅用于获取level1数据

调用示范
from xtquant import xtdata
import pandas as pd
import datetime,time
df=xtdata.get_local_data(field_list=['time','open','high','low','close','volume','amount'],stock_code=['600050.SH'],count=10)
df2=pd.concat([df[i].loc['600050.SH'].T for i in['time','open','high','low','close','volume','amount']],axis=1)
df2.columns=['time','open','high','low','close','volume','amount']
df2['time2']=df2.index
df2['time']=df2['time2'].apply(lambda x:  datetime.datetime.fromtimestamp(int(x/1000.0)))
df2.reset_index(drop=True,inplace=True)
print(df2)
输出
        time  open  high   low  close   volume        amount          time2
0 2023-01-09  4.98  5.01  4.88   4.98  3246943  1.608308e+09  1673193600000
1 2023-01-10  4.95  5.02  4.90   4.98  2571948  1.277204e+09  1673280000000
2 2023-01-11  4.97  5.12  4.93   4.96  3127401  1.572082e+09  1673366400000
3 2023-01-12  4.94  5.14  4.92   5.11  3870406  1.952001e+09  1673452800000
4 2023-01-13  5.07  5.14  4.99   5.06  3227926  1.631200e+09  1673539200000
5 2023-01-16  5.06  5.10  4.98   5.02  2944490  1.483375e+09  1673798400000
6 2023-01-17  4.99  5.04  4.94   4.95  2094947  1.043011e+09  1673884800000
7 2023-01-18  4.95  5.12  4.91   5.07  3392366  1.713247e+09  1673971200000
8 2023-01-19  5.04  5.18  5.02   5.17  4324306  2.205093e+09  1674057600000
9 2023-01-20  5.19  5.62  5.17   5.53  7470132  4.101551e+09  1674144000000

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是一个简单的带5%止损及20%止盈的QMT实盘交易事件网格策略,它会在满足触发条件时自动买入或卖出,同时设置止损和止盈: ``` import qmt # 连接QMT实盘交易API qmt.connect("your_api_key", "your_secret_key") # 定义止损和止盈比例 stop_loss_ratio = 0.05 take_profit_ratio = 0.2 # 定义网格交易策略 def grid_strategy(kline): # 判断K线阳包阴的情况 if kline.close > kline.open and kline.close < kline.high: # 计算买入价格和止损/止盈价格 buy_price = kline.close stop_loss_price = buy_price * (1 - stop_loss_ratio) take_profit_price = buy_price * (1 + take_profit_ratio) # 下单买入 qmt.buy("symbol", "amount", buy_price) # 设置止损和止盈 qmt.stop_loss("symbol", stop_loss_price) qmt.take_profit("symbol", take_profit_price) # 判断K线阴包阳的情况 elif kline.close < kline.open and kline.close > kline.low: # 计算卖出价格和止损/止盈价格 sell_price = kline.close stop_loss_price = sell_price * (1 + stop_loss_ratio) take_profit_price = sell_price * (1 - take_profit_ratio) # 下单卖出 qmt.sell("symbol", "amount", sell_price) # 设置止损和止盈 qmt.stop_loss("symbol", stop_loss_price) qmt.take_profit("symbol", take_profit_price) # 订阅K线数据,并执行网格交易策略 qmt.subscribe_kline("symbol", "interval", grid_strategy) ``` 需要注意的是,这段代码仅提供一个简单的示例,实际应用中还需要考虑更多的因素,比如交易手续费、资金管理、市场风险等。同时,也需要根据实际情况调整止损和止盈比例,以及其他参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值