老师好,我想编写一个类似PIVOT的指标,算法是需要先获取交易日内第一根15分钟K线的最高价,最低价,收盘价信息.
对应文华公式的写法是
N:=IF(ISNIGHT>0,2100,900); //此处判断是夜盘21点开始还是只有日盘则早上9点开始
HHM:=REF(H,BARSLAST(TIME=N)); //第一根15分钟K线的最高价
CCM:=REF(C,BARSLAST(TIME=N)); //第一根15分钟K线的收盘价
LLM:=REF(L,BARSLAST(TIME=N)); //第一根15分钟K线的最低价
如果在tqsdk中改写应该用哪几个函数,谢谢
for i in range(0, 15):
if klines2.open.iloc[-1] ==klines4.open.iloc[-i]:
h_p_c2 =klines4.high.iloc[-i]
l_p_c2 = klines4.low.iloc[-i]
quote = api.get_quote(SYMBOL)
klines = api.get_kline_serial(SYMBOL, 1*60)
klines4 = api.get_kline_serial(SYMBOL, 15 * 60)
klines1 = api.get_kline_serial(SYMBOL, 6 * 60 * 60)
klines3 = api.get_kline_serial(SYMBOL,60* 60)
klines2 = api.get_kline_serial(SYMBOL, 9 * 60 * 60)
这个更简单,klines2 和klines4 开盘价相等就可以回溯出开盘后的15分钟的最高价和最低价。
t1 = get_index_time(klines)#(这是个时间函数,计录开盘的第一分钟的ID)
if t1<=15:
t1_high1=max(klines1.high.iloc[-1:])#15分钟K线
t1_low1=min(klines1.low.iloc[-1:])
if t1>15:
# for i in range(0, t1 ):
t1_high=klines1.high.iloc[-math.ceil(t1/15)]
t1_low=klines1.low.iloc[-math.ceil(t1/15)]
# print(“t1_high”,t1_high,”t1-low”,t1_low) # 检查是否为高点
# if t1>15:
t1_price=int((t1_high+t1_low)/2)
print(“t1_high”,t1_high,”t1-low”,t1_low,”t1_price”,t1_price)
希望对你有所帮助,我还在找更优方案