Type/to search
8
Follow
1364
Followers
Module de visualisation pour construire une stratégie de trading - premier aperçu
Original
Created 2019-07-08 09:23:59  Updated 2024-12-23 17:57:33
 7
 8305

img

Module de visualisation pour construire une stratégie de trading - premier aperçu

La programmation visuelle a toujours été un objectif recherché par les développeurs d’outils logiciels, même dans le domaine du trading quantitatif.
Parce que l’approche de visualisation « ce que vous voyez est ce que vous obtenez » réduit considérablement le seuil technique pour le développement de la programmation.
Les utilisateurs n'ont plus besoin de s'occuper d'un tas de codage ennuyeux. Il leur suffit d'utiliser leur cerveau, leur imagination et leur raisonnement logique, et de se concentrer sur l'entreprise elle-même.
Vous pouvez réaliser le programme que vous souhaitez, n’est-ce pas incroyable !

Alors entrons ensemble dans le domaine de la programmation visuelle des stratégies de trading quantitatif !

  • Inventeur initial de la programmation visuelle quantifiée

    Après vous être connecté à https://www.fmz.com, enregistrez un compte (si vous êtes déjà inscrit, connectez-vous directement) et cliquez sur : Centre de contrôle->Bibliothèque de politiques->Nouvelle politique.

    img

    Nous pouvons voir une stratégie de visualisation initiale.
    Il génère uniquement les informations sur les actifs du compte de l'échange configuré par défaut (le premier objet d'échange ajouté dans le backtest ou le robot).
    (Comme indiqué ci-dessous)

    img

    Avant de commencer à apprendre à utiliser la visualisation, nous pouvons d’abord comprendre certains concepts de conception de la visualisation.

    • 1. Épissage

      Une observation attentive révèle que les modules possèdent tous des tenons (concaves) et des mortaises (convexes), ce qui signifie que les modules peuvent être « connectés » et « reliés ».
      Si les codes fonctionnels représentés par deux modules peuvent être connectés, ils seront alors emboîtés ensemble lorsque vous rapprocherez la mortaise et le tenon des deux modules.

      img

    • 2. Paramètres et ajustements du module

      Certains modules ont des paramètres spéciaux, par exemple :

      img

      Vous pouvez faire glisser le module « Projet » de gauche vers le module « Joindre », afin de pouvoir ajouter une position de tenon et mortaise, ajoutant ainsi une position pour l'épissure du texte.
      De cette façon, vous pouvez effectuer certains ajustements et réglages du module en cliquant sur le petit engrenage.

    • 3. Paramètres d'entrée par défaut du module

      Certains modules nécessitent des paramètres d'entrée, qui peuvent être des valeurs, des chaînes, etc.
      Si vous n'ajoutez pas de variables comme paramètres d'entrée du module, le module sera exécuté selon les paramètres d'entrée par défaut.

      img
      Un module de calcul comme celui-ci pour trouver des racines carrées génère les résultats de calcul de ce module.
      img
      Comme vous pouvez le voir, si le paramètre d’entrée est manquant, la valeur par défaut 9 est utilisée comme paramètre d’entrée pour calculer la racine carrée de 9.
      img

      Bien entendu, si vous souhaitez utiliser un module variable comme paramètre d'entrée, vous pouvez connecter directement le module variable à la position tenon et mortaise (évidement).
      img

    • 4. Fonctionnement

      Le module peut être cliqué et déplacé avec le bouton gauche de la souris.
      Les modules peuvent être copiés à l'aide de ctrl + c et collés à l'aide de ctrl + v, aussi facilement que de copier et coller du code ou du texte.
      La zone d'opération peut être agrandie ou réduite à l'aide de la molette de la souris, et tous les modules seront agrandis ou réduits.
      Cliquez et maintenez une zone vide dans la zone d'opération et faites-la glisser pour déplacer la zone d'opération.
      La corbeille à droite enregistre les modules qui ont été récemment supprimés.
      Surtout, après avoir assemblé la stratégie du module, n’oubliez pas de cliquer sur « Enregistrer ».

  • Présentation du module Outils de visualisation

    Vous pouvez voir qu’il existe de nombreuses catégories de modules sur le côté gauche de la zone d’édition visuelle, et qu’il existe de nombreux modules visuels disponibles dans chaque catégorie.

    img Il y a 11 catégories au total.

    • Module d'outils :

      img


      • 1. Informations de sortie :

        Ce module est généralement utilisé en combinaison avec des modules de texte, comme indiqué ci-dessous :
        img
        Vous pouvez saisir une chaîne dans le module de classe de texte, de sorte que lorsque vous exécutez le module « Informations de sortie », le contenu de la chaîne dans le module de texte soit imprimé.
        img
        Backtesting :
        img

        Comme le code du langage JavaScript :

        function main(){ Log("你好,可视化编程!") }

      • 2. Push WeChat :

        Ce module ressemble à « Informations de sortie », sauf qu'il génère des informations et les envoie au compte WeChat lié au compte actuel.
        img
        img

        Comme le code du langage JavaScript :

        function main () { Log("微信推送!@") }

      • 3. Lancer une exception

        Le module throw exception permet au programme de générer une erreur puis d'arrêter l'exécution du programme (sans écrire de code de gestion des exceptions).
        img

        Ceci est similaire à la stratégie JavaScript où la fonction throw « chaîne à générer » est directement exécutée dans la fonction principale.

        function main () { throw "第一句就抛出异常,让程序停止!" }

        Résultats des backtests :
        img
        Il est généralement utilisé plus fréquemment lors du débogage, par exemple, lorsque vous souhaitez que le programme s'arrête dans une certaine condition et imprime certaines données à ce moment-là pour une observation facile.
        Vous pouvez également placer un module de génération d'exceptions dans le flux de code où des problèmes peuvent survenir, afin que le programme puisse signaler des erreurs et en découvrir certaines.


      • 4. Hibernation

        Module d'hibernation
        img
        Comme dans la stratégie JavaScript :

        function main () { Sleep(1000 * 5) }

        Tester le module d'hibernation :
        img
        Résultats des backtests :
        img


      • 5. Revenus d'impression

        img

        Ce module est similaire à la fonction LogProfit de l'API de la plateforme de trading quantitative Inventor, imprimant le journal des bénéfices et dessinant automatiquement la courbe de profit en fonction des paramètres d'entrée.

        Par exemple:
        img
        L’exécution du backtest est illustrée ci-dessous :
        img
        Le code de politique JavaScript correspondant est le suivant :

        function main () { LogProfit(1) Sleep(1000 * 5) LogProfit(2) Sleep(1000 * 5) LogProfit(3) Sleep(1000 * 5) LogProfit(2) Sleep(1000 * 5) LogProfit(5) }

        Il peut être épissé à n'importe quel endroit où vous souhaitez générer des informations sur les revenus.


      • 6. Boucle

        img
        Le module de boucle peut envelopper une série de combinaisons de modules épissés et laisser cette combinaison de modules s'exécuter dans une boucle.

        test:
        img
        Résultats des backtests :
        img
        On peut voir qu'une fois que le module de boucle a enveloppé la combinaison de modules composée de Print Profit et Sleep, la combinaison de modules sera exécutée en continu.


      • 7. Exécution de la boucle toutes les N secondes

        img
        L'utilisation de ce module est fondamentalement la même que celle du module de boucle, la seule différence est que ce module dispose d'une fonction de veille intégrée.
        img


      • 8. Usinage de précision

        img
        Ce module peut être utilisé lorsque des modules variables ou des valeurs numériques doivent contrôler la précision. La valeur numérique de la partie paramètre d'entrée sera sortie sous forme de valeur numérique des décimales spécifiées en fonction des paramètres.

        Par exemple, le nombre 3,1415926535897 est traité avec précision.
        img

        Les backtests montrent :
        img


      • 9. Effacer le journal

        img

        Permet d'effacer les journaux. Selon les paramètres d'entrée, une partie des journaux peut être conservée.
        Comme dans la documentation de l'API :

        LogReset()

      • 10. Effacer le journal des revenus

        img

        Permet d'effacer le journal des revenus. Selon les paramètres d'entrée, une partie du journal peut être conservée.
        Comme dans la documentation de l'API :

        LogProfitReset()

      Voici quelques modules d'outils fréquemment utilisés

      • 11. Module fonctionnel permettant d'obtenir un certain attribut du marché

        img

        Ce module d'outil doit être utilisé conjointement avec le module de marché dans « Type de module de trading », comme indiqué dans la figure :
        img

        Utilisez le module d'informations de sortie pour générer le dernier prix de transaction du dernier marché boursier :
        img

        Les backtests montrent :
        img

        Comme le code de la stratégie JavaScript :

        function main () { Log(exchange.GetTicker().Last) }
      • 12. Module permettant d'obtenir les attributs d'une certaine barre de données K-line

        img

        Ce module doit également être utilisé avec le module d'acquisition de données K-line dans le « Type de module de trading ».

        Créez d’abord un module variable et nommez-le : K-line.
        img
        Ensuite, récupérez les données de la ligne K, utilisez le module de données de la ligne K pour les obtenir et attribuez-les au module variable : « K-line ».
        img
        Utilisez ensuite le module de longueur de liste dans le « Type de module de liste » pour obtenir la longueur du module variable de la ligne K, qui est utilisé pour spécifier à partir de quelle barre de la ligne K obtenir les données.
        img
        Cousez ensemble, comme indiqué :
        img
        Lorsque le backtest est exécuté, l'horodatage de la dernière barre K-line est imprimé.
        img

      • 13. Module d'obtention des données de commande dans le carnet de commandes

        img

        Il doit également être utilisé avec le module Obtenir les données de profondeur dans le « Type de module de transaction ».

        img

        Définissez l'index sur 0, définissez un ordre de vente et obtenez les informations de l'ordre de vente.

        img

        Comme le code de la stratégie JavaScript :

        function main () { Log(exchange.GetDepth().Asks[0]) }
      • 14. Module permettant d'obtenir un certain attribut dans les informations sur les actifs

        img
        Ce module doit être utilisé avec le module Obtenir des informations sur les actifs.
        img

        Par exemple : imprimer le nombre de pièces disponibles sur le compte courant
        img

        Les backtests montrent :
        img

        Comme dans la stratégie JavaScript :

        function main () { Log(exchange.GetAccount().Stocks) }
      • 15. Module pour obtenir un certain attribut dans les données de commande

        img

        Ce module permet d'obtenir la valeur d'un certain attribut dans les données de commande, comme le prix ou la quantité de la première vente dans le carnet de commandes (exemple numéro 13).
        img

        Résultats des backtests :
        img
        Comme dans la stratégie JavaScript :

        function main () { Log(exchange.GetDepth().Asks[0].Price) }

        Il peut également être utilisé pour obtenir un certain attribut dans les informations de commande renvoyées par le module « Requête sur les détails de la commande » (qui sera expliqué dans la section avancée).

      • 16. Module permettant d'obtenir les attributs d'une certaine position dans les informations de position

        img

        De même, il doit être utilisé avec le module « Get Futures Position ». Il convient de noter que les données de position renvoyées par le module Get Futures Position sont un tableau (liste), qui est une structure de données contenant les positions de différents contrats et directions . Vous devez donc spécifier l'index lors de son utilisation.

        Après avoir appris tant de choses, combinons une opération de couverture, c’est-à-dire couvrons à la fois les contrats à court terme et à terme.
        Nous faisons une couverture d'arbitrage positive, c'est-à-dire que nous ouvrons un contrat à terme court, 1 contrat, et ouvrons un contrat long à court terme.

        img

        Résultats des backtests :
        img

Exemple de stratégie de visualisation :

D'autres stratégies sont disponibles sur : https://www.fmz.com/square

Autres articles de cette série

Une programmation ennuyeuse peut être facilement réalisée en utilisant des blocs de construction. Essayez, c'est très intéressant !

Related Recommendations
Comment
All comments (7)

    指标里没有cci,我如果要用cci是不是就不能用这个可视化去创建

    4 years ago

    这个系列里的文章有讲如何实现自定义的模块。

    4 years ago

    除了深入,初识,进阶这三个还有本系列其他的文章吗,为什么我没找到自定义模块和指标模块用法呢

    4 years ago

    请问可视化中的指标模块是怎么使用的

    5 years ago

    这个系列文章可以看完,又讲。

    5 years ago

    好的,谢谢。找到了

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)