tqsdk.exceptions - 抛出例外

exception tqsdk.exceptions.BacktestFinished(api)

回测结束会抛出此例外

Example:

from datetime import date
from tqsdk import TqApi, TqAuth, TqBacktest, TargetPosTask, BacktestFinished, TqSim

sim = TqSim()
api = TqApi(account=sim,
            backtest=TqBacktest(start_dt=date(2018, 5, 1), end_dt=date(2018, 6, 1)),
            auth=TqAuth("快期账户", "账户密码"))

klines = api.get_kline_serial("DCE.m1901", 5 * 60, data_length=15)  # 获得 m1901 5分钟K线的引用
target_pos = TargetPosTask(api, "DCE.m1901")

try:
    while True:  # 策略代码
        api.wait_update()
        if api.is_changing(klines):
            ma = sum(klines.close.iloc[-15:]) / 15
            if klines.close.iloc[-1] > ma:
                target_pos.set_target_volume(5)
            elif klines.close.iloc[-1] < ma:
                target_pos.set_target_volume(0)
except BacktestFinished:
    api.close()
    print("回测结束")
    print(sim.tqsdk_stat)  # 回测时间内账户交易信息统计结果
exception tqsdk.exceptions.TqTimeoutError(message)

获取数据超时会抛出此例外

Example:

from tqsdk import TqApi, TqAuth, TqTimeoutError

api = TqApi(auth=TqAuth("快期账户", "账户密码"))

symbols = ["CZCE.RS808", "CZCE.RS809", "CZCE.RS908", "CZCE.RS909"]  # CZCE.RS808 没有任何成交数据,无法取到 kline
klines = {}

for s in symbols:
    try:
        klines[s] = api.get_kline_serial(s, 5 * 60, data_length=15)
    except TqTimeoutError as e:
        print(f"获取 {s} 合约K线 超时!!!")

for s in klines:  # 打印出成功取到的 kline
    print(s, klines[s].iloc[-1])

while True:
    api.wait_update()
    # 策略代码 。。。。
exception tqsdk.exceptions.TqBacktestPermissionError(message)

没有回测权限报错

exception tqsdk.exceptions.TqRiskRuleError(message)

风控触发的报错