Ejemplo n.º 1
0
注意: 画图示例中用到的数据不含有实际意义,请根据自己的实际策略情况进行修改
'''

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)
Ejemplo n.º 2
0
#!/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()
Ejemplo n.º 3
0
'''
如果当前价格大于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)

        # 均线上穿,做多
Ejemplo n.º 4
0
# 算出 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()