Les ressources ont été chargées... Je charge...

Résumé des questions fréquemment posées (mise à jour...)

Auteur:FMZ~Lydia, Créé à partir de 2023-07-13 14:44:41, Mis à jour à partir de 2024-02-05 20:04:06

[TOC] Je vous en prie.

img

Résumé des questions fréquemment posées (mise à jour...)

  • Comment trouver un mot-clé sur les messages? UtilisationCtrl + fpour ouvrir la page et effectuer une recherche; entrez un mot clé, par exemple: docker.

  • Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Le Weixin:

    img

Interface de l'API

  • Pourquoi?acheter un prixetvendre un prixobtenu parGetTickeret ceux obtenus parGetDepthsont différentes?

    Les donnéesGetTickeretGetDepthIl y a un retard de temps de cetrain, donc les données vont changer.GetTickersera un peu plus rapide, car les données sont inférieures à celles obtenues parGetDepth.

  • exchang.GetOrdersObtient les ordres inachevés, alors où obtenir les ordres exécutés?

    Il y a une autre API pour interroger les commandes, c'est,exchange.GetOrderIl interroge des commandes de tous types, selonIDEntrez l' ordreIDPar conséquent, pour obtenir des ordres exécutés, vous devez voir si les plates-formes fournissent ce type d'interfaces; les interfaces fournies par chaque plate-forme sont très différentes.

  • DansJavaScriptles stratégies, le résultat de la conversion de la chaîne de temps à l'horodatage est erroné.

    Vous devez considérer le fuseau horaire dans les paramètres horaires du système.

    img

  • Pourquoi le prix d'ouverture et le prix de clôture que j'ai imprimé sont les mêmes?

    1.Il se peut qu'à l'époque où vous avez imprimé, il n'y ait effectivement pas eu de négociation sur la plateforme, de sorte que les prix d'ouverture, de clôture, les prix les plus élevés et les prix les plus bas de BAR sont les mêmes depuis le début. 2.Vous devez vérifier si le BAR que vous avez observé est le dernier BAR, car les prix d'ouverture, de clôture, de plus et de plus bas du dernier BAR sont les mêmes.

  • Erreurs de vérification du temps avec le serveur, telles queSignature not valid:Invalid submission time or incorrect time format

    Cette erreur est le problème des anciens systèmes d'exploitation commewindows2000/2003/XP, veuillez vous reporter à:

https://support.microsoft.com/en-us/help/821893/the-system-clock-may-run-fast-when-you-use-the-acpi-power-management-t

Nous vous suggérons d' utiliserLinuxserveur, ou vous pouvez installer un logiciel de synchronisation du temps dans ceswindowsles systèmes où l'erreur se produit, pour synchroniser l'heure à haute fréquence et empêcher l'erreur de vérification de l'heure.

  • Pourquoi une différence entre les valeurs calculées parATR (TR) de Mylanguage et ceux calculés parTA/talibLa bibliothèque?

