现在很多交易者选择量化投资与传统的股票交易之间,往往会选择自动化交易跟量化交易的比较多,毕竟现在很多可以开发出来的交易软件都具备了量化的特点,能够及时的把握更多的盈利的机会,就比如说常使用的到通达信交易dll接口就是一个例子,通过通达信接口来传输自己的交易策略,就可以在接口修改本身的dll来调用,实现程序化交易,那么,具体它是如何实现的呢?
具体来看:
将 MetaTrade.dll, MetaTrade.lic, MetaTrade.ini 三个文件放到应用程序同级目录
-
- 调用 LoadLibrary 加载 MetaTrade.dll 实例
- 调用 GetProcAddress 获取 API 函数地址
- 调用 Init 接口进行 API 初始化
- 调用 Logon 接口登录券商账户并获得与之对应的 ClientId, 一个应用程序实例可以同时登录多个账户
- 通过 ClientId 调用其它 API 接口进行查询或委托下单
- 调用 Logoff 接口登出券商账户
- 调用 Deinit 接口进行 API 清理
- 调用 FreeLibrary 卸载 MetaTrade.dll 实例
如果是通达信交易dll接口要想通过一段代码来自动委托下单,则需要股票api交易接口,运用接口的各个参数功能来自动下单:
名称 | 功能 | |
基本函数 | Init | API 初始化 |
Deinit | API 反初始化 | |
Logon | 登录交易账户 | |
Logoff | 登出交易账户 | |
QueryData | 查询各类交易数据 | |
QueryHistoryData | 查询各类历史数据 | |
SendOrder | 委托下单 | |
CancelOrder | 委托撤单 | |
GetQuote | 获取五档报价 | |
Repay | 融资融券账户直接还款 | |
GetExpireDate | 查询 API 授权到期日期 | |
单账户批量函数 | QueryDatas | 单账户批量查询各类交易数据 |
SendOrders | 单账户批量下单 | |
CancelOrders | 单账户批量撤单 | |
GetQuotes | 单账户批量获取五档报价 | |
多账户批量函数 | QueryMultiAccountsDatas | 多账户批量查询各类交易数据 |
SendMultiAccountsOrders | 多账户批量下单 | |
CancelMultiAccountsOrders | 多账户批量撤单 | |
GetMultiAccountsQuotes | 多账户批量获取五档报价 |
代码举例:
import requests;
import time;
import json;
import pandas as pd;
def fenshishuju_dfcf(daima);
//这里我们要定义数组来区分开来,让打印结果更加详细化,实现股票交易接口实时抓取的数据按时间详细化分割,精准的打印出来;
if daima[:2] == "sh":
lsbl = '1.'+daima[2:]
else:
lsbl = '0.' + daima[2:]
wangzhi = "http://push2his.eastmoney.com/api/qt/stock/trends2/get?&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6%2Cf7%2Cf8%2Cf9" \
"%2Cf10%2Cf11%2Cf12%2Cf13&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58&" \
"ut=7eea3edcaed734bea9cbfc24409ed989&ndays=1&iscr=0&secid="+lsbl+ \
"&_=1643253749790"+str(time.time)
resp = requests.get(wangzhi, timeout=6)
# print (resp)
#打印请求结果的状态码
data = json.loads(resp.text)
shuju = {'日期时间': [], '最新价': [], '均价': [], '成交额': []}
for k in data['data']['trends']:
lsbl = k.split(",")
shuju['日期时间'].append(lsbl[0])
shuju['最新价'].append(lsbl[2])
shuju['均价'].append(lsbl[-1])
shuju['成交额'].append(lsbl[-2])
shuju = pd.DataFrame(shuju)
print(shuju)
return shuju
if __name__ == '__main__':
while 1:
fenshishuju_dfcf('sh603102')
time.sleep(3)
return{
}
持仓数据显示:
因此,通达信交易dll接口实现调用的参数功能能够将精准的执行交易者的量化策略,及时的自定委托下单,实现程序化交易。