注意: 画图示例中用到的数据不含有实际意义,请根据自己的实际策略情况进行修改 ''' api = TqApi(web_gui=True, auth=TqAuth("信易账户", "账户密码")) # web_gui=True, 开启使用 web 界面查看绘图结果的功能 klines = api.get_kline_serial("SHFE.rb2105", 60) # 由于需要在浏览器中查看绘图结果,因此程序不能退出 while True: api.wait_update() # 当有业务信息发生变化时执行 # 当最后 1 根柱子最大最小值价差大于 0.05 时,在主图绘制信号 high = klines.iloc[-1].high low = klines.iloc[-1].low if high - low > 0.05: # 绘制直线, 每一个 id 对应同一条直线 api.draw_line(klines, -1, high, -1, low, id="box%.0f" % (klines.iloc[-1].id), color=0xaa662244, width=4) # 绘制字符串 api.draw_text(klines, "信号1", x=-1, y=low, id="text%.0f" % (klines.iloc[-1].id), color=0xFFFF3333)
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'limin' from tqsdk import TqApi, TqAuth ''' 画图示例: 在主图中画信号线及文字标注 注意: 画图示例中用到的数据不含有实际意义,请根据自己的实际策略情况进行修改 ''' api = TqApi(web_gui=True, auth=TqAuth("信易账户", "账户密码")) # web_gui=True, 开启使用 web 界面查看绘图结果的功能 klines = api.get_kline_serial("SHFE.rb2105", 300) # 示例1: 在主图中最后一根K线上画射线以标注需要的信号 api.draw_line(klines, -1, klines.iloc[-1].close, -1, klines.iloc[-1].high, line_type="SEG", color=0xFFFF9900, width=3) # 示例2: 绘制字符串 api.draw_text(klines, "信号1", x=-1, y=klines.iloc[-1].high + 5, color=0xFFFF3333) # 示例3: 给主图最后5根K线加一个方框 api.draw_box(klines, x1=-5, y1=klines.iloc[-5]["high"], x2=-1, y2=klines.iloc[-1]["low"], width=1, color=0xFF0000FF, bg_color=0x7000FF00) # 由于需要在浏览器中查看绘图结果,因此程序不能退出 while True: api.wait_update()
''' 如果当前价格大于5分钟K线的MA15则开多仓 如果小于则平仓 回测从 2018-05-01 到 2018-10-01 ''' # 在创建 api 实例时传入 TqBacktest 就会进入回测模式 api = TqApi(backtest=TqBacktest(start_dt=date(2020, 3, 1), end_dt=date(2020, 3, 16)),web_gui="0.0.0.0:9876")#"0.0.0.0:9876" # api = TqApi(backtest=TqReplay(date(2020, 3, 16)),web_gui=True) # 获得 m1901 5分钟K线的引用 klines = api.get_kline_serial("SHFE.rb2005", 5 * 60, data_length=300) # 创建 m1901 的目标持仓 task,该 task 负责调整 m1901 的仓位到指定的目标仓位 target_pos = TargetPosTask(api, "SHFE.rb2005") while True: api.wait_update() api.draw_text(klines, "--", x=-1, y=klines.iloc[-1].high, color=0xFFFF3333) if api.is_changing(klines.iloc[-1], "datetime"): # 产生新k线:重新计算SMA klines["ma5"]=ma(klines["close"], 5) klines["ma10"]=ma(klines["close"], 10) klines["ma89"]=ma(klines["close"], 89) klines["ma144"]=ma(klines["close"], 144) sar=SAR(klines, 4, 0.02, 0.2) if klines["ma5"].iloc[-2] < klines["ma10"].iloc[-2]and klines["ma10"].iloc[-1] > klines["ma5"].iloc[-1]: target_pos.set_target_volume(-1) print("均线下穿,做空") # print("空头开仓:",position.position_price_short) # 均线上穿,做多
# 算出 cu1906 - cu1905 的价差,并以折线型态显示在副图 klines["dif"] = klines2["close"] - klines["close"] klines["dif.board"] = "DIF" klines["dif.color"] = 0xFF00FF00 klines["dif.width"] = 3 # 在附图画出 cu1906 的K线 klines["cu1906.open"] = klines2["open"] klines["cu1906.high"] = klines2["high"] klines["cu1906.low"] = klines2["low"] klines["cu1906.close"] = klines2["close"] klines["cu1906.board"] = "B2" # 给主图最后5根K线加一个方框 api.draw_box(klines, x1=-5, y1=klines.iloc[-5]["close"], x2=-1, y2=klines.iloc[-1]["close"], width=1, color=0xFF0000FF, bg_color=0x8000FF00) # 在主图最后一根K线的最高处标一个"最高"文字 indic = -1 value = klines["high"].iloc[-1] api.draw_text(klines, "最高", x=indic, y=value, color=0xFF00FF00) api.close()