一、策略结构分类
常见的策略结构主要有 3 类:
1、定时任务;
2、事件驱动任务;
3、定时任务+事件驱动任务。
我们之前学习的单均线策略,双均线策略和四日法则等等都是事件驱动任务。事件驱动任务是一种基于特定事件的触发来执行相应操作的方式,例如价格达到了某个值、或是短期均线上穿了长期均线,当这样的事件发生后,执行了下单交易,就是事件驱动任务。
二、什么是定时任务
在量化策略中,定时任务是指按照预先设定的固定时间间隔或特定时间点来执行的任务。例如像小市值策略,每月或每季度获取一次股票市值数据,然后进行从小到大排序,并以此对自己的投资组合进行调整。
不过今年上半年因为ST和退市隐患的原因,小市值策略就一言难尽了,我们还是另外找个例子吧。
三、定时任务实例
实例:在每个交易日的10:00选出涨停了的股票
“每个交易日的10:00”,这就是固定的时间,“选出涨停了的股票”,就是所执行的操作。我们先来看看完整代码:
#encoding:gbk
'''
十点钟定时选出涨停股票
'''
import time, datetime
class a():
pass
A = a()
def init(C):
# 获取沪深A股的股票列表
A.hsa = C.get_stock_list_in_sector('沪深A股')
# 排除创业板和科创板股票
A.hsa = [stock for stock in A.hsa if not stock.startswith(('300', '688','301'))]
# 设置定时任务,每个交易日10点运行 f 函数
C.run_time("f","1nDay","2024-07-12 10:00:00")
def f(C):
print("定时任务现在开始运行……")
# 获取当前时间
now = datetime.datetime.now()
# 获取最新分笔数据
full_tick = C.get_full_tick(A.hsa)
# 遍历股票列表,检查是否涨停
for stock in A.hsa:
last_close = full_tick[stock]['lastClose']
last_price = full_tick[stock]['lastPrice']
# 计算涨停价,假设涨停限制为前收盘价的110%
limit_up_price = last_close * 1.1
# 判断当前价格是否达到涨停价
if last_price >= limit_up_price:
# 获取股票名称
stock_name = C.get_stock_name(stock)
# 获取股票价格
stock_price = last_price
# 计算股票涨幅
rise_percentage = ((stock_price - last_close) / last_close) * 100
# 打印涨停股票的代码、名称、价格和涨幅
print(f"{now} 涨停股票: {stock} {stock_name}, 价格: {stock_price:.2f}元, 涨幅: {rise_percentage:.2f}%")
程序运行结果如下图:
在定时任务中,我们需要导入的库是time和datetime。
然后,我们就需要为将要执行的操作设定好一个“闹钟”,这个“闹钟”就是run_time()函数。
用法:ContextInfo.run_time(funcName,period,startTime)
在本例中ContextInfo可以简写成C,参数funcName是回调函数名,本例回调函数名为f ,period为重复调用的时间间隔,1nDay表示每1天运行一次回调函数,如果写成5nSecond,就是每5秒钟就运行一次回调函数。startTime仅是策略第一次运行时间,我们可以设定一个较早的历史时间,定时器会立即启动。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/81446.html