富途证券
支持富途牛牛实盘交易、模拟盘交易,需要下载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") // 设置为股票600519.SH即贵州茅台,账户即切换到大陆市场
Log(info)
Log(exchange.GetAccount()) // 当前设置的股票为贵州茅台,此时调用GetAccount函数获取账户资产,获取的为大陆市场账户资产
Log(exchange.GetTicker()) // 获取股票贵州茅台当前的价格信息
}
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 //未知市场
TrdMarket_TrdMarket_HK TrdMarket = 1 //香港市场
TrdMarket_TrdMarket_US TrdMarket = 2 //美国市场
TrdMarket_TrdMarket_CN TrdMarket = 3 //大陆市场
TrdMarket_TrdMarket_HKCC TrdMarket = 4 //香港A股通市场
TrdMarket_TrdMarket_Futures TrdMarket = 5 //期货市场
)
获取账户信息数据,exchange.GetAccount()
函数返回:
{
"Info": [{
"Header": {
... // 省略
"TrdMarket": 1 // Info原始信息中,市场ID,表示该账户资产用于香港市场交易
},
"Funds": { // 账户在该市场的资产信息
...
}
}, ...],
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 1000000, // 当前市场的资产数值
"FrozenBalance": 0
}
FutuOpenD
根据登录的IP地址作为地区区分
对于非大陆IP地址登录的账户在获取行情数据时有所限制,具体可以查阅FutuOpenD
(富途)官方文档。Futures_Binance
支持币安期货双向持仓模式,可以使用exchange.IO
切换:
function main() {
exchange.IO("dual", true) // 切换为双向持仓
exchange.IO("dual", false) // 切换为单向持仓
}
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) // 切换为全仓
exchange.IO("cross", false) // 切换为逐仓
}
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) // 切换为统一账户模式
exchange.IO("unified", false) // 切换为普通模式
}
def main():
exchange.IO("unified", True)
exchange.IO("unified", False)
void main() {
exchange.IO("unified", true);
exchange.IO("unified", false);
}
支持设置币安现货/期货下单的STP模式:
function main() {
// "NONE" 表示禁用STP模式,其它参数有:"EXPIRE_TAKER", "EXPIRE_MAKER", "EXPIRE_BOTH"
exchange.IO("selfTradePreventionMode", "NONE")
}
def main():
exchange.IO("selfTradePreventionMode", "NONE")
void main() {
exchange.IO("selfTradePreventionMode", "NONE");
}
Futures_HuobiDM
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)
切换为单向持仓。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());
}
Futures_OKX(Futures_OKCoin/Futures_OKEX)
exchange.IO("simulate", true)
,即可切换为模拟盘环境。如果想切换为实盘环境使用exchange.IO("simulate", false)
切换为实盘即可,初始默认为实盘环境。exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式,初始默认为全仓模式。exchange.IO("dual", true)
切换为双向持仓,使用exchange.IO("dual", false)
切换为单向持仓。OKX(OKCoin/OKEX)
exchange.IO("simulate", true)
,即可切换为模拟盘环境。如果想切换为实盘环境使用exchange.IO("simulate", false)
切换为实盘即可,初始默认为实盘环境。Futures_Bibox
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式,初始默认为全仓模式。GetOrders
、GetTrades
函数。Futures_Bitget
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式。exchange.IO("dual", true)
切换为双向持仓,使用exchange.IO("dual", false)
切换为单向持仓。Futures_MEXC
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式。Futures_GateIO
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式。exchange.IO("dual", true)
切换为双向持仓,使用exchange.IO("dual", false)
切换为单向持仓。exchange.IO("unified", true)
切换统一账户;使用exchange.IO("unified", false)
切换回非统一账户。GateIO
exchange.IO("unified", true)
切换统一账户;使用exchange.IO("unified", false)
切换回非统一账户。Futures_Bybit
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式。exchange.IO("unified", true)
切换为统一保证金接口,使用exchange.IO("unified", false)
切换回普通合约接口。exchange.IO("dual", true)
切换为双向持仓,使用exchange.IO("dual", false)
切换为单向持仓。Futures_Pionex
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式。exchange.IO("dual", true)
切换为双向持仓,使用exchange.IO("dual", false)
切换为单向持仓。Futures_BitMEX
exchange.IO("cross", true)
切换为全仓模式,使用exchange.IO("cross", false)
切换为逐仓模式。BitMEX
Bitfinex
Futures_Phemex
exchange.IO("dual", true)
切换为双向持仓,使用exchange.IO("dual", false)
切换为单向持仓。Backpack 支持设置Backpack现货下单的STP模式:
function main() {
// "Allow" 表示允许自成交, "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)
切换为逐仓模式。