在量化市场上,有很多交易系统就是通过执行量化策略来进行盈利,比如像通达信下单接口系统,其中就包括开仓、买入、止盈、止损方法与策略执行主函数等,那么执行这些策略呢?
想要了解清楚这个问题也很简单,通过通达信下单接口系统的开发文档来进行研究,如下:
(1)通达信接口API 功能概述
名称 |
功能 |
|
基本函数 |
Init |
|
Deinit |
||
Logon |
||
Logoff |
||
QueryData |
||
QueryHistoryData |
||
SendOrder |
||
CancelOrder |
||
GetQuote |
||
Repay |
||
GetExpireDate |
||
单账户批量函数 |
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()
执行示例: