L'inconvénient de ce mécanisme est évident: sur une ligne K, il n'y a qu'une seule transaction, généralement basée sur le prix de clôture de la ligne K. Et une ligne K n'a accès qu'à quatre prix de rachat et d'achat, et aucune information n'est obtenue sur la façon dont les prix changent sur une ligne K, que le prix le plus élevé se produise d'abord ou le prix le plus bas se produise d'abord.
La plate-forme FMZ utilise deux types de régression à l'échelle de l'analogie et à l'échelle du disque réel. La régression à l'échelle de l'analogie génère une simulation basée sur le tick du cycle de la ligne K de base, qui générera 14 points de régression sur chaque cycle de la ligne K de base.Le niveau de disque réel est un vrai tick collecté, environ une fois toutes les quelques secondes, qui supporte actuellement une partie de la profondeur réelle (contient 20 fichiers) et de la transaction réelle par pioche.Les données sont volumineuses et le taux de retouche lent, ce qui ne permet pas de retoucher des temps particulièrement longs. Le mécanisme de retouche FMZ permet à la stratégie d'effectuer plusieurs transactions sur une ligne K, évitant ainsi de ne pouvoir conclure que des transactions à prix de vente, et est plus précis et prend en compte le taux de retouche.https://www.fmz.com/digest-topic/4009
Le cadre de stratégie de la répétition est le même que pour le disque dur, c'est un cycle mort. Comme la répétition saute sur différents points de répétition, il est possible de ne pas utiliser Sleep, qui saute automatiquement au point de temps suivant à la fin d'un cycle.Sleep(10)
Il a été arrêté à l'hôpital.
Le moteur de retouche se base sur le prix d'achat et le prix d'échange de l'utilisateur au moment du retouche. Si le prix d'achat est supérieur à celui de la vente, une transaction est vendue. Si la transaction n'est pas effectuée, une liste d'attente est générée.
GetRecords()
Les cycles par défaut des fonctions peuvent également être spécifiés dans le code.Comme nous l'avons dit plus haut, il est possible d'avoir des erreurs d'accès en utilisant l'API sur le disque dur.null
La stratégie consiste à faire preuve de tolérance aux erreurs, car cela entraînerait des erreurs et l'arrêt du disque dur.
Les erreurs courantes:
Avant d'utiliser l'API pour retourner les données, il est nécessaire de juger si elles sont nuls ou non. Voici une méthode couramment utilisée pour regrouper les données:
//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
Log('ticker 获取出错');
ticker = exchange.GetTicker();
}
Log(ticker.Last);
// 2.判断不为null再进行引用
var ticker = exchange.GetTicker();
if(!ticker){
Log(ticker.Last);
}
// 3._C()函数重试
var ticker = _C(exchange.GetTicker);
Log(ticker.Last);
// 4. try catch容错
try{
var ticker = exchange.GetTicker();
Log(ticker.Last);
}
catch(err){
Log('ticker 获取出错');
}
Si vous voulez obtenir des informations erronées, vous pouvez les utiliserGetLastError()
, qui renvoie la dernière chaîne d'informations d'erreur, et peut traiter les erreurs différemment.
Les articles publiés sur les forums sont souvent mal résumés:https://www.fmz.com/bbs-topic/1427Vous trouverez ci-dessous un résumé des problèmes que vous pouvez rencontrer en utilisant Ctrl+F.
Comment mettre en place des gardiens?
Pour plus de détails, voir la section Ajouter des hôtes.
Comment trouver des stratégies d'écriture pour les gens?
https://www.fmz.com/marketsCertains offrent des services de rédaction ou de conseil en groupe, mais ils ont besoin de contacts personnels à leurs propres risques.
Accéder à toutes les interfaces indique une date d'expiration
L'accès à l'interface de l'échange est retardé, ce qui n'est pas un problème si cela se produit de temps en temps, mais si vous êtes toujours invité à utiliser un serveur à l'étranger si le réseau dans lequel vous vous trouvez ne peut pas être accédé.
Une erreur est survenue.
Les erreurs du système de retouche, généralement des erreurs de stratégie, provoquent des tentatives de mise en place d'une position nulle ou d'un nombre insuffisant de positions.
symbole non défini
Les échanges de contrats à terme sont réévalués, il n'y a pas de contrats définis dans le code, voir la fonction exchange.SetContractType
BITMEX 429 erreur, {
error :{ message : Rate limit exceeded retry in 1 seconds...... }}
Les fréquences d'accès aux interfaces des bourses sont trop élevées.
L'heure est hors de portée.
Le serveur doit être mis à jour en fonction de la durée du serveur, il ne peut pas être trop dévié.
GetOrder ((455284455): Erreur: ID de commande invalide ou commande annulée.
Certains échanges ont annulé des commandes et n'ont pas accès à cette information, car ils ne la conservent pas.
Je suis désolée. Je suis désolée.
Une paire de transactions invalide est vérifiée pour vérifier si une erreur de configuration de la paire de transactions a été commise.
Déchiffrement de clé secrète échoué
Si vous avez modifié le mot de passe FMZ après la configuration d'APIKEY, essayez d'ajouter une page d'échange dans FMZ et de reconfigurer l'APIKEY de l'échange.
Signature not valid: Temps de soumission invalide ou format de temps incorrect
Il est recommandé d'utiliser un serveur Linux ou un logiciel de synchronisation de temps d'installation sur les systèmes Windows où le problème se pose.
Pourquoi mettre en place un agent global et empêcher les administrateurs d'accéder à l'API de l'échange?
Les agents mondiaux n'ont pas de ports réseau pour les hôtes d'agents, il est préférable de déployer des hôtes de serveurs étrangers en raison de problèmes de latence.
Comment les stratégies sont-elles conservées localement plutôt que sur les FMZ téléchargées?
L'utilisation de Python permet d'importer des fichiers locaux, d'enregistrer des stratégies normalement écrites selon l'API FMZ dans un fichier sur son propre serveur sous le chemin d'exécution, et de lire directement l'exécution.
#!python2.7
def run(runfile):
with open(runfile,"r") as f:
exec(f.read())
def main():
run('my.py')
Comment utiliser le testnet de l'échange ou modifier l'adresse de base de l'API
Vous pouvez utiliser l'exchange.SetBase (*) pour passer directement à l'adresse de base de l'API correspondante:
exchange.SetBase("https://www.okex.me")
le gaoencheerapes
La scienceJ'ai écrit une simple déclaration de sortie Log et j'ai suivi l'opération à la fin de la phrase. La première étape consiste à utiliser un ordinateur portable comme serveur et à exécuter le programme administrateur. La deuxième étape consiste à écrire un simple logiciel de test.py pour l'exportation des informations de Log (la fonction d'interface API de FMZ); La troisième étape, comme à la fin du texte, est d'écrire un runfile et d'appeler test.py via run.py.
- Je vous en prie.J'ai acheté un cours de quantification du cloud sur NetEase, mais je n'ai pas trouvé où aller maintenant.
MonurajakBeaucoup
MonurajakJe vous en prie.
Je ne sais pas.Apprendre
- Je ne sais pas.Il y a une petite erreur d'orthographe, GetAccount obtient le compte.
Je vous en prie, capitaine.getorder outtime: le temps d'expiration de l'ordre, l'échange d'Okex, comment faire?
Les 12 tours de l'OumuamuaLe taux d'actifs garantis n'est-il pas disponible et sera imposé à 0% au niveau des taux d'actifs garantis?
Le projet de loiJ'utilise un diagramme de k minutes, donc le temps de sommeil du cycle mort de Python peut être réglé à 0,1 s, c'est-à-dire à 100 s. J'ai vu que vous y avez écrit un sommeil de 10 s, c'est-à-dire que 0,1 s ne dépasse pas la limite de l'API de huobi HM.
Le bâtiment de l'EstExchange.SetDirection (("closebuy"); // Si c'est un contrat à durée indéterminée, installez directement exchange.SetDirection (("sell") J'ai essayé le contrat permanent OKex ici, et si vous le mettez sur sell, il est immédiatement vide, pas très bon marché.
Le bâtiment de l'EstExchange.SetDirection (("closebuy"); // Si c'est un contrat à durée indéterminée, installez directement exchange.SetDirection (("sell") J'ai essayé le contrat permanent OKex ici, et si vous le mettez sur sell, il est immédiatement vide, pas très bon marché.
Le bâtiment de l'EstIl y a deux fautes d'orthographe dans le code de GetOrders. Une fonction est écrite comme une fonction, l'autre comme une condition de la boucle for.
Le bâtiment de l'EstC'est moi qui ai fait une erreur. exchange.Buy ((-1, 0.5), la paire de transactions est ETH_BTC, le prix de vente représente l'achat d'ETH de 0.5BTC exchange.Buy ((price, 0.5), si c'est une liste de prix limitée, représente l'achat de 0.5ETH au prix de ce prix.
Le bâtiment de l'Estexchange.Buy ((-1, 0.5), la paire de transactions est ETH_BTC, ce qui représente l'achat d'ETH de 0.5BTC au prix du marché C'est le prix du marché pour acheter 0.5 ETH de lithium.
- Je vous en prie.Merci beaucoup.
Le foinIl est disponible en ligne depuis le début de l'année.
Le foinNous avons ajouté WeChat à la page d'accueil pour vous intégrer.
- Je ne sais pas.J'ai des problèmes à vous demander si vous avez un groupe de discussion officiel?
Le foinModifié
Le foinEncore une fois
Le foinVous pouvez utiliser GetRawJSON ou voir les informations dans les champs d'info.
Le bâtiment de l'EstC'est bien, c'est bien, et il y a aussi la réponse de l'administrateur.
Le foinOh, c'est corrigé, merci de souligner l'erreur.
Le foinCertains contrats perpétuels permettent de détenir des titres bidirectionnels et nécessitent une mise à niveau.