Títulos Futu
Ele suporta FutuNN negociação ao vivo e negociação de demonstração, você precisa baixarFutuOpenD
Aplicação.
Quando utilizadoFutuOpenD
Para acessar a negociação demo, alguns códigos de ações não são suportados, então você não pode negociar, mas o aplicativo móvel FutuOpenD é capaz de negociação demo.
Para a configuração de objetos de troca, em execuçãoFutuOpenD
Software, etc. no FMZ Quant, por favor consulteDocumento de Descrição da Configuração dos Títulos Futu.
Frequência das chamadas de interface
ParaGetOrder
, GetOrders
, GetPositions
, GetAccount
Funções utilizadasdados em cachepor defeito, por isso não há limite para a frequência de chamadas.
Quando novos dados estiverem disponíveis,FutuOpenD
Atualizará automaticamente os dados, edados em cacheserão atualizadas de forma sincronizada.
Oexchange.IO("refresh", true)
função pode ser chamada para desativar cache, sedesativar cacheentão a frequência de chamadas éMáximo de 10 consultas por 30 segundos, exceder o limite de frequência indicará um erro.
Código de acções
Por exemplo:600519.SH
O código de estratégia utiliza oexchange.SetContractType()
Função para definir o código de ações, por exemplo:
function main() {
var info = exchange.SetContractType("600519.SH") // Set to stock 600519.SH, namely Kweichow Moutai, and the account will be switched to the China mainland market
Log(info)
Log(exchange.GetAccount()) // The currently set stock is Kweichow Moutai. At this time, call the GetAccount function to obtain the account assets, which are the account assets of the China mainland market
Log(exchange.GetTicker()) // Obtain the current price information of Kweichow 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());
}
Funções para definir a direcção da transacçãoexchange.SetDirection
, funções de colocação de ordensexchange.Buy
/exchange.Sell
- Não.
A função de retiradaexchange.CancelOrder
e a função ordem de consultaexchange.GetOrder
são utilizadas da mesma forma que no mercado de futuros.
Formato dos dados de informação da conta:
Definir o mercado utilizandoTrdMarket
para distinguir entreHong Kong Market
, United States Market
, eChina Mainland Market
.
Exercícios doFutu API
Documentação:
const (
TrdMarket_TrdMarket_Unknown TrdMarket = 0 //Unknown Trading Market
TrdMarket_TrdMarket_HK TrdMarket = 1 //Hong Kong Trading Market
TrdMarket_TrdMarket_US TrdMarket = 2 //United States Trading Market
TrdMarket_TrdMarket_CN TrdMarket = 3 //China Mainland Trading Market
TrdMarket_TrdMarket_HKCC TrdMarket = 4 //Hong Kong A-share Trading Market
TrdMarket_TrdMarket_Futures TrdMarket = 5 //Futures Trading Market
)
Obter dados de informação da conta, oexchange.GetAccount()
Função retorna:
{
"Info": [{
"Header": {
... // omit
"TrdMarket": 1 // In the Info raw information, market ID, indicates that the account assets are used for trading in the Hong Kong market
},
"Funds": { // Information on the account's assets in that market
...
}
}, ...],
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 1000000, // Asset values in the current market
"FrozenBalance": 0
}
FutuOpenD
Distinguir por região com base nos registosP.I.Endereço
Existem restrições ao acesso aos dados de mercado para as contas iniciadas a partir de endereços IP não continentais, que podem ser encontrados na documentação oficial doFutuOpenD
.
Futures_Binance
Ele suporta o modo de posição dupla de futuros Binance; você pode usarexchange.IO
para trocar:
function main() {
var ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=true")
// ret : {"code":200,"msg":"success"}
Log(ret)
}
def main():
ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=false")
Log(ret)
void main() {
auto ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=true");
Log(ret);
}
Suporta a comutação entre posição cruzada/posição isolada:
function main() {
exchange.SetContractType("swap")
exchange.IO("cross", true) // Switch to crossed position
exchange.IO("cross", false) // Switch to isolated position
}
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);
}
Ele suporta a mudança para o modo de conta unificada da Binance:
function main() {
exchange.IO("unified", true) // Switch to unified account mode
exchange.IO("unified", false) // Switch to commom mode
}
def main():
exchange.IO("unified", True)
exchange.IO("unified", False)
void main() {
exchange.IO("unified", true);
exchange.IO("unified", false);
}
Suporta a configuração do modo STP para ordens Binance spot/futures:
function main() {
// "NONE" indicates that STP mode is disabled, other parameters are: "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", "")
para definir uma cadeia vazia.
Utilizaçãoexchange.IO("signHost", "https://aaa.xxx.xxx")
Para alterar o endereço de base da Huobi Futures que participa na verificação da assinatura.
Utilizaçãoexchange.IO("base", "https://bbb.xxx.xxx")
ouexchange.SetBase("https://bbb.xxx.xxx")
para alterar o endereço de base da interface da plataforma.XXX_USDT
, usar a funçãoexchange.SetContractType("swap")
para definir o código do contrato paraswap
Contrato perpétuo, utilizandoexchange.IO("cross", true)
pode mudar paraUSDT
- contrato perpétuo com margem no modo de posição cruzada.exchange.IO("cross", false)
O padrão inicial é o modo de posição isolada.exchange.IO("dual", true)
para mudar para uma posição bidireccional e utilizarexchange.IO("dual", false)
para mudar para uma posição unidirecional.Huobi
Troque de pares de negociação especiais:
Ele suporta tokens de alavancagem spot da Huobi, como:LINK*(-3)
; o código definido pela bolsa é:link3susdt
, que é escrito quando a FMZ Quant Trading Platform define o par de negociaçãoLINK3S_USDT
- Não.
Também é possível trocar pares de negociação na estratégia:
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());
}
Futuros_OKX(Futuros_OKCoin/Futuros_OKEX)
exchange.IO("simulate", true)
Se você quiser mudar para o ambiente de negociação real, useexchange.IO("simulate", false)
O padrão inicial é o ambiente de negociação ao vivo.exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada, o padrão inicial é o modo de posição cruzada.exchange.IO("dual", true)
para mudar para uma posição bidireccional e utilizarexchange.IO("dual", false)
para mudar para uma posição unidirecional.OKX ((OKCoin/OKEX)
exchange.IO("simulate", true)
Para mudar para o ambiente do bot de demonstração.exchange.IO("simulate", false)
para mudar para a negociação ao vivo, o padrão inicial é o ambiente de negociação ao vivo.Futures_Bibox
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada; o padrão inicial é o modo de posição cruzada.GetOrders
eGetTrades
funções não são suportadas.Futuros_Bitget
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.exchange.IO("dual", true)
para mudar para uma posição bidireccional eexchange.IO("dual", false)
para mudar para uma posição unidirecional.Futures_MEXC
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.Futures_GateIO
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.exchange.IO("dual", true)
para mudar para uma posição bidireccional eexchange.IO("dual", false)
para mudar para uma posição unidirecional.exchange.IO("unified", true)
para trocar de conta unificada;exchange.IO("unified", false)
para voltarem a utilizar contas não unificadas.Portão
exchange.IO("unified", true)
para mudar de conta unificada; utilizaçõesexchange.IO("unified", false)
para voltarem a utilizar contas não unificadas.Futures_Bybit
exchange.IO("cross", true)
para mudar para o modo de posição cruzada, utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.exchange.IO("unified", true)
para mudar para a interface de margem unificada, usarexchange.IO("unified", false)
para voltar à interface de contrato normal.exchange.IO("unified", true)
para mudar para a interface de margem unificada, eexchange.IO("unified", false)
para voltar a utilizar a interface comum de contratos.exchange.IO("dual", true)
para mudar para uma posição bidireccional eexchange.IO("dual", false)
para mudar para uma posição unidirecional.Futuros_Pionex
exchange.IO("cross", true)
para mudar para o modo de posição cruzada, utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.exchange.IO("dual", true)
para mudar para posições bidirecionais eexchange.IO("dual", false)
para mudar para posições unidirecionais.exchange.IO("dual", true)
para mudar para uma posição bidireccional eexchange.IO("dual", false)
para mudar para uma posição unidirecional.Futuros_BitMEX
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.BitMEX
Bitfinex
Futures_Phemex
exchange.IO("dual", true)
para mudar para uma posição bidireccional eexchange.IO("dual", false)
para mudar para uma posição unidirecional.Mochila Suporta a configuração do modo STP para ordens spot de mochila:
function main() {
// "Allow" means to allow self-dealing, "RejectTaker" "RejectMaker" "RejectBoth" "Allow"
exchange.IO("selfTradePreventionMode", "Allow")
}
def main():
exchange.IO("selfTradePreventionMode", "Allow")
void main() {
exchange.IO("selfTradePreventionMode", "Allow");
}
Futuros_CoinEx
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.Futuros_Aevo
xxx
, utilizarexchange.IO("signingKey", "xxx")
Observe que o signingKey tem um limite de tempo.exchange.IO
A função retorna a chave pública do signingKey.Futures_Kraken
multi-collateral
O contrato da bolsa Futures_Kraken suporta configurações de posição cruzada, posição isolada e alavancagem.
Utilizaçãoexchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.Futures_Crypto
accountId
- Não.
Utilizaçãoexchange.IO("accountId", "xxx")
para estabelecer contas.Gêmeos
exchange.IO("subAccount", "xxx")
para trocar de subcontas.Futuros_Aevo
Id
Descrição:
A ordem de trocaId
Consiste naId
O carimbo de hora e a ordem realId
O objectivo é apoiar oexchange.GetOrder(Id)
Uma vez que o carimbo de hora da ordem nos dados devolvidos pela troca mudará com o estado da ordem, se você precisar registrar a ordemId
e outras informações localmente, por favor, separar a ordem realId
record.Futuros_dYdX
exchange.IO("simulate", true)
, você pode alternar para o ambiente de rede de teste.exchange.IO("simulate", false)
, o padrão inicial é o ambiente de rede principal.exchange.IO("limitFee", 0.001)
Defina a taxa de taxa, o padrão é 0,001.exchange.IO("secondsOfValidity", 60 * 60 * 24 * 28)
define o período de validade. O padrão é 60 * 60 * 24 * 28.Futures_WOO
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.exchange.IO("dual", true)
para mudar para uma posição bidireccional e utilizarexchange.IO("dual", false)
para mudar para uma posição unidirecional.Futures_KuCoin
exchange.IO("cross", true)
para mudar para o modo de posição cruzada e utilizarexchange.IO("cross", false)
para mudar para o modo de posição isolada.