La raison en est que la méthode de calcul des indicateurs Mylanguage est incompatible avec l'algorithme sous-jacent deTA/talibLes deux sont corrects, mais les algorithmes sont différents.MACD, certains en utilisent unDIF-DEA, et certains utilisent deux foisDIF-DEA, qui sont toutes deux correctes.

  • Qu'est-ce que cela représente, si le nom de la plateforme estFutures_Esunny?

    Il représente l'objet d'échange deProtocole d'Esunny, qui peut être retourné par la fonctionexchange.GetName()Je suis désolée. Actuellement, la station internationale FMZ ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

    • Mylanguage fait référence aux données dans plusieurs périodes, après#EXPORTTEST...#ENDdéclaré les variables dans la référence du bloc de code multipériode.REFest utilisé lors de la référence dans la stratégie, les données seront référencées selon la période en cours, ce qui est différent de ce à quoi vous vous attendiez.

    Les données de plusieurs périodes dont vous avez besoin seront traitées en#EXPORTTEST...#END, vous pouvez donc l'utiliser directement en extérieur.

  • Je ne trouve pas la documentation de l'API FMZ.

    Vous pouvez entrer directement l'adresse de la page:https://www.fmz.com/api, ou cliquez sur le lien comme l' image suivante:

    img

  • Pourquoi?MACDLe calcul de la FMZ est différent de celui des plates-formes?

    Lors de la comparaison, il est nécessaire de vérifier si les périodes de la ligne K sont les mêmes, si lesMACDLes paramètres de l'indicateur sont les mêmes, les périodes sont les mêmes, et les symboles sont les mêmes.MACD; certains sontDIF-DEA, et certains sont2*(DIF-DEA); DIFetDEAdevrait être cohérente.

  • Qu'est-ce qui est relié au numéro de ligne K obtenu, lorsque les données historiques de ligne K sont obtenues?

    Lorsque vous accédez auexchange.GetRecordsDans ce cas, le docker appellera l'interface pour obtenir les données d'historique de trading de la plateforme lorsque la stratégie appelle.exchange.GetRecords. L'interface de données synthétise la ligne K en fonction de l'historique des transactions). Les lignes K reçues par le docker seront continuellement accumulées ensemble, et il est nécessaire d'accéder à laexchange.GetRecordsl'interface avec une certaine fréquence, sinon la continuité des données peut être affectée.

  • Je trouve que l'appel de la fonctionexchange.Buyuniquement des retoursIDdans la documentation de l'API, mais pourquoi renvoie-t-il tant d'informations quand je fonctionne?

    Les fonctions qui peuvent générer l'exportation de journaux dans les fonctions FMZ API, telles queLog, exchange.Buy, exchange.CancelOrder, etc., peuvent tous être suivis de quelques paramètres supplémentaires après les paramètres nécessaires.exchange.CancelOrder(orders[i].Id, orders[j])Exporte également les informations de commande lors de l'annulationorders[j].

  • Comment effectuer un message WeChat Push dans un bot?

    WeChat push est valable uniquement sur les robots; ajouter'@'à la fin de laLogLa fonction, puis l'information imprimée de laLogVous trouverez les détails dans le document API à l'adresse:https://www.fmz.com/api#LogActuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cnJe suis désolée. Le WeChat push n'est pris en charge que dans la station nationale de FMZ.

  • Les contrats à terme sur matières premières peuvent-ils utiliser des contrats continus principaux et des contrats indiciels?

    Il prend en charge les principaux contrats continus et les contrats indiciels des contrats à terme sur matières premières. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • var records = exchange.GetRecords(PERIOD_D1)Qu'est-ce que je dois écrire si je veux obtenir les données K-line quotidienne du contrat spécifique, telles que les données K-line de RB ou I?

    Vous devriez mettrecode du contratLe code de contrat doit être défini une fois avant l'obtention du TAQ (au moins une fois depuis le début du programme).SetContractType("rb1805"), Réglez le contrat en cours àrb1805Appelez à nouveau l'API qui obtient TAQ, vous pouvez obtenir les données TAQ du contrat rb1805. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Comment écrire le code du contrat des contrats à terme sur matières premières?

    Vous pouvez consulter la documentation de l'API FMZ. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Je veux.exchange.GetAccountLes utilisateurs doivent-ils gérer eux-mêmes l'échec de la demande? Pourquoi le fonctionnaire FMZ ne s'en occupe-t-il pas? N'est-il pas plus pratique pour les utilisateurs de l'utiliser de cette façon?

    Il y aura des défaillances qui obligeront les utilisateurs à faire une tolérance aux pannes. La couche sous-jacente de FMZ ne traite pas les données et les données renvoyées aux utilisateurs sont des données non traitées. La méthode ou la logique de tolérance aux pannes spécifique est formulée par la stratégie spécifique. Parce que si elle est traitée, elle peut affecter la décision des utilisateurs, et la décision sera traitée par la stratégie, qui se réfère spécifiquement àinformations d'erreur de filtrageouréessayeret d'autres méthodes de traitement.

  • Quelle est l'unité du volume des commandes d'un contrat OKEX?

    Le volume des ordres d'un contrat OKEX est calculé par le montant du contrat; par exemple,exchange.Buy(1000,1)désigne la passation d'une commande au prix de 1000, le montant du contrat étant de 1.

  • Cela signifie-t-il que je dois limiter mes commandes quand j'appelle?exchange.Selletexchange.Buysur FMZ?

    Pour plus de détails, vous devez regarder le premier paramètre transmis (le premier paramètre est le prix de l'ordre).-1Les significations du volume d'achat et du volume de vente sont en quelque sorte différentes (le deuxième paramètre), et si le prix n'est pas-1Dans la plupart des interfaces d'ordre de plateforme au comptant, le volume d'ordre de l'ordre d'achat du marché est demontant de l'actifJe ne sais pas.montant de la pièceDans les interfaces de commande des plateformes de contrats à terme de crypto-monnaie, le volume de commande est généralement un nombre entier du montant du contrat.

    Vérifiez les interfaces de commande:https://www.fmz.com/api#exchange.buyprice-amount https://www.fmz.com/api#exchange.sellprice-amount

  • Fonction de courrier

    Mail("smtp.qq.com", "xxxx@qq.com", "xxx", "xxx@qq.com", "test title", "test body")
    

    Accès au QQs smtp203.205.232.7Actuellement, la plupart des serveurs cloud sont protégés du port 25, sauf pour les serveurs physiques, les opérateurs ne protègent pas le port 25.

  • Paramètres de modèle pour Pine language, Mylanguage: le nombre de périodes maximales de la variable affecte le calcul de l'indicateur

Par défaut, le nombre maximum de périodes variable est 600, si le paramètre de l'indicateur est trop grand, par exemple pour calculer MA ((1000).

Rapport d'erreur

  • Message d'erreur popup: SyntaxError: nom de variable attendu.

Vérifiez s'il manque un nom de variable lors de la déclaration d'une variable, par exemple en oubliant d'écrire le nom dans var name = a. Vérifiez également si des mots-clés de langage de programmation ont été utilisés lors de la définition des paramètres d'interface de stratégie. Il n'est pas recommandé d'utiliser des mots-clés de langage de programmation couramment utilisés comme noms de variables, car cela peut entraîner des conflits, même si le langage de programmation actuel n'a pas ce mot-clé spécifique.

  • BITMEX429 erreur,{"error":{"message":"Rate limit exceeded retry in 1seconds……"}}

    Quand vous voyez l'erreur 429, cela signifie que la fréquence d'accès à une plateforme est trop élevée.

  • Only support CTPerreur

    Ça veut dire que vous avez appelé unles contrats à terme sur matières premières CTPl'interface ou la bibliothèque dans unstratégie de cryptomonnaieJe suis désolée. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Bittrexerreur dans les robots:{"success":false,"message":"NOT_ALLOWED","result":null}

    Vous pouvez vous connecter sur le site Web deBittrex, et voir s'il est nécessaire de vérifier les informations, telles que l'accord utilisateur.

  • Erreur d'opération de bot:TypeError:value has no property at

    img

    Parce que les erreurs signalées dans le backtest et le bot sont différentes, cette erreur ne peut pas être détectée pendant le backtest.

  • unable to open databaseerreur

    imgSi le système estMac OSLe système, faites attention à vérifier si c'est le problème d'un permis. Ou, il pourrait être l'erreur causée par l'espace plein du disque dur de l'appareil, ce qui a désactivé la création du fichier de base de données bot.

  • Erreur:do not support the function

    Il se réfère à la situation où l'objet d'échange ajouté lors du backtest est une plateforme de spot de crypto-monnaie, mais la fonction API des contrats à terme est appelée dans le code.

  • Erreur:in SetCurrency OSError: exception: access violation reading 0x000000FCF25F0000

    Dans un futur de crypto-monnaiePythonDans le cas d'une stratégie, le système de backtest utilise un docker privé, et la paire de trading est commutée dans le code, ce qui provoque la déclaration de l'erreur. La raison en est que le système de backtest ne prend pas en charge le backtest des contrats à terme de crypto-monnaie pour changer de paire de négociation.

  • Erreur déchiffré [Illustration]imgEn raison du mot de passe du compte FMZ a été modifié, qui a rendu la clé API configurée invalide, et a soulevé l'erreur. Solution: configurez à nouveau la plateforme API KEY, arrêtez et redémarrez le docker, puis essayez de redémarrer le bot.

  • Pythonles rapports locaux des tests de retour du moteurEOFerror.

    EOFl'erreur est l'erreur à la fin du backtest. attraper l'exception est suffisant et vous pouvez l'appeler n'importe oùPythonest soutenue.

 # encoding: utf-8  

 '''backtest
 start: 2021-08-30 00:00:00
 end: 2022-09-05 00:00:00
 period: 1d
 basePeriod: 1h
 exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
 '''

 from fmz import *
 task = VCtx(__doc__)             # initialize backtest engine from __doc__  

 def main():  

     while not exchange.IO("status"):
         Sleep(1000)
     exchange.SetContractType("swap")
     
     while True:
         bars_1min = _C(exchange.GetRecords, PERIOD_M1)    # Get 1min K-line              
         print(len(bars_1min))
         _CDelay(2000)      

 # Calling the main function  

 try:
     main()
 except:
     print(task.Join(False))
  • Mylanguage implique une erreur très cachée de calcul de la période, et la valeur calculée peut être N/A, comme dans l'exemple suivant:

    img

    La raison en est que le paramètre de période de calcul dépasse la plage de données, ce qui entraîne le calcul de la valeur N/A. Méthode de traitement:

    img

  • Une erreur s'est produite dans Mylanguage: erreur d'analyse, et la stratégie ne contient que du code simple, le nombre de lignes d'erreur est très long, et la cause de l'erreur ne peut pas être trouvée.

    Il peut s'agir d'une erreur causée par le problème des premiers modèles de Mylanguage. Solution: 1. Exporter la stratégie sous forme de fichier xml. 2. Créer une nouvelle stratégie Mylanguage vide. 3. Importer le fichier xml dans la stratégie vide nouvellement créée. 4. Ajouter un bot pour tester.

  • Erreur:fatal error:unexpected signal during runtime execution...go routine 11[syscall,locked to thread]

    Vérifiez si la stratégie écrite dansC++utilise un pointeur nul, et vous suggère d'utiliser le mode de rétro-test tolérant aux défauts pour détecter.

    img

  • Erreur d'appelexchange.SetMarginLevel(10): Futures_OP 0:403:{"error":{"message":"Access Denied","name":"HTTPError"}}

    Vérifiez si les privilèges connexes duAPI KEYLes applications de la plateforme sont activées.

  • Erreur de test arrière:symbol not set

    C'est parce que vous n'avez pas défini le contrat dans le code lors du backtest de la plateforme de contrats à terme; vous pouvez vous référer à laexchange.SetContractTypefonction dans la documentation API.

  • ErreurERR_INVALID_POSITION

    Si le système de backtest signale l'erreur, il s'agit généralement d'une erreur causée par des erreurs d'écriture de stratégie. Si vous essayez de placer un ordre pour fermer une position lorsqu'il n'y a pas de position ou que le nombre de positions est insuffisant, l'erreur sera signalée. Vérifiez s'il y a un gel de position causé par des ordres inachevés.

  • ErreurERR_INVALID_ORDERSi le système de backtest rapporte l'erreur, il s'agit généralement d'une erreur causée par des erreurs d'écriture de stratégie. Vous devez vérifier le prix de l'ordre (les contrats à terme de crypto-monnaie dans le système de backtest ne prennent temporairement pas en charge les ordres de marché), que le volume de l'ordre soit 0, un nombre négatif ou une fraction décimale (le volume de l'ordre des contrats à terme est calculé par le montant du contrat, qui est un entier).

  • ErreurERR_INSUFFICIENT_ASSET

    Si le backtest rapporte l'erreur, il indique normalement que le montant des actifs disponibles n'est pas suffisant pour passer la commande en cours.

  • Binding Error:Cannot passnon-string to std::stringinformations d'erreur

    Dans les codes de stratégie, l'erreur est généralement causée par la mauvaise saisie d'un nom d'attribut (en utilisant un attribut non défini).

  • Erreur{"status":6004,"msg":"timestamp is out of range"}

    L'erreur signifie que l'horodatage du serveur est hors de portée, et vous devez mettre à jour le timestamp du serveur, sans déviation importante.

  • Erreurtimeout

    L'erreur est une erreur de temps d'arrêt, qui indique une erreur signalée en raison de ne pas obtenir les données de réponse de l'interface de la plate-forme pendant une certaine période de temps après avoir accédé à l'interface de la plate-forme.

  • Erreur dans le bot en cours d' exécution après la rédaction de stratégie:syntax error invalid label

    Source de l'erreur:

    function main(){
        if(1){
            continue
        }
    }
    //That will cause the error during operation 
    

    continueLa déclaration doit être utilisée dans la boucle!

  • Erreur:(CTP_T@9999)Error:140CTP:change the password when first log in, and please log in again after changingQuel mot de passe a été modifié?

    Ici, il indique à modifiersimnowmot de passe du compte; lorsque vous utilisez un compte de société de contrats à terme spécifique pour vous connecter, vous devez également modifier le mot de passe pour la première connexion (un nouveau compte a un mot de passe initial et vous ne pouvez pas utiliser le compte sans modifier le mot de passe initial). Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Erreur:400:{"error":{"message":"Nonce is not increasing.This nonce:1523891993165,last nonce:1523891993165","name":"HTTPError"}}

    C'est unenonceerreur de vérification, et les informations relatives à l'erreurnonceVous pouvez essayer de synchroniser l'heure du système où se trouve le bot docker.

  • ErreurSecretkey decrypt failed

    img

    L'erreur indique l'échec du décryptageAPI KEY. Vérifiez si vous avez modifié le mot de passe du compte FMZ après avoir configuré leAPI KEYEssayez de configurer leAPI KEYsur la page Ajouter une plateforme de FMZ, redémarrez le docker, et exécutez le bot à nouveau pour tester.

  • Position ouverte sur les contrats à terme sur matières premières Erreur:CTP: only close position

    Il y a plusieurs raisons pour lesquelles le récit montre le statut decan only close position. Il se peut que le compte ait été gelé (il n'a pas été utilisé depuis longtemps, plus d'un an), ou qu'il soit connecté au mauvais canal (CTP a beaucoup de sièges). Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Quelle pourrait être la raison si l' erreur:GetOrder(455284455):Error:invalid order id or order canceled.Il est toujours élevé quand je l'appelle.exchange.Getorder?

    Signification littérale: la commande a été annulée ou l'identifiant de commande est invalide. Raison: dans certaines plateformes, si vous annulez une commande, les informations de commande ne seront pas conservées et seront éliminées.exchange.GetOrder, l'erreur sera signalée, ou l'identifiant de commande que vous demandez est initialement incorrect.

  • Erreur: limite de taux, 429 Trop de demandes

    img

    rate limit, 429 Too Many Requestsindique que la fréquence d'accès à une interface de plateforme est trop élevée, vous devez donc réduire la fréquence d'accès à l'interface de plateforme.

  • Toujours levé.Invalid order price/amountdans le bot et le backtest

    Ce genre d'erreurs sont causées par le mauvais prix et le volume d'ordre passé lors de l'appel de la fonction d'ordreexchange.Buyouexchange.SellPour.volume de commande négatif, 0et d'autres méthodes de détection d'erreurs: vous pouvez appelerLogpour exporter le paramètre de prix ou de volume à passer avant de passer une commande parexchange.Buyouexchange.Sell, pour déterminer le problème.

  • Quel genre d'erreur estGetOrders:400:{"code":-1121,"msg":"Invalid symbol."}?

    L'erreur signifie:paire de négociation invalideVous devez vérifier si le réglage de la paire de trading est erroné.

  • Qu'est-ce que cela signifie s'il y a des codes d'erreur quand les journaux du bot signalent une erreur?

    Vous pouvez voir les explications des codes d'erreur renvoyés par différentes interfaces de plateforme dans la documentation API de ces plateformes.

Le robot

  • Temps d'impression de la courbe de rendement du marché réel de Pine language et Mylanguage Imprimez régulièrement selon les paramètres du modèle Pine language/Mylanguage et imprimez lorsque la stratégie est complètement fermée.

  • Le bot Mylanguage imprime le nombre de lignes de déclenchement du signal, mais il n'y a pas d'opération d'ordre.

    Il se peut que les paramètres du modèle Mylanguage soient inappropriés, tels que la précision, le volume minimum des commandes et d'autres paramètres. Vous pouvez consulter les messages liés à Mylanaguage:https://www.fmz.com/bbs-topic/9788 https://www.fmz.com/bbs-topic/9791

  • Pourquoi le bot ne peut-il pas recevoir le signal de demande alors que j'ai déjà mis l'alerte d'url de webhook sur Tradingview?

    Vérifiez si l'API KEY est correcte dans l'adresse d'url du webhook. L'API KEY ici fait référence à l'API KEY étendue de FMZ, qui est définie dans les paramètres de compte dans le coin supérieur droit de FMZ. Vérifiez si l'ID de bot dans l'url du webhook est correctement rempli. Vérifiez si les privilèges de l'API KEY étendue de FMZ sont donnés correctement. Les privilèges sont séparés par des virgules en anglais. Le paramètre par défaut est *, ce qui signifie tous les privilèges. N'écrivez pas les noms de fonction avec les privilèges directement après *.

  • Pourquoi les symboles de paire de devises sont limités dans la configuration de paire de trading de la plateforme lors de l'ajout d'un bot?

    Vous pouvez définir le contrôle personnalisé des paires de trading (il ne peut être défini que dans les bots; pour les symboles dans le centre de données de backtest sont limités, il ne peut pas être défini dans le backtest), comme suit:

    img

  • Pourquoi les tickers ne peuvent pas être obtenus lorsque j'exécute FutuOpenD sur le serveur, et les tickers peuvent-ils être obtenus sur l'appareil local?

    Vous devez vérifier si l'adresse IP du serveur est à l'étranger, car FutuOpenD a des limites sur les adresses IP à l'étranger. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Aucune action lorsque la stratégie Mylanguage est mise en œuvre, et elle ne met à jour que la TAQ au début.

    Vérifiez si vous avez utilisé le modèle de prix de clôture, qui peut être vérifié par les paramètres du modèle de stratégie Mylanguage.

  • Problème des contrats à terme sur matières premières

    Dans CTP, seule la Bourse des contrats à terme de Shanghai peut être utilisée pour fermer les positions d'aujourd'hui et les positions d'hier.
    Le backtest ne fait pas de distinctionles positions actuellesdeles positions d'hier, il ne peut donc pas spécifier la fermeture des positions d'aujourd'hui ou d'hier. Certains symboles dans les robots, commeIF, a l'option par défaut que si il y a des positions aujourd'hui, il fermera les positions aujourd'hui en premier. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

  • Pourquoi l'horodatage d'un bar dansBITMEXLes données de ligne K ont une période de plus que celle du même emplacement dans d'autres données de ligne K de plateforme?

    La raison en estBITMEXprend l'heure de fin de la barre actuelle comme l'horodatage de la ligne K (certaines périodes de ligne K ne sont pas prises en charge parBITMEXPar exemple, la figure droite:

    img

  • Dans la stratégie des contrats à terme sur matières premières, leProfitdans les données renvoyées par la fonctionexchange.GetPositionest-il différent du résultat variable calculé?

    Veuillez consulter la documentation de l'API:https://www.fmz.com/api#exchange.getposition. ProfitdansCTP protocolest défini commeles bénéfices et pertes évalués au taux du marché, qui représente le bénéfice et la perte de votre position actuelle par rapport au prix de règlement du jour de négociation précédent. Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.

Système de contre-test

  • Erreur signalée par le système de backtesting: Erreur signalée par le système de backtesting:
Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.

Vérifiez si la fonctionnalité Custom Data Source est utilisée et si les données fournies par le service de source de données personnalisée sont correctes.

  • Comment calculer les frais des participants à l'examen? Scénarios d'essais pour les frais d'acheteur/producteur.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-02-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

function main() {
    var t = exchange.GetTicker()
    exchange.Buy(t.Last - 10, 100/(t.Last - 10))
  
    while(1){
        t = exchange.GetTicker()
        Sleep(1000)
    }
}
  • Dans le backtest des contrats à terme Binance etBITMEX, le taux de financement est-il calculé dans la courbe de profits et pertes générée par le système de backtest?

    Le taux de financement est calculé dans la courbe de profits et pertes générée par le système de backtest.

  • Le bouton Backtest ne peut pas être cliqué.

    Vous devez vérifier si le proxy est activé, ce qui influencera la fin du chargement des fichiers sur la page de Backtest; vérifiez s'il y a des informations d'erreur sur la console de page.

  • Dans leUne vraie tiquePourquoi y a-t-il une limite de 50 Mo?

    Le backtest au niveau du marché réel indique que dans le Tick réel, le TAQ est en fait enregistré seconde par seconde. En outre, il existe des instantanés de marché et des données de flux de commandes, qui sont de grand volume, de sorte que seulement 50 Mo de volume de données sont pris en charge. C'est-à-dire que le maximum de la plage de temps au niveau du marché réel est de plusieurs heures et que le temps de backtest ne peut pas être prolongé. Le backtest au niveau du marché réel est principalement utilisé pour tester des stratégies à haute fréquence.

  • Pourquoi ça n'a pas fonctionné quand j'ai modifié les paramètres de frais dans le système de backtest?

    img

    Dans le système de backtest, lorsque vous réinitialisez les paramètres de frais, ils seront valables après avoir supprimé l'ancienne paire plateforme-échange et ajouté à nouveau la paire plateforme-échange; la paire plateforme-échange précédemment ajoutée ne peut pas être modifiée par le contrôle de la page.

  • Comment faire pour que le dessin personnalisé de backtest affiche plus de données?

    Lorsque vous dessinez un graphique personnalisé (par leChartLe volume de données du dessin affiché dans le backtest est lié à lagraphiqueLes paramètres de la carte sont définis par le paramètre de la barre dans les paramètres de backtest, et le paramètre contrôle le nombre maximal de barres d'un graphique.chart.resetfonction est utilisée pour effacer une partie des anciennes données.

  • C++Le backtest n'affichait rien, il n'y avait pas d'erreur signalée et aucun journal, et rien sur la page n'a changé après que j'ai cliqué sur le bouton.

    Certaines erreurs deC++Les stratégies ne seront pas soulevées, de sorte que vous pouvez utiliser la méthode d'exclusion pour détecter les erreurs éventuelles qui pourraient se produire au cours de l'opération, niveau par niveau.NANet type de numéro aprèsNANest calculé, ce qui provoquera l'effondrement du programme.

  • pythonLe backtest est coincé!

    Vous ne pouvez pas écrire la fonctionSleepdans letrydétection d'erreur, et l'écriture dans l'image provoquera le blocage.

    img

  • Dans le backtest, pourquoi y a-t-il seulement plusieurs options pour la plate-forme, et les symboles pour les paires de trading sont également limités?

    Il y a trop de paires de trading sur les plateformes, donc seulement quelques paires de trading représentatives ont été sélectionnées pour le test dans le système de backtest.contrôle personnalisépour définir les paires de négociation prises en charge par ces plateformes dans des robots.

  • Pourquoi le backtest ne supporte pas plus de paires de trading?

    Le système de backtest, pour le moment, ne prend en charge que les devises traditionnelles de certaines plates-formes relativement grandes, et certaines devises ne sont pas encore prises en charge. Si vous avez besoin de tester une stratégie, vous pouvez remplacer les devises par d'autres devises similaires dans le backtest. En fait, sauf que les cotations du marché peuvent être affectées, l'utilisation d'autres crypto-monnaies similaires pour backtest la stratégie est correcte. En termes simples, le système de backtest essaie de prendre en charge les paires de trading traditionnelles, et le backtest ne devrait pas correspondre à un symbole spécifique. C'est-à-dire que si la stratégie est efficace, même si c'est une série de changements de cotation de marché générés aléatoirement avec des règles de trading, ou les cotations de marché d'autres devises, il devrait y avoir des profits fondamentalement positifs. C'est l'universalité d'une stratégie. Si elle ne peut correspondre qu'à une période d'histoire ou bien fonctionner sur un certain symbole, alors

  • Dans le système de backtest:P&L de clôture, P&L détenu, Marge, Rentabilité estimée, USDT actuellement disponible

    P&L de clôture: Il s'agit du bénéfice et des pertes cumulés de toutes les transactions ouvertes et clôturées avant la position actuelle. P&L détenu: Il s'agit du bénéfice et de la perte de la position en cours, si la position en cours n'est pas détenue, il s'agit de 0, Marge: le montant de la marge occupée par la position en cours. Rentabilité estimée: les bénéfices et pertes générés par la clôture de la position actuelle au prix actuel (hypothétique) sont ensuite ajoutés aux bénéfices et pertes cumulés de la position fermée pour calculer le rendement estimé. Le montant de l'épargne-investissement est calculé en fonction de la valeur de l'épargne-investissement.

  • Calcul du taux de réussite dans le système de backtest

    for (var i = 0; i < profits.length; i++) {
        if (i == 0) {
            if (profits[i][1] > 0) {
                winningResult++
            }
        } else {
            if (profits[i][1] > profits[i - 1][1]) {
                winningResult++
            }
        }
        if ((profits[i][1] + totalAssets) > maxAssets) {
            maxAssets = profits[i][1] + totalAssets
            maxAssetsTime = profits[i][0]
        }
        if (maxAssets > 0) {
            var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
            if (drawDown > maxDrawdown) {
                maxDrawdown = drawDown
                maxDrawdownTime = profits[i][0]
                maxDrawdownStartTime = maxAssetsTime
            }
        }
    }
    

    Ce qui précède est l'algorithme du taux de réussite, qui est calculé comme suit: Après que le système de backtest ait régulièrement calculé le bénéfice et la perte flottants, une courbe de profit et de perte flottante est calculée. Commencez à partir du premier point pour comparer avec le point suivant.

Docker

  • Où est la vidéo pédagogique de déploiementLinuxLe docker?

    Bilibili:https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web

  • Est-il nécessaire d'arrêter l'ancien lorsque je met à jour le docker, et supprimer lerobotLe programme, et l'exécuter à nouveau?

    Vous pouvez supprimer directement l'ancienrobotprogramme sans arrêter le docker, puis télécharger un nouveau paquet compressé, décompresser le nouveaurobotLe docker est mis à jour, mais le bot en cours d'exécution utilise toujours l'ancienne version en mémoire, et la dernière version ne sera utilisée que lorsque le bot sera redémarré.

  • Déploiement de Docker deLinuxserveur

    Étapes pour installer un docker surLinux: https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web

  • Lors de l' utilisationscreenPour exécuter le programme dockerrobot, -bash:screen:command not foundle docker ne peut pas fonctionner.

    Linuxle système ne s'installe passcreenLe logiciel et l'installation générale suffisent.CentOScommande d'installation du système:yum install screen.

    Le docker actuel prend déjà en chargeSSHpour débrancher le commutateur pour exécuter en arrière-plan.screen, vous pouvez utiliser directement la commande dans lerobotle répertoire du programme docker:./robot -s node.fmz.com/xxxxxxx, et entrez le mot de passe du compte FMZ;Login OKSi l'affichage de l'écran de déploiement est affiché, cela signifie que le déploiement a été effectué avec succès../robot -s node.fmz.com/xxxxxxxest le code d'identification unique de chaque compte FMZ, et entrez simplement le vôtre (après la connexion du compte, passez à la page docker, cliquez sur Add docker à la page Add docker pour voir);xxxxxxx.

  • Où est le journal du bot quand un docker exécute un bot?

    Dans leDB3fichier de base de données dans lelogsle répertoire où se trouve le programme docker, le nom du fichier de base de données est leiddu bot, et l'extension estdb3.

  • DansLinuxsystème, utilisation./robot -lPour voir les noms des plates-formes prises en charge par le docker, quelle plate-forme est laexchangeparmi les noms?

    L'objet d'échange dontNomestexchangedésigne la plateforme quiProtocole généralLes détails du protocole général:https://www.fmz.com/api#通用协议

  • La page du dockers n'affiche pas les dockers au format de liste.

    Si plus de 5 dockers sont ajoutés, une commande pour afficher en format liste apparaîtra.

    img

  • Est-il normal qu'il y ait un docker non déployé par moi-même dans la boîte de combo du paramètre docker lors de la création d'un bot?

    Le docker public fourni par FMZ est un outil de démarrage rapide supplémentaire pour les débutants, de sorte que les utilisateurs n'ont pas besoin de déployer un docker lors de l'apprentissage, et il est facile pour les débutants de commencer.

  • Est la chaîne d'adresses (./robot -s node.fmz.com/1234567) exclusivement pour moi ou pour d'autres, lors du déploiement d'un docker?

    Cette adresse est l'identifiant d'adresse propre à chaque utilisateur, et la valeur de la/1234567Une partie de chaque utilisateur est unique pour identifier l'utilisateur.Tableau de bord-> cliquezAjouter le docker->Ajouter une page docker, et puis vous pouvez voir cette adresse; copier et coller directement et vous pouvez l' utiliser.

  • La variable environnementale du système où se trouve le docker a ajoutépython2.7, mais pourquoi est-il toujours demandé que la variable environnementale ne peut pas être trouvée?

    img

    Quand?windowsle système installe pour la première foispython, vous devez définir la variable d'environnement et redémarrer pour la rendre valide.

La recherche

  • Erreur EOF

    img

    Python backtest est terminé par une exception EOF (parce que parfois une stratégie peut être une boucle infinie).

Fonction de la plateforme

  • Combien de robots peut faire fonctionner un docker?

    Il n'y a pas de limite au nombre, en fonction de la configuration du serveur et de la complexité de la stratégie. Plus précisément, il est nécessaire de considérer si ces multiples bots accèdent à la même interface de plateforme (en tenant compte de la fréquence des appels d'interface, car plus de bots signifient une fréquence plus élevée); généralement, 5 à 6 bots sont acceptables.

  • Docker, Bot et autres explications de concepts de base

    https://www.fmz.com/bbs-topic/9152

  • Le contenu des pages Bot et Docker disparaît

    Si le contenu du bot et de la page docker ont tous disparu, lorsque le bot et le docker sont tous deux en cours d'exécution normalement sur le serveur, vous devez lire le message de rapport d'erreur du navigateur, pour voir si le navigateur a un plugin installé, ce qui provoque le problème de pollution variable globale.

  • Pour les stratégies officielles de location et de location en un clic d'un serveur docker, les frais seront-ils automatiquement renouvelés, tant que le solde du compte FMZ est suffisant?

    Les stratégies louées ne chargeront pas automatiquement les frais, et la location d'un docker en un clic se chargera automatiquement.

  • Je veux séparer certaines fonctions dans le modèle, afin que d'autres stratégies puissent aussi les utiliser.

    La description dansFMZ APIles documents suivants:https://www.fmz.com/api#模板类库

  • Est-ce que lewexAppla plateforme de simulation de FMZ simulé bot seulement fournirBTC_USDTComment puis-je personnaliser d'autres paires de trading?

    wexApple robot simulé ne prend en charge que quelques paires de trading traditionnelles pour le moment, et toutes les paires de trading ne sont pas simulées.

  • J'ai un problème d'appels simultanés à l'API étendue, c'est-à-dire qu'une erreur de vérification nonce est toujours signalée pendant la simultané.

    Vous pouvez créer plusieurs plateformes FMZ étenduesAPI KEYs pour les demandes simultanées.

  • Les threads de débogage créés sur un docker enregistreront-ils l'état du journal lors de l'utilisation de l'outil de débogage?

    Lorsque l'outil de débogage est exécuté, si rien n'est modifié pour la deuxième fois, l'objet d'échange créé auparavant sera conservé et ne sera pas libéré.mode de monnaieoumode d'effet de levier.

  • Pourquoi quand j'ai enregistré lewexAppsimulé la plateforme et connecté, il n'y avait pas d'actifs, ni dans le portefeuille ni dans la section des devises?

    Après l'enregistrement, vous devez vérifier votre email pour activer votre compte, et vous pouvez activer votre compte dans le centre personnel.

  • L'information du journal est relativement longue et coupée, et à la fin, elle a montré"... Mais j'ai besoin de voir la structure des données, que dois-je faire?

    La solution est d'utiliser lesOutil de débogagesur leTableau de bord, et utiliser lereturnl'instruction dans l'outil de débogage pour retourner le contenu à afficher, et l'affichage du contenu ne sera pas tronqué.

  • Que font les fonctions commençant par$.dans leJavaScriptDes stratégies?

    Les fonctions avec le début de$.sont des fonctions d'exportation de modèles, similaires aux fonctions d'interface des modules.https://www.fmz.com/api#模板类库

    Les fonctions d'exportation dupythonLes stratégies sont déclarées avecext.au début.

  • Comment tracer des lignes droites sur le graphique du marché du résultat du backtest?

    Il existe deux types de graphiques qui sont finalement affichés dans le backtest: l'un est généré par le système, que la stratégie ne peut contrôler.Chartfonction de l'interface API FMZ dans le code de stratégie.https://www.fmz.com/api#chart...

  • J'ai supprimé le validateur Google de mon téléphone par erreur, comment réinitialiser le validateur Google?

Vous pouvez vous connecter à la plateforme FMZ avec un autre navigateur, et lorsque vous devez entrer le code de vérification Google, cliquez sur Enable twofactor pour accéder à la page de désengagement par e-mail.

Autres

  • PlateformeAPI KEYcontrôle de sécurité

    LeAPI KEYFMZ n'enregistre pas les informations en texte brut du compte de la plateforme de l'utilisateur et utiliseHttps protocol.

  • Problème de sécurité stratégique

    Pour cela, vous pouvez vous référer:https://www.fmz.com/bbs-topic/1657.

  • Système de facturation FMZ

    Normes de facturation pour les opérations en direct:

    1. La facturation a lieu une fois par heure pour chaque compte de trading en direct (0,05 USD/heure) et est basée sur une période d'utilisation d'une heure.
    2. L'arrêt et le redémarrage du compte de négociation en direct dans un délai d'une heure n'entraînent pas de facturation en double.
    3. Un compte de trading en direct qui a déjà été arrêté ne déclenchera pas la facturation pour l'heure suivante.
    4. Les comptes de trading en direct nouvellement créés seront immédiatement facturés pendant une heure.

    img

    Le temps de facturation mentionné fait référence au temps de traitement des opérations de facturation. En raison du temps requis pour ces opérations de traitement, le temps de déduction peut être retardé. Par exemple, si l'heure de facturation actuelle est 9h00, il est possible que le temps de traitement de cette opération de facturation soit 9h02 (comme indiqué sur la capture d'écran). Cela sera ajusté lors de la prochaine opération de facturation (le prochain temps de déduction sera 10h00, pas une facturation anticipée).

  • La bibliothèque talib traite les données avec une précision limitée.

    Si les données sont particulièrement petites, elles seront tronquées et finalement affichées sous forme de 0. Veuillez vous référer à:https://github.com/TA-Lib/ta-lib-python/issues/157


Plus de