富途证券
支持富途牛牛实盘交易、模拟盘交易,需要下载FutuOpenD软件。
当使用FutuOpenD接入模拟交易时,部分股票代码不支持,因此无法交易,但富途牛牛手机APP可以进行模拟交易。
在发明者量化平台上配置交易所对象、运行FutuOpenD软件等操作,请参阅富途证券配置说明文档。
GetOrder、GetOrders、GetPositions、GetAccount函数,默认使用缓存数据,因此不限制调用频率。
当有新数据时,FutuOpenD会自动更新数据,缓存数据也会同步更新。调用exchange.IO("refresh", true)函数可以禁用缓存。如果禁用缓存,则调用频率为每30秒内最多请求10次查询,超过频率限制会报错。
600519.SH
策略代码中使用exchange.SetContractType()函数设置股票代码,例如:
function main() {
var info = exchange.SetContractType("600519.SH") // Set to stock 600519.SH (Moutai), account switches to mainland market
Log(info)
Log(exchange.GetAccount()) // Current stock is Moutai, calling GetAccount function gets account assets for mainland market
Log(exchange.GetTicker()) // Get current price information for Moutai stock
}
def main():
info = exchange.SetContractType("600519.SH")
Log(info)
Log(exchange.GetAccount())
Log(exchange.GetTicker())
void main() {
auto info = exchange.SetContractType("600519.SH");
Log(info);
Log(exchange.GetAccount());
Log(exchange.GetTicker());
}
设置交易方向的函数exchange.SetDirection、下单函数exchange.Buy/exchange.Sell、撤单函数exchange.CancelOrder、查询订单函数exchange.GetOrder等使用方法均与期货市场相同。
TrdMarket定义市场,用于区分香港市场、美国市场、大陆市场。摘录自Futu API文档:
const (
TrdMarket_TrdMarket_Unknown TrdMarket = 0 //Unknown market
TrdMarket_TrdMarket_HK TrdMarket = 1 //Hong Kong market
TrdMarket_TrdMarket_US TrdMarket = 2 //US market
TrdMarket_TrdMarket_CN TrdMarket = 3 //Mainland market
TrdMarket_TrdMarket_HKCC TrdMarket = 4 //Hong Kong Stock Connect market
TrdMarket_TrdMarket_Futures TrdMarket = 5 //Futures market
)
获取账户信息数据时,exchange.GetAccount()函数返回:
{
"Info": [{
"Header": {
... // Omitted
"TrdMarket": 1 // Market ID in Info raw data, indicates account assets for Hong Kong market trading
},
"Funds": { // Account asset information in this market
...
}
}, ...],
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 1000000, // Asset value in current market
"FrozenBalance": 0
}
FutuOpenD根据登录的IP地址作为地区区分
对于非大陆IP地址登录的账户,在获取行情数据时有所限制,具体请查阅FutuOpenD(富途)官方文档。盈透证券 配置交易所: 使用盈透证券需要在托管者所在系统环境运行「IB Gateway」或「TWS (Trader Workstation)」软件。以「TWS」软件为例,运行「TWS」并登录后,在软件右上角点击配置按钮打开软件配置界面。
localhost:7496。支持市场:
- 目前仅支持美股市场,暂不支持其他期货、外汇等市场。
- 美股市场股票代码格式例如:
苹果公司(Apple Inc.)在纳斯达克(NASDAQ)交易所的股票代码:AAPL.US。
特斯拉公司(Tesla, Inc.)在纳斯达克(NASDAQ)交易所的股票代码:TSLA.US。
- Futures_Binance
支持币安期货双向持仓模式,可以使用exchange.IO切换:
function main() {
exchange.IO("dual", true) // Switch to hedge mode
exchange.IO("dual", false) // Switch to one-way mode
}
def main():
exchange.IO("dual", True)
exchange.IO("dual", False)
void main() {
exchange.IO("dual", true);
exchange.IO("dual", false);
}
支持逐仓/全仓切换:
function main() {
exchange.SetContractType("swap")
exchange.IO("cross", true) // Switch to cross margin
exchange.IO("cross", false) // Switch to isolated margin
}
def main():
exchange.SetContractType("swap")
exchange.IO("cross", True)
exchange.IO("cross", False)
void main() {
exchange.SetContractType("swap");
exchange.IO("cross", true);
exchange.IO("cross", false);
}
支持切换为币安统一账户模式:
function main() {
exchange.IO("unified", true) // Switch to unified account mode
exchange.IO("unified", false) // Switch to normal mode
}
def main():
exchange.IO("unified", True)
exchange.IO("unified", False)
void main() {
exchange.IO("unified", true);
exchange.IO("unified", false);
}
支持设置币安现货/期货下单的STP模式:
function main() {
// "NONE" means disable STP mode, other parameters: "EXPIRE_TAKER", "EXPIRE_MAKER", "EXPIRE_BOTH"
exchange.IO("selfTradePreventionMode", "NONE")
}
def main():
exchange.IO("selfTradePreventionMode", "NONE")
void main() {
exchange.IO("selfTradePreventionMode", "NONE");
}
支持币安的中文交易对:
function main() {
let ticker = exchange.GetTicker("币安人生_USDT.swap")
Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT.swap","Open":0.29622,"High":0.31661, ...}
}
exchange.IO("signHost", "")设置为空字符串即可。
使用exchange.IO("signHost", "https://xxx.xxx.xxx")切换火币期货参与签名验证的基地址。
使用exchange.IO("base", "https://xxx.xxx.xxx")或exchange.SetBase("https://xxx.xxx.xxx")切换交易所接口的基地址。XXX_USDT,使用函数exchange.SetContractType("swap")将合约代码设置为swap永续合约时,使用exchange.IO("cross", true)可以切换为USDT本位永续合约全仓模式。使用exchange.IO("cross", false)可以切换回逐仓模式,初始默认为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("unified", true)切换统一账户;使用exchange.IO("unified", false)切换回非统一账户。支持火币的中文交易对:
function main() {
let ticker = exchange.GetTicker("币安人生_USDT.swap")
Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT.swap","Open":0.29622,"High":0.31661, ...}
}
Huobi
LINK*(-3),交易所定义的代码为:link3susdt,在发明者量化交易平台设置该交易对时写作LINK3S_USDT。
也可以在策略中切换交易对:function main() {
exchange.SetCurrency("LINK3S_USDT")
Log(exchange.GetTicker())
}
def main():
exchange.SetCurrency("LINK3S_USDT")
Log(exchange.GetTicker())
void main() {
exchange.SetCurrency("LINK3S_USDT");
Log(exchange.GetTicker());
}
支持火币的中文交易对:
function main() {
let ticker = exchange.GetTicker("币安人生_USDT")
Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT","Open":0.29622,"High":0.31661, ...}
}
exchange.IO("simulate", true)即可切换为模拟盘环境。如需切换为实盘环境,使用exchange.IO("simulate", false)切换为实盘即可,初始默认为实盘环境。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式,初始默认为全仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("simulate", true)即可切换为模拟盘环境。如需切换为实盘环境,使用exchange.IO("simulate", false)切换为实盘即可,初始默认为实盘环境。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式,初始默认为全仓模式。GetOrders、GetTrades函数。exchange.IO("simulate", true)即可切换为模拟盘环境。如需切换为实盘环境,使用exchange.IO("simulate", false)切换为实盘即可,初始默认为实盘环境。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("simulate", true)即可切换为模拟盘环境。如需切换为实盘环境,使用exchange.IO("simulate", false)切换为实盘即可,初始默认为实盘环境。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("unified", true)切换统一账户;使用exchange.IO("unified", false)切换回非统一账户。exchange.IO("unified", true)切换统一账户;使用exchange.IO("unified", false)切换回非统一账户。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("unified", true)切换为统一保证金接口,使用exchange.IO("unified", false)切换回普通合约接口。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。
function main() {
// "Allow" means allow self-trading, "RejectTaker" "RejectMaker" "RejectBoth" "Allow"
exchange.IO("selfTradePreventionMode", "Allow")
}
def main():
exchange.IO("selfTradePreventionMode", "Allow")
void main() {
exchange.IO("selfTradePreventionMode", "Allow");
}
exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。xxx,使用exchange.IO("signingKey", "xxx")传入,注意signingKey有时效限制。传入后exchange.IO函数返回signingKey的公钥。multi-collateral合约支持全仓、逐仓、杠杆设置。
使用exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。accountId:
使用exchange.IO("accountId", "xxx")设置accountId。exchange.IO("subAccount", "xxx")切换子账户。Id说明:
该交易所订单Id由实际Id和订单时间戳组成,时间戳和实际订单Id使用英文逗号间隔。目的是为了支持exchange.GetOrder(Id)函数查询订单。鉴于交易所返回的数据中订单时间戳会随订单状态变化,如果本地需要记录订单Id等信息,请分离出实际订单Id进行记录。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("source", "b")切换为测试网环境,使用exchange.IO("source", "a")切换为主网环境。exchange.IO("vaultAddress", "0xabc...")设置金库地址,用于金库或子账户下单等交易操作时指定具体的执行账户地址。默认不启用该设置,设置为空字符串""时可禁用该设置。exchange.IO("walletAddress", "0xabc...")设置钱包地址,用于查询指定账户的订单、持仓、余额等数据。默认为主账户的钱包地址。exchange.IO("expiresAfter", 1234567890)设置请求时的expiresAfter参数,用于指定订单的过期时间戳(毫秒)。默认不启用该设置,设置为0时可禁用该设置。exchange.IO("source", "b")切换为测试网环境,使用exchange.IO("source", "a")切换为主网环境。 function main() {
var strJson = `{
"assetIdSynthetic": "0x4554482d3900000000000000000000",
"assetIdCollateral": "0x2ce625e94458d39dd0bf3b45a843544dd4a14b8169045a3a3d15aa564b936c5",
"assetIdFee": "0x2ce625e94458d39dd0bf3b45a843544dd4a14b8169045a3a3d15aa564b936c5",
"isBuyingSynthetic": true,
"amountSynthetic": 10000000,
"amountCollateral": 13020000,
"amountFee": 6250,
"nonce": 676432751,
"accountID": 601416704693633632,
"expirationTimestamp": 484831
}`
var signature = exchange.IO("calcOrderHashAndSign", strJson)
Log(signature)
}
exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("dual", true)切换为双向持仓,使用exchange.IO("dual", false)切换为单向持仓。exchange.IO("cross", true)切换为全仓模式,使用exchange.IO("cross", false)切换为逐仓模式。exchange.IO("merge", true)切换为合仓模式,使用exchange.IO("merge", false)切换为分仓模式。