什么是集合竞价?有什么用途?
所谓集合竞价就是在当天还没有开盘之前,你可根据前一天的收盘价和对当日股市的预测来输入股票价格,在集合竞价时间里输入计算机主机的所有下单,按照价格优先和时间优先的原则计算出最大成交量的价格,这个价格就会是集合竞价的成交价格,而这个过程被称为集合竞价。
每天开盘价在技术分析上具有重要的意义,目前世界各国股市市场均采用集合竞价的方式来确定开盘价,因为这样可以在一定程度上防止人为操纵现象。
策略实现(基于掘金量化平台)
策略思想
-
获取沪深300的成份股数据,并统计其30天内开盘价大于前收盘价的天数,并在该天数大于阈值18的时候加入股票池。
-
对不在股票池的股票平仓,并等权配置股票池的标的股票,每次交易间隔1个月。
策略主要步骤实现
获取当前交易日日期
now = context.now
= context.now
直接调用context.now
函数,返回“datetime.datetime”格式
获取上一交易日日期
last_day = get_previous_trading_date(exchange='SHSE', date=now)
= get_previous_trading_date(exchange='SHSE', date=now)
获取上一交易日可调用get_previous_trading_date
函数,返回值为字符串格式:
-
exchang
需要设置交易市场代码。 -
date
需要设置指定日期。
获取当天有交易的股票
not_suspended_info = get_history_instruments(symbols='SHSE.000300', start_date=now, end_date=now)
not_suspended_symbols = [item['symbol'] for item in not_suspended_info if not item['is_suspended']]
not_suspended_info = get_history_instruments(symbols='SHSE.000300', start_date=now, end_date=now)
not_suspended_symbols = [item['symbol'] for item in not_suspended_info if not item['is_suspended']]
获取当天有交易的股票,即非停牌的股票,首先需获取停牌信息,这里需调用get_history_instruments
函数,返回值类型为list[dict]
,之后就是将所提取的“字典”转换为”list“:
-
symbols
需要设置订阅的标的代码。
-
start_date
和end_date
需设置获取成分股的开始与结束日期,这里需要调成上一交易日以获取上一交易日的成分股信息。
固定月初调仓
schedule(schedule_func=algo, date_rule='1m', time_rule='09:40:00')
(schedule_func=algo, date_rule='1m', time_rule='09:40:00')
固定时间调仓可使用schedule
函数进行定时任务配置:
-
schedule_func
为调用的策略函数的名称。
-
date_rule
可设为1m
(一月)。 -
time_rule
为开仓日的开仓时间,这里设为每月第一个交易日的09:40:00
。
获取沪深300成分股
stock300 = get_history_constituents(index='SHSE.000300', start_date=last_day,end_date=last_day)[0]['constituents'].keys()
= get_history_constituents(index='SHSE.000300', start_date=last_day,end_da