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

Langages de programmation

Quels langages de programmation sont disponibles pour mettre en œuvre ma stratégie sur la plateforme de trading FMZ Quant?Programming languages supportedLa plateforme de négociation quantitative FMZ prend en chargeJavaScript, TypeScript, Python, C++, PINE, My Language, Blocklyvisualisation pour écrire et concevoir des stratégies.

JavaScript

Il prend en charge le langage JavaScript et intègre les bibliothèques JavaScript suivantes:

  • http://mathjs.org/ - http://mikemcl.github.io/decimal.js/ - http://underscorejs.org/ - http://ta-lib.org/Erreur d'exception de programme, erreur d'interface opérationnelleJavaScriptstratégie de langage, lorsqu'une erreur d'exception de programme ou une erreur d'interface d'entreprise se produit, le journal d'erreur affichera le numéro de ligne spécifique où l'erreur s'est produite dans le code de stratégie, ce qui est pratique pour le débogage de stratégie et le dépannage de bugs.

TypeScript

Il soutientTypeScriptLe langage, toujours réglé surJavaScriptla stratégie quand nous créons des stratégies, alors nous écrivons// @ts-checkau début du code de stratégie ou cliquez sur le boutonTypeScriptdans le coin supérieur droit de la zone d'édition de la stratégie pour passer àTypeScriptLa plateforme reconnaîtra le code commeTypeScriptautomatiquement et vous fournir le support de compilation et de vérification de type correspondant pour:

  • Sécurité des types: La fonction de vérification de type statique de TypeScript peut vous aider à trouver des erreurs potentielles lors de l'écriture de code et à améliorer la qualité du code.
  • Complétion automatique du code: Le système de types TypeScript permet de trouver plus rapidement les attributs et les méthodes dont vous avez besoin lors de l'écriture de code, améliorant ainsi l'efficacité du développement.
  • Structure de code plus claire: Avec TypeScript, vous pouvez mieux organiser et maintenir votre code, ce qui le rend plus facile à lire et à comprendre.
  • Des fonctionnalités puissantes de programmation orientée objet: TypeScript fournit des fonctionnalités puissantes de programmation orientée objet, telles que des interfaces, des classes, des génériques, etc., vous aidant à écrire un code de stratégie plus robuste et réutilisable.

Python

  • 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#!python3et#!python2Vous 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#!pythoncomme la version de l'interpréteur Python, puis utiliser,pour garder à l'écart; entrez la commande de chiffrementencryptSi 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 lePythonles 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")
    

C++

Notre plateforme prend en charge le langage de programmation C++ et leC++ 11Les stratégies en C++ sont pré-compilées puis exécutées. Les stratégies en C++ dans le système de backtesting sont exécutées sur le serveur de backtesting C++ du système de backtesting; les stratégies en C++ dans l'environnement bot sont exécutées sur la base du docker après avoir été compilées. L'utilisation du langage de programmation C++ et duC++ 11En utilisant les fonctionnalités modernes de C++, vous pouvez créer des algorithmes de trading flexibles et évolutifs pour le trading automatisé.

Les bibliothèques C++ suivantes sont intégrées:

Mon langage

La plateforme prend en charge la stratégie d'écriture et de conception dans MyLanguage, qui est compatible avec la plupart des grammaires, commandes et fonctions de Wenhua MyLanguage.

Exemple de stratégie MyLanguage: Système basé sur le canal de Bollinger translationnel

M := 12; // Parameter range 1, 20
N := 3; // Parameter range 1, 10
SDEV := 2; // Parameter range 1, 10
P := 16; // Parameter range 1, 20
//The strategy is a trend-following trading strategy for larger periods, such as daily.
//This model is only used as a case study for model development, and entering the market accordingly will be at your own risk.
////////////////////////////////////////////////////////
//Panning BOLL Channel Calculation
MID:=MA(C,N);//Calculate the middle track       
TMP:=STD(C,M)*SDEV;//Calculate the standard deviation
DISPTOP:=REF(MID,P)+TMP;//Translate BOLL channel upper track
DISPBOTTOM:=REF(MID,P)-TMP;//Translate BOLL channel down track
//System admission
H>=DISPTOP,BPK;
L<=DISPBOTTOM,SPK;
AUTOFILTER;

Langue du pin

La plateforme prend en charge et est compatible avec des scripts en langage PINE deTrading View. Le langage PINE est un langage de programmation de conception de stratégie léger mais puissant pour la création d'indicateurs et de stratégies de trading en direct testés, avec un forum florissant qui a créé plus de 100 000 scripts PINE. Les utilisateurs peuvent facilement accéder et appliquer un large éventail d'analyses techniques et de stratégies de trading; les utilisateurs peuvent rapidement mettre en œuvre leurs idées de trading à l'aide de scripts communautaires, éliminant le besoin d'écrire du code à partir de zéro et réduisant ainsi considérablement le temps de développement; il aide les traders débutants et expérimentés à apprendre et à comprendre différents indicateurs techniques, stratégies et concepts de programmation.

Exemple de stratégie linguistique PINE: Stratégie de super tendance

strategy("supertrend", overlay=true)

[supertrend, direction] = ta.supertrend(input(5, "factor"), input.int(10, "atrPeriod"))

plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)

if direction < 0
    if supertrend > supertrend[2]
        strategy.entry("entry long", strategy.long)
    else if strategy.position_size < 0
        strategy.close_all()
else if direction > 0
    if supertrend < supertrend[3]
        strategy.entry("entry short", strategy.short)
    else if strategy.position_size > 0
        strategy.close_all()

Visualisation en bloc

Notre plateforme prend en charge l'approche visuelle de la programmation Blockly. Avec l'éditeur Blockly, les utilisateurs peuvent exprimer des concepts de code en assemblant des blocs graphiques (similaires aux blocs de construction), tels que des variables, des expressions logiques, des boucles, etc. De cette façon, le processus de programmation n'a plus besoin de prêter trop d'attention aux détails grammaticaux fastidieux et peut suivre directement les principes de programmation. En disposant et en combinant des blocs graphiques, les utilisateurs peuvent facilement comprendre la logique de programmation et réaliser des idées créatives. Idéal pour développer un intérêt pour la conception de stratégies afin de commencer rapidement avec le trading programmatique et quantitatif.

Bienvenue sur la plateforme de négociation quantitative FMZ La sécurité est essentielle