合约量化交易机器人策略系统开发详细规则及代码部署-KTV情人漫画
合约量化策略跟单系统,具备量化策略的相应特点,大量数据客观分析,获得持续稳定的收益,避免人为主观因素干扰;策略智能推送提醒;根据交易员的公开的相关交易数据进行分析,选择盈利机率相对较高的进行跟单,从而尽可能获得更高的收益。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tqsdk import TqApi, TqAuth, tafunc, TargetPosTask
from tqsdk import TqSim, TqBacktest, BacktestFinished
from tqsdk import TqKq
from tqsdk import TqAccount
from tqsdk.ta import MA, MACD, BOLL
from tqsdk.tafunc import time_to_datetime
from datetime import date
import pandas as pd
# 在附图中画 macd 指标
def calc_macd_klines(klines):
# 计算 macd 指标
macd = MACD(klines, 12, 26, 9)
# 用 K 线图模拟 MACD 指标柱状图
klines["MACD.open"] = 0.0
klines["MACD.close"] = macd["bar"]
klines["MACD.high"] = klines["MACD.close"].where(klines["MACD.close"] > 0, 0)
klines["MACD.low"] = klines["MACD.close"].where(klines["MACD.close"] < 0, 0)
klines["MACD.board"] = "MACD"
# 在 board=MACD 上添加 diff、dea 线
klines["diff"] = macd["diff"]
klines["diff.board"] = "MACD"
klines["diff.color"] = "gray"
klines["dea"] = macd["dea"]
klines["dea.board"] = "MACD"
klines["dea.color"] = "rgb(255,128,0)"
try :
tqsim = TqSim(init_balance=100000)
api = TqApi(tqsim,
auth=TqAuth("信易账户", "账户密码"),
web_gui=":58538",
backtest=TqBacktest(start_dt=date(2021, 5, 10), end_dt=date(2021, 6, 5)))
main_code = (api.get_quote('KQ.m@DCE.jm')).underlying_symbol # 主力合约码
klines = api.get_kline_serial(main_code, 60 * 60, data_length=30) # K线
quote = api.get_quote(main_code) # 行情
account = api.get_account() # 账户
position = api.get_position(main_code) # 持仓
while True :
api.wait_update()
if api.is_changing(klines) :
# 主图指标线
boll = BOLL(klines, 26, 2)
klines["top"] = boll.top
klines["mid"] = boll.mid
klines["bottom"] = boll.bottom
# 附图指标线
calc_macd_klines(klines)
except BacktestFinished as e :
# 回测结束时会执行这里的代码
api.close()
print(tqsim.trade_log) # 回测的详细信息
print(tqsim.tqsdk_stat) # 回测时间内账户交易信息统计结果,其中包含以下字段
# init_balance 起始资金
# balance 结束资金
# max_drawdown 最大回撤
# profit_loss_ratio 盈亏额比例
# winning_rate 胜率
# ror 收益率