在量化市场上,有很多交易系统就是通过执行量化策略来进行盈利,比如像通达信下单接口系统,其中就包括开仓、买入、止盈、止损方法与策略执行主函数等,那么执行这些策略呢?
想要了解清楚这个问题也很简单,通过通达信下单接口系统的开发文档来进行研究,如下:
(1)通达信接口API 功能概述
名称 | 功能 | |
基本函数 | Init | API 初始化 |
Deinit | API 反初始化 | |
Logon | 登录交易账户 | |
Logoff | 登出交易账户 | |
QueryData | 查询各类交易数据 | |
QueryHistoryData | 查询各类历史数据 | |
SendOrder | 委托下单 | |
CancelOrder | 委托撤单 | |
GetQuote | 获取五档报价 | |
Repay | 融资融券账户直接还款 | |
GetExpireDate | 查询 API 授权到期日期 | |
单账户批量函数 | QueryDatas | 单账户批量查询各类交易数据 |
SendOrders | 单账户批量下单 | |
CancelOrders | 单账户批量撤单 | |
GetQuotes | 单账户批量获取五档报价 | |
多账户批量函数 | QueryMultiAccountsDatas | 多账户批量查询各类交易数据 |
SendMultiAccountsOrders | 多账户批量下单 | |
CancelMultiAccountsOrders | 多账户批量撤单 | |
GetMultiAccountsQuotes | 多账户批量获取五档报价 |
(2)查询各类交易数据:
签名 | void QueryData(int | ClientId, int Category, | char* Result, char* | ErrorInfo); | |
功能 | 查询各类交易数据 | ||||
参数 | ClientId | 客户端 Id | |||
Category | 查询信息类别 0: 资金, 1: 股份, 2: 当日委托, 3: 当日成交, 4: 可撤单, 5: 股东代码, 6: 融资余额, 7: 融券余额, 8: 可融证券, 9: 各券商不同, 10-11: 无, 12: 可申购新股查询, 13: 新股申购额度查询, 14: 配号查询, 15: 中签查询 | ||||
Result | 查询结果, 需要分配 1024*1024 字节的空间 格式请参阅[Result 格式] | ||||
ErrorInfo | 错误信息, 需要分配 256 字节的空间 | ||||
返回值 | 无, 查询成功与否通过 ErrorInfo 是否为空字符串来判断 |
签名 | void QueryDatas(int ClientId, int Category[], int Count, char* Result[], char* ErrorInfo[]); | |
功能 | 单账户批量查询各类交易数据, 通过下标区分每项查询 | |
参数 | ClientId | 客户端 Id |
Category[] | 查询信息类别数组, 具体含义请参阅[查询信息类别] | |
Count | 查询项数, 即数组长度 | |
Result[] | 查询结果数组, 每项结果需要分配 1024*1024 字节的空间 格式请参阅[Result 格式] | |
ErrorInfo[] | 错误信息数组, 每项错误信息需要分配 256 字节的空间 | |
返回值 | 无, 第 i 项查询成功与否通过 ErrorInfo[i]是否为空字符串来判断 |
(3)多账户批量查询各类交易数据:
签名 | void QueryMultiAccountsDatas(int ClientId[], int Category[], int Count, char* Result[], char* ErrorInfo[]); | |
功能 | 多账户批量查询各类交易数据, 通过下标区分每项查询 | |
参数 | ClientId[] | 客户端 Id 数组 |
Category[] | 查询信息类别数组, 具体含义请参阅[查询信息类别] | |
Count | 查询项数, 即数组长度 | |
Result[] | 查询结果数组, 每项结果需要分配 1024*1024 字节的空间 |
格式请参阅[Result 格式] | ||
ErrorInfo[] | 错误信息数组, 每项错误信息需要分配 256 字节的空间 | |
返回值 | 无, 第 i 项查询成功与否通过 ErrorInfo[i]是否为空字符串来判断 |
(4)通达信下单接口系统执行量化策略主程序如下:
1)股票交易接口进行股票量化策略类输入:
class StockStrategy:
df = None
open_offset_num = 5
buy_in_offset_num = 0
stop_win_offset_num = 0
stop_lose_num = 0
price_list = []
price_stop_lose = []
flag_buy_in = False
need_sell_out = False
stop_lose_rate = 3
2)初始化策略类StockStrategy:
def __init__(self, df: pd.DataFrame) -> None:
self.df = df
3) 设置止损模块和止损比例:
def set_stop_lose_rate(self, slr) -> None:
self.stop_lose_rate = slr
# 其中设置偏移量包括开仓偏移、买入偏移和止盈偏移,如需修改止损量,需重写set_stop_lose_num(self, date)方法
def set_offset_num(self, oon: int, bion: int, swon: int) -> None:
if oon is not None:
self.open_offset_num = oon # 开仓偏移量
if bion is not None:
self.buy_in_offset_num = bion # 买入偏移量
if swon is not None:
self.stop_win_offset_num = swon # 卖出偏移量
4)最后股票自动交易下单接口返回买卖结果:
def get_buy_sell_list(self) -> list:
return self.stock_strategy_main()
执行示例: