前言
众所周知,集合竞价的数据可以通过subscribe_whle_quote回调接收,或者是通过get_full_tick获取的。
由于大家熟悉的handlebar是随着主图tick更新调用的,那么我们实际上需要解决的问题是如何在非handlebar驱动下,定时获取集合竞价的tick变化,这里我们推荐新版客户端用户使用【ContexInfo.schedule_run】,传统客户端用户使用【ContextInfo.run_time】两个定时器来实现。下面是具体的操作示例:

新版客户端端操作代码
# coding:gbk
import datetime as dt
# 获取当前日期
today = dt.datetime.now().date()
# 构造今天9:30:00的datetime对象
time_point1 = dt.datetime.combine(today, dt.datetime.strptime("09:15:00", "%H:%M:%S").time())
# 将datetime对象格式化为字符串
start_time = time_point1.strftime("%Y%m%d%H%M%S")
def on_timer(C):
print("=" * 10 ,"集合竞价阶段" , "=" * 10)
ticks = C.get_full_tick(["000001.SZ"])
print(ticks)
now = dt.datetime.now().strftime("%H%M%S")
if now > "092500":
print("集合竞价结束")
C.cancel_schedule_run('my_timer') #取消my_timer任务组所有定时任务
def init(ContextInfo):
today = dt.datetime.now().strftime("%Y%m%d%H%M%S")
tid=ContextInfo.schedule_run(on_timer,start_time,-1,dt.timedelta(seconds=3),'my_timer')
def handlebar(ContextInfo):
print("开始连续交易")
pass
传统客户端操作代码
# coding:gbk
import datetime as dt
# 获取当前日期
today = dt.datetime.now().date()
# 构造今天9:30:00的datetime对象
time_point1 = dt.datetime.combine(today, dt.datetime.strptime("09:15:00", "%H:%M:%S").time())
# 将datetime对象格式化为字符串
start_time = time_point1.strftime("%Y-%m-%d %H:%M:%S")
def on_timer(C):
now = dt.datetime.now().strftime("%H%M%S")
if now > "092500":
if now < "092504":
print("集合竞价结束")
return
print("=" * 10 ,"集合竞价阶段" , "=" * 10)
ticks = C.get_full_tick(["000001.SZ"])
print(ticks)
def init(ContextInfo):
ContextInfo.run_time("on_timer","3nSecond",start_time)
def handlebar(ContextInfo):
print("开始连续交易")
pass
不清楚的内容可添加下方助理微信咨询,有其他 QMT 小技巧想学习的吗?欢迎在下方留言,笔者将根据大家的留言持续更新哦!
欢迎和我一起加入迅投组建的 QMT 实战交流社群,交流群内有许多做量化交易的高手和大佬,具有良好的分享和互助氛围。且迅投官方会不定期为多次分享、乐于助人的群友申请送投研专业版的机会。
只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!”

|