719 浏览
0

老师好,我想编写一个类似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中改写应该用哪几个函数,谢谢

许 公子 已回答的问题 2024年8月10日
0

 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分钟的最高价和最低价。

许 公子 已回答的问题 2024年8月10日
0

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)

希望对你有所帮助,我还在找更优方案

许 公子 已回答的问题 2024年8月8日