Module de visualisation pour construire une stratégie de trading - première connaissance

Auteur:Je ne sais pas., Créé: 2022-12-12 16:50:29, Mis à jour: 2023-09-20 09:44:29

img

Module de visualisation pour construire une stratégie de trading - première connaissance

La programmation visuelle a toujours été un objectif ambitieux des développeurs de logiciels, même dans le domaine du trading quantitatif. Parce que la méthode de "ce que vous voyez est ce que vous obtenez" dans la visualisation réduit considérablement le seuil technique du développement de programmation. Les utilisateurs n'ont plus à gérer une pile de codes ennuyeux, ils utilisent simplement leur imagination et leur pensée logique pour se concentrer sur l'entreprise elle-même. Vous pouvez réaliser n'importe quel programme.

Entrons ensemble dans le domaine de la programmation visuelle de la stratégie commerciale quantitative!

La programmation visuelle de la FMZ Quant initiale

Après vous être connecté àhttps://www.fmz.com, inscrivez votre compte (si vous êtes déjà inscrit, connectez-vous directement) et cliquez sur: Tableau de bord -> Stratégie -> Ajouter une stratégie.

img

Nous pouvons voir une stratégie de visualisation initiale. Il est uniquement utilisé pour produire les informations relatives aux actifs du compte de l'échange configuré par défaut (le premier objet d'échange ajouté au backtest ou au robot). (Voir le tableau ci-dessous)

img

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

  1. Épissage Si vous regardez attentivement, vous pouvez voir que les modules ont tenon (concave) et mortise (convexe), c'est-à-dire que les modules peuvent connecter et être connecté. Si deux modules représentent des codes fonctionnels qui peuvent être connectés, alors les étriers et les moulures des deux modules seront attirés les uns vers les autres lorsque vous les rapprochez.

img

  1. Réglage et réglage du module Certains modules ont des zones réglables spéciales, par exemple:

img

Vous pouvez faire glisser le module Item à gauche vers le module Add, afin d'ajouter une position de tenon (concave), ajoutant ainsi une position pour l'épissage du texte. De cette façon, cliquez sur le pignon pour régler et régler le module.

  1. Paramètres d'entrée par défaut du module Certains modules doivent saisir certains paramètres, qui peuvent être des valeurs numériques ou des chaînes. Si vous n'ajoutez pas de variables comme paramètres d'entrée du module, le module s'exécutera selon les paramètres d'entrée par défaut.

img

Le module de calcul de la racine carrée comme ceci produit les résultats de calcul de ce module.

img

Comme vous pouvez le voir, si la position du paramètre d'entrée est par défaut, la valeur par défaut 9 sera utilisée comme paramètre d'entrée pour calculer la racine carrée de 9.

img

Bien sûr, si vous voulez utiliser un module variable comme paramètre d'entrée, vous pouvez épiler le module variable dans la position tenon (concave) directement.

img

  1. Opération Le module peut être cliqué et glissé avec le bouton gauche de la souris. Les modules peuvent être copiés avec ctrl + c et collés avec ctrl + v, tout aussi pratique que de copier et coller du code ou du texte. La zone d'opération peut être mise à l'échelle avec la roue de la souris, et tous les modules seront mis à l'échelle plus grande ou plus petite. Cliquez et faites glisser la position vide dans la zone d'opération pour déplacer la zone d'opération. La poubelle sur le côté droit enregistre les modules récemment supprimés. La chose la plus importante est qu'après avoir épissé la stratégie du module, n'oubliez pas de cliquer sur Enregistrer.

Introduction au module des outils de visualisation

Vous pouvez voir qu'il y a beaucoup de modules de classification sur le côté gauche de la zone d'édition visuelle, et il y a beaucoup de modules visuels disponibles dans chaque projet de classification.

Il y a 11 catégories.

img

Module d'utilisation:

img img img

  1. Informations de sortie: Ce module est généralement utilisé avec le module de classe de texte, comme indiqué ci-dessous:

img

Vous pouvez entrer une chaîne dans le module texte, de sorte que lorsque vous exécutez le module d'information de sortie, le contenu de la chaîne dans le module texte sera imprimé.

img

Test de retour:

img img

Comme le code du langage JavaScript:

function main(){
    Log("Hello, Blockly!")
}
  1. Envoyer sur WeChat: Ce module a la même apparence que l'information de sortie, qui est différente de celle qui envoie des informations à WeChat liées au compte courant en même temps.

img

Comme le code du langage JavaScript:

function main () {
Log("WeChat Push!@")
}
  1. Jetez une exception Le lancement du module d'exception provoque l'émission d'une erreur par le programme, puis l'arrêt de l'exécution du programme (sans écrire le code de traitement des exceptions).

img

De même, dans la stratégie JavaScript, la fonction principale exécute directement la fonction throw string to output.

function main () {
    throw "The first sentence throws an exception to stop the program!"
}

Résultats des tests antérieurs:

img img

Généralement, il est plus utilisé lors du débogage. Par exemple, si vous voulez que le programme s'arrête dans certaines conditions et imprime des données à ce moment-là pour l'observation. Ou vous pouvez placer un module d'exception dans le flux de code où des problèmes peuvent survenir, laisser le programme signaler des erreurs, et trouver quelques erreurs.

  1. Je dors. Module de sommeil

img

