Définir l'interpréteur Python utilisé par le programme Python
Stratégies écrites en Python, lors du backtesting ou du trading en direct, si l'environnement du système docker a installé Python2 et Python3, vous pouvez définir la version Python à lancer à l'exécution sur la première ligne de la stratégie, telle que#!python3
et#!python2
Vous pouvez également spécifier un chemin absolu, comme:#!/usr/bin/python3
.
Sécurité stratégique basée sur Python
Lorsque les stratégies de trading sont développées sur la plateforme de trading FMZ Quant, le contenu de la stratégie n'est visible que par les titulaires de compte FMZ.PythonLe code de stratégie est chargé dans le package, de sorte que la localisation du contenu de la stratégie puisse être réalisée.
La sécurité du code Python:
Comme Python est un langage open-source extrêmement facile à décompiler, si la stratégie n'est pas pour un usage personnel mais pour la location, vous pouvez exécuter la stratégie sur votre propre docker déployé et la louer sous forme de sous-compte ou de gestion complète du docker si vous craignez une fuite de stratégie.
Le chiffrement du code de stratégie Python:
Par défaut, le code de stratégie Python n'est pas chiffré lorsqu'il est utilisé par l'auteur et chiffré lorsqu'il est loué à d'autres. En éditant le code suivant au début de la stratégie Python, vous pouvez spécifier si vous voulez chiffrer le code de stratégie pour un usage personnel ou pour la location. Les versions Python qui prennent en charge le chiffrement des codes de stratégie sont les suivantes: Python 2.7, Python 3.5 et Python 3.6.
Lorsque l'auteur de la stratégie l'exécute lui-même ou l'utilise pour d'autres par le biais d'un code d'enregistrement, le code de stratégie est crypté:
Spécifier#!python
comme la version de l'interpréteur Python, puis utiliser,
pour garder à l'écart; entrez la commande de chiffrementencrypt
Si vous ne spécifiez pas la version de Python, vous pouvez ajouter#!,encrypt
directly.
#!python,encrypt
Ou alors...
#!encrypt
Il ne crypte pas les codes de stratégie lorsque les rédacteurs de stratégie courent pour leur propre usage et partagent avec d'autres par le code d'enregistrement:
#!python,not encrypted
Ou alors...
#!not encrypted
Utiliser le codeos.getenv('__FMZ_ENV__')
pour déterminer si le code de chiffrement est valide; le retour de la chaîne"encrypt"
Il n'est valable que dans le commerce en direct, et le backtest ne chiffrera pas lePython
les codes stratégiques.
#!encrypt
def main():
ret = os.getenv('__FMZ_ENV__')
# If the print variable ret is the string "encrypt" or ret == "encrypt" is true, that means the encryption is valid.
Log(ret, ret == "encrypt")