Titres de Futu
Il prend en charge FutuNN trading en direct et le trading de démonstration, vous devez téléchargerFutuOpenD
Une application.
Lors de l' utilisationFutuOpenD
Pour accéder au trading de démonstration, certains codes d'actions ne sont pas pris en charge, vous ne pouvez donc pas trader, mais l'application mobile FutuOpenD est capable de faire du trading de démonstration.
Pour la configuration des objets d'échange, exécutésFutuOpenD
logiciels, etc. sur FMZ Quant, veuillez vous référer àDocument de description de la configuration des titres Futu.
Fréquence des appels d'interface
PourGetOrder
, GetOrders
, GetPositions
, GetAccount
utilisation des fonctionsdonnées mises en cachepar défaut, donc il n'y a pas de limite à la fréquence des appels.
Lorsque de nouvelles données sont disponibles,FutuOpenD
mettra automatiquement à jour les données, etdonnées mises en cacheseront mises à jour en même temps.
Leexchange.IO("refresh", true)
fonction peut être appelée pour désactiver la mise en cache, sidésactiver le cachealors la fréquence des appels estmaximum de 10 requêtes par 30 secondes, le dépassement de la limite de fréquence signalera une erreur.
Code des actions
Par exemple:600519.SH
Le code de stratégie utilise leexchange.SetContractType()
fonction permettant de définir le code boursier, par exemple:
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());
}
Fonctions permettant de définir la direction de la transactionexchange.SetDirection
, des fonctions pour passer des ordresexchange.Buy
/exchange.Sell
Je suis désolée.
la fonction de retraitexchange.CancelOrder
et la fonction d'ordre de requêteexchange.GetOrder
sont utilisés de la même manière que sur le marché à terme.
Format des données relatives aux informations relatives au compte:
Définir le marché en utilisantTrdMarket
pour distinguerHong Kong Market
, United States Market
, etChina Mainland Market
.
Extrait de laFutu API
la documentation:
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
)
Obtenez les données d'informations de compte,exchange.GetAccount()
la fonction renvoie:
{
"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
Distinguer par région en fonction desIntégration intellectuellel'adresse
Il existe des restrictions d'accès aux données de marché pour les comptes connectés à partir d'adresses IP non continentales, qui peuvent être trouvées dans la documentation officielle deFutuOpenD
.
Les contrats à terme avec Binance
Il prend en charge le mode de double position des contrats à terme Binance; vous pouvez utiliserexchange.IO
Pour passer:
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);
}
Il prend en charge la commutation entre la position croisée et la position isolée:
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);
}
Il prend en charge le passage au mode de compte unifié 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);
}
Il prend en charge la configuration du mode STP pour les ordres 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");
}
Les contrats à terme
exchange.IO("signHost", "")
pour définir une chaîne vide.
Utilisationexchange.IO("signHost", "https://aaa.xxx.xxx")
modifier l'adresse de base de Huobi Futures participant à la vérification de la signature.
Utilisationexchange.IO("base", "https://bbb.xxx.xxx")
ouexchange.SetBase("https://bbb.xxx.xxx")
pour changer l'adresse de base de l'interface de la plateforme.XXX_USDT
, utilisez la fonctionexchange.SetContractType("swap")
pour régler le code du contrat àswap
le contrat perpétuel, en utilisantexchange.IO("cross", true)
peut passer àUSDT
- un contrat perpétuel à marge en mode position croisée.exchange.IO("cross", false)
Le paramètre par défaut initial est le mode de position isolée.exchange.IO("dual", true)
pour passer à une position bidirectionnelle et utiliserexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Huobi est un joueur.
Échangez des paires spéciales:
Il prend en charge les jetons Huobi au comptant, tels que:LINK*(-3)
; le code défini par la bourse est:link3susdt
, qui est écrit lorsque la plateforme de négociation FMZ Quant détermine la paire de négociationLINK3S_USDT
Je suis désolée.
Il est également possible de changer de paire de négociation dans la stratégie:
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());
}
Les échanges de titres de titres de titres de titres de titres de titres de titres
exchange.IO("simulate", true)
Si vous souhaitez passer à l'environnement de trading réel, utilisezexchange.IO("simulate", false)
La valeur par défaut initiale est l'environnement de trading en direct.exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée, la valeur par défaut initiale est le mode de position croisée.exchange.IO("dual", true)
pour passer à une position bidirectionnelle et utiliserexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Le montant de la dette est calculé à partir du montant de la dette.
exchange.IO("simulate", true)
Si vous voulez passer à l'environnement de trading en direct, utilisezexchange.IO("simulate", false)
pour passer à la négociation en direct, l'environnement de négociation en direct est le paramètre par défaut initial.Les échanges à terme
exchange.IO("cross", true)
pour passer au mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée; le paramètre par défaut initial est le mode de position croisée.GetOrders
etGetTrades
les fonctions ne sont pas prises en charge.Les contrats à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.exchange.IO("dual", true)
pour passer à une position bidirectionnelle etexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Les échanges à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.Les contrats à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.exchange.IO("dual", true)
pour passer à une position bidirectionnelle etexchange.IO("dual", false)
pour passer à une position unidirectionnelle.exchange.IO("unified", true)
pour changer de compte unifié;exchange.IO("unified", false)
de revenir à des comptes non unifiés.La porte
exchange.IO("unified", true)
pour changer de compte unifié; utiliseexchange.IO("unified", false)
de revenir à des comptes non unifiés.Les échanges à terme
exchange.IO("cross", true)
pour passer au mode position croisée, utiliserexchange.IO("cross", false)
pour passer en mode de position isolée.exchange.IO("unified", true)
pour passer à l'interface de marge unifiée, utiliserexchange.IO("unified", false)
pour revenir à l'interface contractuelle normale.exchange.IO("unified", true)
de passer à l'interface de marge unifiée, etexchange.IO("unified", false)
pour revenir à l'interface contractuelle commune.exchange.IO("dual", true)
pour passer à une position bidirectionnelle etexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Les contrats à terme
exchange.IO("cross", true)
pour passer au mode position croisée, utiliserexchange.IO("cross", false)
pour passer en mode de position isolée.exchange.IO("dual", true)
pour passer à des positions bidirectionnelles etexchange.IO("dual", false)
pour passer à des positions unidirectionnelles.exchange.IO("dual", true)
pour passer à une position bidirectionnelle etexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Les titres à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.BitMEX
Bitfinex
Les contrats à terme
exchange.IO("dual", true)
pour passer à une position bidirectionnelle etexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Sac à dos Il prend en charge le réglage du mode STP pour les commandes au comptant Backpack:
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");
}
Les échanges à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.Le montant de la garantie est calculé à partir du montant de la garantie
xxx
, utiliserexchange.IO("signingKey", "xxx")
Il faut noter que signingKey a une limite de temps.exchange.IO
La fonction renvoie la clé publique de signingKey.Les contrats à terme
multi-collateral
Le contrat de bourse Futures_Kraken prend en charge les réglages de position croisée, de position isolée et de levier.
Utilisationexchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.Les contrats à terme
accountId
Le texte est le suivant:
Utilisationexchange.IO("accountId", "xxx")
Pour régler les comptes.Gémeaux
exchange.IO("subAccount", "xxx")
pour changer de sous-compte.Le montant de la garantie est calculé à partir du montant de la garantie
Id
Définition:
L'ordre d'échangeId
Il s'agit de laId
L'heure et l'ordre réelId
Le but est de soutenir leexchange.GetOrder(Id)
Depuis l'horodatage de commande dans les données renvoyées par l'échange changera avec l'état de commande, si vous avez besoin d'enregistrer l'ordreId
et autres informations localement, veuillez séparer la commande réelleId
record.Les échanges à terme
exchange.IO("simulate", true)
Si vous voulez passer à l'environnement de réseau principal, utilisezexchange.IO("simulate", false)
, le paramètre par défaut initial est l'environnement de réseau principal.exchange.IO("limitFee", 0.001)
Définissez le taux des frais.exchange.IO("secondsOfValidity", 60 * 60 * 24 * 28)
La valeur par défaut est 60 * 60 * 24 * 28.Les contrats à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.exchange.IO("dual", true)
pour passer à une position bidirectionnelle et utiliserexchange.IO("dual", false)
pour passer à une position unidirectionnelle.Les contrats à terme
exchange.IO("cross", true)
pour passer en mode position croisée et utiliserexchange.IO("cross", false)
pour passer au mode de position isolée.