直接判断前一个交易日有没有夜盘数据即可。
用 history_bars_date 获取数据。获取之后判断下第一个K的时间是多少。
[PEL] 复制代码
from PythonApi import *
from datetime import datetime
def init(context):
#定义合约
code = context.run_info.base_book_id
#定义周期
frequency = '1m'
#定义数据列
columns = ['datetime']
#获取基准合约的当前日期,需要注意如不本地磁盘缺少数据,那么会无法正常获取结果
current_date = datetime.strptime(str(int(get_dynainf(code, 229) + 19000000)), "%Y%m%d")
#获取前一个交易日的日期
history_begin_date = get_previous_trading_date(current_date, 1)
#定义数据查询的开始和结束时间
begin_date = history_begin_date.replace(hour=0, minute=0, second=0)
end_date = history_begin_date.replace(hour=19, minute=0, second=0)
#获取交易日的1分钟数据
data = history_bars_date(code, begin_date,end_date, frequency, columns)
b_datetime= int(data[0])
b_time = str(b_datetime)[-6:-1]
print(f"前一个交易日第一个K:{b_datetime}") #有夜盘打印结果就是 "01010"
print(f"前一个交易日第一根K时间:{b_time}")
def before_trading(context):
pass
def handle_bar(context):
pass
这部分有效的前提是你本地有数据。没有数据情况下也无法判断。
除此之外目前没有办法判断上个交易日是否是节后第一个交易日。
|