Comme dans la stratégie JavaScript:

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

Testez le module de sommeil:

img

Résultats des tests antérieurs:

img

  1. Retours d'impression

img

Ce module, tout comme la fonction API LogProfit sur FMZ Quant Trading Platform, qui imprime le journal des retours et dessine la courbe de retour en fonction des paramètres d'entrée automatiquement.

Par exemple:imgL'exécution du backtesting est illustrée sur la figure ci-dessous:

img

Le code de stratégie 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 quelle position où vous voulez produire des informations de retour.

  1. BoucleimgLe module de boucle peut envelopper une série de combinaisons de modules épissées, permettant aux combinaisons de modules d'exécuter la boucle.

Le test:imgRésultats des tests antérieurs:

img

Nous pouvons voir que la combinaison de module composée de print returns et sleep sera exécutée en continu après que le module de boucle soit enveloppé.

  1. Exécution de la boucle toutes les N secondesimgL'utilisation de ce module est fondamentalement la même que celle du module de boucle. La seule différence est que le module a son propre sommeil.img

  2. Traitement de précisionimgCe module peut être utilisé lorsque le module variable ou la valeur numérique doit contrôler la précision.

Par exemple, le traitement de précision est effectué sur la valeur 3.1415926535897.

img

Affichage des tests arrière:

img

  1. Éliminer le journalimg

Il est utilisé pour effacer les journaux. Certains journaux peuvent être conservés selon les paramètres d'entrée. Comme dans le document de l'API:

LogReset()
  1. Registre de retourimg

Certains journaux peuvent être conservés en fonction des paramètres d'entrée. Comme dans le document de l'API:

LogProfitReset()

Les modules suivants sont des modules d'outils fréquemment utilisés

  1. Module de fonction pour obtenir un certain attribut du marchéimgCe module d'outil doit être utilisé conjointement avec le module de cotation dans le type de module de transaction, comme indiqué sur la figure:imgUtiliser le module d'information de sortie pour produire le dernier prix de transaction du dernier marché ticker:imgAffichage des tests arrière:img

Comme le code de stratégie JavaScript:

function main () {
    Log(exchange.GetTicker().Last)
}
  1. Le module qui obtient l'attribut d'une barre de données de ligne KimgCe module doit également être utilisé conjointement avec le module d'acquisition de données en ligne K dans le type de module de transaction.

Tout d'abord, nous créons un module variable appelé K-line.imgEnsuite, nous obtenons les données de la ligne K, utilisons le module de données de la ligne K pour l'obtenir, et attribuons la valeur au module de la variable: K-line.imgEnsuite, nous utilisons le module de longueur de liste dans List Module Type pour obtenir la longueur du module de variable de ligne K, qui est utilisé pour spécifier quelle barre sur la ligne K pour obtenir les données.imgLes relier ensemble, comme indiqué sur la figure:img

L'horodatage de la dernière ligne K est imprimé lorsque le backtest est exécuté.img

  1. Le module qui obtient les données d'une commande dans le carnet de commandesimgIl doit également être utilisé avec le module Get Depth Data dans le type Transaction Module.imgL'indice est défini à 0 et l'ordre de vente est défini pour obtenir les informations relatives à un ordre de vente.

img

Comme le code de stratégie JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0])
}
  1. Module pour obtenir un attribut dans les informations sur les actifsimgCe module doit être utilisé conjointement avec le module d'obtention des informations sur les actifs.imgPar exemple: imprimer la devise disponible du compte courantimgAffichage des tests arrière:img

Comme le code de stratégie JavaScript:

function main () {
    Log(exchange.GetAccount().Stocks)
}
  1. Module permettant d'obtenir un attribut dans les données d'ordreimgCe module est utilisé pour obtenir la valeur d'un attribut dans les données de commande, comme le prix ou la quantité de vente d'un attribut dans le carnet de commandes (exemple no 13).img

Résultats des tests antérieurs:img

Comme le code de stratégie JavaScript:

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

Il peut également être utilisé pour obtenir un attribut dans les informations de commande renvoyées par le module Détails de commande de requête (expliqué dans le chapitre avancé).

  1. Le module permettant d'obtenir les attributs d'une position dans les informations de positionimgDe même, il doit être utilisé avec le Get Futures Position Module. Notez que les données de position renvoyées par le Get Futures Position Module sont un tableau (liste) contenant des positions dans différents contrats et directions. Par conséquent, l'indice doit être spécifié lors de l'utilisation.

Après avoir appris tant, combinons une opération de couverture, c'est-à-dire la couverture à la fois des contrats à court terme et à terme.

Nous faisons une couverture d'arbitrage positif, c'est-à-dire ouvrir un contrat de position courte pour le contrat à terme, et ouvrir un contrat de position longue pour le contrat récent.

img

Résultats des tests antérieurs:

img

Exemples de stratégies de visualisation:

https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Pour plus de stratégies, veuillez consulter:https://www.fmz.com/square

Autres articles de cette série

- Module de visualisation pour la construction de stratégies commerciales - En profondeur (https://www.fmz.com/digest-topic/9509) - Module de visualisation pour la construction d'une stratégie commerciale - Compréhension avancée (https://www.fmz.com/bbs-topic/9815)

La programmation ennuyeuse peut être facilement complétée par des blocs de construction.


Relationnée

Plus de