[TOC] Je vous en prie.
Comment trouver un mot-clé sur les messages?
UtilisationCtrl + f
pour ouvrir la page et effectuer une recherche; entrez un mot clé, par exemple:
Actuellement, FMZ International Station ne prend en charge que les activités de crypto-monnaie.https://www.fmz.cn.
Le Weixin:
Pourquoi?acheter un prixetvendre un prixobtenu parGetTicker
et ceux obtenus parGetDepth
sont différentes?
Les donnéesGetTicker
etGetDepth
Il y a un retard de temps de cetrain, donc les données vont changer.GetTicker
sera un peu plus rapide, car les données sont inférieures à celles obtenues parGetDepth
.
exchang.GetOrders
Obtient 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.GetOrder
Il interroge des commandes de tous types, selonID
Entrez l' ordreID
Par 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.
DansJavaScript
les 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.
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 à:
Nous vous suggérons d' utiliserLinux
serveur, ou vous pouvez installer un logiciel de synchronisation du temps dans ceswindows
les 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.
ATR
(TR
) de Mylanguage et ceux calculés parTA
/talib
La bibliothèque?La raison en est que la méthode de calcul des indicateurs Mylanguage est incompatible avec l'algorithme sous-jacent deTA
/talib
Les 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.
#EXPORTTEST...#END
déclaré les variables dans la référence du bloc de code multipériode.REF
est 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:
Pourquoi?MACD
Le 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 lesMACD
Les 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)
; DIF
etDEA
devrait ê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.GetRecords
Dans 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.GetRecords
l'interface avec une certaine fréquence, sinon la continuité des données peut être affectée.
Je trouve que l'appel de la fonctionexchange.Buy
uniquement des retoursID
dans 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 laLog
La fonction, puis l'information imprimée de laLog
Vous 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 àrb1805
Appelez à 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.GetAccount
Les 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.Sell
etexchange.Buy
sur FMZ?
Pour plus de détails, vous devez regarder le premier paramètre transmis (le premier paramètre est le prix de l'ordre).-1
Les 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-1
Dans 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 QQ
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
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
BITMEX
429 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 CTP
erreur
Ç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.
Bittrex
erreur 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
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 database
erreur
Si le système estMac OS
Le 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-monnaiePython
Dans 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
Python
les rapports locaux des tests de retour du moteurEOFerror
.
EOF
l'erreur est l'erreur à la fin du backtest. attraper l'exception est suffisant et vous pouvez l'appeler n'importe oùPython
est 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:
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:
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.
Erreur d'appelexchange.SetMarginLevel(10)
: Futures_OP 0:403:{"error":{"message":"Access Denied","name":"HTTPError"}}
Vérifiez si les privilèges connexes duAPI KEY
Les 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.SetContractType
fonction 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_ORDER
Si 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::string
informations 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
continue
La 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 changing
Quel mot de passe a été modifié?
Ici, il indique à modifiersimnow
mot 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 unenonce
erreur de vérification, et les informations relatives à l'erreurnonce
Vous pouvez essayer de synchroniser l'heure du système où se trouve le bot docker.
ErreurSecretkey decrypt failed
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 KEY
Essayez de configurer leAPI KEY
sur la page
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
rate limit, 429 Too Many Requests
indique 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/amount
dans 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.Buy
ouexchange.Sell
Pour.volume de commande négatif, 0et d'autres méthodes de détection d'erreurs: vous pouvez appelerLog
pour exporter le paramètre de prix ou de volume à passer avant de passer une commande parexchange.Buy
ouexchange.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.
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:
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 dansBITMEX
Les 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 estBITMEX
prend 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 parBITMEX
Par exemple, la figure droite:
Dans la stratégie des contrats à terme sur matières premières, leProfit
dans les données renvoyées par la fonctionexchange.GetPosition
est-il différent du résultat variable calculé?
Veuillez consulter la documentation de l'API:https://www.fmz.com/api#exchange.getposition. Profit
dansCTP protocol
est 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.
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é
/*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
Vous devez vérifier si le proxy est activé, ce qui influencera la fin du chargement des fichiers sur la page de
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?
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 leChart
Le 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.reset
fonction 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.NAN
et type de numéro aprèsNAN
est calculé, ce qui provoquera l'effondrement du programme.
python
Le backtest est coincé!
Vous ne pouvez pas écrire la fonctionSleep
dans letry
détection d'erreur, et l'écriture dans l'image provoquera le blocage.
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.
Où est la vidéo pédagogique de déploiementLinux
Le 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 lerobot
Le programme, et l'exécuter à nouveau?
Vous pouvez supprimer directement l'ancienrobot
programme sans arrêter le docker, puis télécharger un nouveau paquet compressé, décompresser le nouveaurobot
Le 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 deLinux
serveur
Étapes pour installer un docker surLinux
: https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
Lors de l' utilisationscreen
Pour exécuter le programme dockerrobot
, -bash:screen:command not found
le docker ne peut pas fonctionner.
Linux
le système ne s'installe passcreen
Le logiciel et l'installation générale suffisent.CentOS
commande d'installation du système:yum install screen
.
Le docker actuel prend déjà en chargeSSH
pour débrancher le commutateur pour exécuter en arrière-plan.screen
, vous pouvez utiliser directement la commande dans lerobot
le répertoire du programme docker:./robot -s node.fmz.com/xxxxxxx
, et entrez le mot de passe du compte FMZ;Login OK
Si 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/xxxxxxx
est 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 xxxxxxx
.
Où est le journal du bot quand un docker exécute un bot?
Dans leDB3
fichier de base de données dans lelogs
le répertoire où se trouve le programme docker, le nom du fichier de base de données est leid
du bot, et l'extension estdb3
.
DansLinux
système, utilisation./robot -l
Pour voir les noms des plates-formes prises en charge par le docker, quelle plate-forme est laexchange
parmi les noms?
L'objet d'échange dontNomestexchange
dé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.
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/1234567
Une 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?
Quand?windows
le système installe pour la première foispython
, vous devez définir la variable d'environnement et redémarrer pour la rendre valide.
Erreur EOF
Python backtest est terminé par une exception EOF (parce que parfois une stratégie peut être une boucle infinie).
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
Le contenu des pages
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 API
les documents suivants:https://www.fmz.com/api#模板类库
Est-ce que lewexApp
la plateforme de simulation de FMZ simulé bot seulement fournirBTC_USDT
Comment puis-je personnaliser d'autres paires de trading?
wexApp
le 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
Vous pouvez créer plusieurs plateformes FMZ étenduesAPI KEY
s 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é lewexApp
simulé 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 lereturn
l'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 leJavaScript
Des 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 dupython
Les 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.Chart
fonction 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
PlateformeAPI KEY
contrôle de sécurité
LeAPI KEY
FMZ 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:
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