3.73K 浏览
0

示例程序:

from tqsdk import TqApi, TargetPosTask

SYMBOL = “DCE.jd2005” # 合约代码
NDAY = 5 # 天数
K1 = 0.2 # 上轨K值
K2 = 0.2 # 下轨K值

api = TqApi()
print(“策略开始运行”)

quote = api.get_quote(SYMBOL)
klines = api.get_kline_serial(SYMBOL, 24 * 60 * 60) # 86400使用日线
target_pos = TargetPosTask(api, SYMBOL)

def dual_thrust(quote, klines):
current_open = klines.iloc[-1][“open”]
HH = max(klines.high.iloc[-NDAY – 1:-1]) # N日最高价的最高价
HC = max(klines.close.iloc[-NDAY – 1:-1]) # N日收盘价的最高价
LC = min(klines.close.iloc[-NDAY – 1:-1]) # N日收盘价的最低价
LL = min(klines.low.iloc[-NDAY – 1:-1]) # N日最低价的最低价
range = max(HH – LC, HC – LL)
buy_line = current_open + range * K1 # 上轨
sell_line = current_open – range * K2 # 下轨
print(“当前开盘价: %f, 上轨: %f, 下轨: %f” % (current_open, buy_line, sell_line))
return buy_line, sell_line

buy_line, sell_line = dual_thrust(quote, klines) # 获取上下轨

Shoe X 已回答的问题 2020年7月21日
0

我不知道为何需要DataFrame类型的上下轨,也不知道如何转换,

不过,你可以尝试使用tafunc.hhv,tafunc.llv,tafunc.max等内置序列函数,例如:

from tqsdk import TqApi
from tqsdk.tafunc import hhv,llv,max
SYMBOL = "SHFE.rb2010" # 合约代码
NDAY = 5 # 天数
K1 = 0.2 # 上轨K值
K2 = 0.2 # 下轨K值
api = TqApi()
print("策略开始运行")
quote = api.get_quote(SYMBOL)
klines = api.get_kline_serial(SYMBOL, 24 * 60 * 60) # 86400使用日线
current_open = klines.open
HH = hhv(klines.high,NDAY) # N日最高价的最高价
HC = hhv(klines.close,NDAY) # N日收盘价的最高价
LC = llv(klines.close,NDAY) # N日收盘价的最低价
LL = llv(klines.low,NDAY) # N日最低价的最低价
range = max(HH-LC, HC-LL).shift(1)
buy_line = current_open + range * K1 # 上轨
sell_line = current_open - range * K2 # 下轨
print(buy_line, sell_line)
print(buy_line.iloc[-1],sell_line.iloc[-1])
while True:
    api.wait_update()

Shoe X 编辑评论 2020年7月22日

需要DataFrame类型的上下轨, 是为了获取 昨天的上下轨。

原来是取昨天上下轨,那么上面的写法正好符合你的要求。
print(buy_line.iloc[-2],sell_line.iloc[-2]) #昨天上下轨

第二种写法,简单修改如下:
current_open = klines.iloc[-2][“open”]
HH = max(klines.high.iloc[-NDAY – 2:-2]) # N日最高价的最高价
HC = max(klines.close.iloc[-NDAY – 2:-2]) # N日收盘价的最高价
LC = min(klines.close.iloc[-NDAY – 2:-2]) # N日收盘价的最低价
LL = min(klines.low.iloc[-NDAY – 2:-2]) # N日最低价的最低价