一、基础知识
Tqsdk(Trading Quant System Development Kit)是一个开源的交易量化开发工具,致力于为量化爱好者、专业交易员和交易所提供高效的、简单易用、可扩展的交易系统开发解决方案,它为使用 Python 语言的交易者提供了一套易于调用、功能齐全、高性能的开发接口。
Tqsdk在交易领域广泛应用,我们可以利用Tqsdk来自动化交易于股票、期货等金融市场。
二、数据获取
tqapi.get_kline_serial(symbol, dur_n, dur_m, data_length)函数可获指定合约、K线周期、数量的K线数据,其中symbol参数为指定合约代码代号,dur_n参数为K线周期的周期数,dur_m参数为K线周期的类型(如"D"代表天线,"H"代表小时线,"M"代表分钟线等),data_length参数为需要获取的K线数据数量。
通过get_kline_serial函数接获得的数据会以Dataframe格式数据自动存储,我们可以非常方便的进行数据前处理。
import tqsdk
ts = tqsdk.TqApi()
klines = ts.get_kline_serial("SHFE.rb2110", 60, data_length=10)
三、交易策略
我们可以根据数据特点设计交易策略,如均线策略、趋势策略等。
均线策略简单来说,是通过比较均线与价格的位置来判断未来趋势走势,实现买入或卖出。
以5分钟为例,当股票价格突破5分钟均线,买入;当股票价格跌破5分钟均线,卖出。
import tqsdk
import pandas as pd
ts = tqsdk.TqApi()
klines = ts.get_kline_serial("SHFE.rb2110", 300, data_length=40)
df = pd.DataFrame(klines)
df["ma5"] = df["close"].rolling(5).mean()
last_data = df.iloc[-1]
if last_data["close"] > last_data["ma5"]:
// 进行买入操作
else:
// 进行卖出操作
四、下单交易
tqapi.insert_order(symbol, direction, offset, volume, limit_price)函数可进行订单下单,其中symbol参数为指定合约代码代号,direction参数为订单方向(如 BUY 代表买入,SELL 代表卖出),offset参数为开平仓方向(如OPEN 代表开仓,CLOSE代表平仓),volume参数为订单数量,limit_price参数为订单价格(如果不填,则以市价单进行交易)。
import tqsdk
ts = tqsdk.TqApi()
ts.insert_order("SHFE.rb2110", "BUY", "OPEN", 1, limit_price=last_data["close"])
五、实战演练
以上是Tqsdk的基本使用方法,我们可以把上述知识融合起来,设计一个简单的交易策略,并使用Tqsdk实现股票数据自动化交易。
以“跨越10日均线买入,跌破3日均线卖出”策略为例,假设目前股票价格突破10日均线,我们进行买入操作;如果股票价格跌破3日均线,则进行卖出操作。
import tqsdk
import pandas as pd
ts = tqsdk.TqApi()
klines = ts.get_kline_serial("SHFE.rb2110", 300, data_length=20)
df = pd.DataFrame(klines)
df["ma3"] = df["close"].rolling(3).mean()
df["ma10"] = df["close"].rolling(10).mean()
last_data = df.iloc[-1]
if last_data["close"] > last_data["ma10"]:
ts.insert_order("SHFE.rb2110", "BUY", "OPEN", 1, limit_price=last_data["close"])
if last_data["close"] < last_data["ma3"]:
ts.insert_order("SHFE.rb2110", "SELL", "CLOSE", 1, limit_price=last_data["close"])
该交易策略仅供参考,大家可以根据自己的喜好和经验进行调整。
六、总结
Tqsdk是一款非常方便易用的量化交易开发工具,能够有效辅助我们在股票交易中实现自动化交易,提高交易效率。
通过对Tqsdk的学习和实践,可以让我们更全面地了解股票交易,并对未来的交易有更好的预测和判断。