avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Module de visualisation pour construire des stratégies de trading - avancé

Créé le: 2019-07-17 10:22:20, Mis à jour le: 2023-10-24 21:40:50
comments   3
hits   4351

Module de visualisation pour construire des stratégies de trading - avancé

Module de visualisation pour construire des stratégies de trading - avancé

Apprenez la stratégie de trading de la construction de modules visuels - le chapitre d’introduction, et ayez une compréhension conceptuelle de la construction et de l’épissage des modules visuels. Il est alors facile d’apprendre à utiliser d’autres modules. Certaines fonctions plus complexes peuvent être combinées.

  • ## Module de catégorie de transaction

Dans des études et des tests précédents, nous avons été en contact avec plusieurs modules de « catégorie de transaction ». Par exemple: Module « Échange de cotations » Module « Échanger pour obtenir la ligne K » …

Je n’entrerai pas dans les détails de ceux qui ont déjà été utilisés.

  • 1. Obtenez le nombre d’échanges

    Module de visualisation pour construire des stratégies de trading - avancé

    Lorsque vous écrivez une stratégie de trading avec un robot, vous pouvez ajouter plusieurs objets d’échange, par exemple une stratégie de couverture. Ou bien vous devez parcourir (parcourir signifie visiter un par un) les objets d’échange pour accéder aux conditions du marché. À ce stade, vous devez utiliser un module pour obtenir le nombre d’échanges.

    Nous pouvons d’abord utiliser une structure simple pour imprimer le nombre d’échanges actuellement configurés : Module de visualisation pour construire des stratégies de trading - avancé

    En fait, c’est comme appeler le code de politique JavaScript suivant :

    function main () {
        Log(exchanges.length)
    }
    

    Regardons les résultats de l’exécution de ce module combiné : Module de visualisation pour construire des stratégies de trading - avancé

    Vous pouvez voir que nous avons ajouté 3 objets d’échange, représentant trois comptes d’échange différents, et le résultat de sortie du journal de backtest est 3.

  • 2. Obtenir le nom de l’échange

    Module de visualisation pour construire des stratégies de trading - avancé

    Lors de l’ajout de trois objets d’échange, la liste déroulante affichera trois options. Apprenez un module de boucle à l’avance, dans le type de boucle. Module de visualisation pour construire des stratégies de trading - avancé

    Apprenons à l’avance un module de jugement conditionnel : Module de visualisation pour construire des stratégies de trading - avancé La condition de jugement peut s’écrire comme : Module de visualisation pour construire des stratégies de trading - avancé

    Nous utilisons le module de boucle pour parcourir les noms d’échange ajoutés Utilisez le module de jugement conditionnel pour déterminer si le nombre de boucles actuel correspond au nom d’échange à imprimer.

    Module de visualisation pour construire des stratégies de trading - avancé

    Résultats de l’exécution du backtest : Module de visualisation pour construire des stratégies de trading - avancé

    Comme le code de la stratégie JavaScript :

    function main () {
        for (var i = 1 ; i <= exchanges.length ; i++) {
            if (i == 1) {
                Log(exchanges[0].GetName())
            } else if (i == 2) {
                Log(exchanges[1].GetName())
            } else {
                Log(exchanges[2].GetName())
            }
        }
    }
    
  • 3. Obtenez la paire de devises actuelle de la bourse

    Module de visualisation pour construire des stratégies de trading - avancé

    Un exemple simple récupère la paire de négociation du premier objet d’échange actuellement défini et l’affecte à la variable texte (créée dans la catégorie de variable à l’avance).

    Module de visualisation pour construire des stratégies de trading - avancé Résultats des backtests : Module de visualisation pour construire des stratégies de trading - avancé

    Si vous appelez le code de politique JavaScript :

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4. Module de commande

    Module de visualisation pour construire des stratégies de trading - avancé Ce module est très important et est utilisé pour les opérations de commande. La variable prix est intégrée dans la première position du tenon (rainure) pour spécifier le prix de la commande. Vous pouvez également saisir directement une valeur fixe. La deuxième position du tenon (point) intègre la variable de quantité commandée, qui est utilisée pour spécifier la quantité commandée.

    Par exemple, nous allons créer un exemple de passation d’un ordre d’achat basé sur le dernier prix des données actuelles du marché des ticks, avec un glissement de 10 yuans, en définissant la quantité de commande à 0,1 pièce et en imprimant l’ID de commande. Module de visualisation pour construire des stratégies de trading - avancé

    Résultats de l’exécution du backtest : Module de visualisation pour construire des stratégies de trading - avancé

    Comme le code de politique JavaScript suivant :

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. Module d’obtention de l’ordre de mandat de la paire de négociation actuelle

    Module de visualisation pour construire des stratégies de trading - avancé

    Ce module renvoie tous les ordres non terminés pour la paire de trading actuelle. La structure renvoyée est une liste (tableau), qui peut être traitée par des modules de type liste (opérations de parcours, etc.). Par exemple : nous modifions légèrement l’exemple de module de commande [4] ci-dessus et changeons le prix de 10 yuans ajouté lors de la passation d’une commande en une soustraction de prix de 10 yuans. L’ordre ne sera pas exécuté immédiatement, mais sera en attente dans la profondeur d’achat et de vente (c’est-à-dire à un certain niveau entre Acheter 1, Acheter 2 et Acheter N), de sorte que l’ordre est dans un ordre en attente d’exécution. Nous utilisons ensuite le module « Obtenir l’ordre de confiance de la paire de trading actuelle » pour obtenir une liste des ordres dans l’état PENDING (en attente d’exécution). Afin d’éviter l’exécution des ordres dans les conditions de marché ultérieures et d’affecter l’observation finale du backtest, après l’exécution du module « Obtenir l’ordre de confiance de la paire de trading actuelle » et l’impression de la liste des ordres, nous utilisons immédiatement l’exception « Lancer “ module pour arrêter le programme.

    Module de visualisation pour construire des stratégies de trading - avancé

    Les backtests montrent : Module de visualisation pour construire des stratégies de trading - avancé

    Le prix de l’ordre d’achat est inférieur de 10 yuans au dernier prix à ce moment-là, donc la transaction ne sera pas finalisée immédiatement. Récupérez ensuite les commandes en attente d’exécution et imprimez-les. Enfin, une exception est levée pour arrêter le programme.

    L’ensemble du module assemblé revient à appeler une stratégie JavaScript :

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        Log(exchange.GetOrders())
        throw "stop"
    }
    
  • 6. Module d’annulation de commande

    Module de visualisation pour construire des stratégies de trading - avancé

    Ce module permet d’annuler une commande.

    Il existe de nombreux scénarios dans lesquels cela est nécessaire lors de la rédaction de politiques :

    Annuler toutes les commandes actuellement en attente.

    Il est certain que cela nécessitera l’utilisation du « module d’annulation d’ordre ». Lors de l’apprentissage du module d’annulation d’ordre, nous pouvons utiliser [5] pour obtenir le module de l’ordre de confiance de la paire de négociation actuelle et les combiner pour réaliser cette fonction.

    Tout d’abord, pour tester l’annulation de toutes les commandes, passer une commande n’est pas très évident, on commence par passer deux commandes avec des prix et des quantités différents pour distinguer les deux commandes.

    Module de visualisation pour construire des stratégies de trading - avancé

    Utilisez le module « Parcourir chaque élément de la liste » dans le module de type boucle pour parcourir les commandes de la liste des commandes en attente en cours. Module de visualisation pour construire des stratégies de trading - avancé Lors du parcours, chaque commande récupérée est affectée à la variable module order (créée dans le type de module variable, comme indiqué ci-dessous :) Module de visualisation pour construire des stratégies de trading - avancé Utiliser le module de type d’outil : Module de visualisation pour construire des stratégies de trading - avancé Retirez l’ID de commande et transmettez-le à la position tenon (concave) du module d’annulation de commande, et le module d’annulation de commande exécute l’ordre d’annulation.

    Exécution du backtest : Module de visualisation pour construire des stratégies de trading - avancé

    Utilisation de la description de la politique JavaScript :

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
        Log(id2)
        var orders = exchange.GetOrders()
        Log(orders)
        for (var i in orders) {
            var order = orders[i]
            Log(exchange.CancelOrder(order.Id))
        }
    }
    
  • 7. Un module permettant d’obtenir des informations détaillées sur une commande en fonction de l’ID de commande

    Module de visualisation pour construire des stratégies de trading - avancé

    Ce module peut renvoyer des informations de commande détaillées en connectant un module variable d’ID de commande à la position du tenon et de la mortaise.

    Module de visualisation pour construire des stratégies de trading - avancé

    Faites attention à l’ordre renvoyé après l’exécution : Module de visualisation pour construire des stratégies de trading - avancé

    Comparé aux résultats d’exécution dans l’exemple [5], on peut constater que la commande imprimée est une information de commande distincte.[] Enveloppé entre crochets. Étant donné que l’exemple [5] renvoie une liste, cet exemple renvoie une seule information de commande (obtenue en fonction de la variable d’identification du module à la position du tenon transmise par le module).

    L’exemple ci-dessus équivaut à l’exécution d’une politique JavaScript :

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(exchange.GetOrder(id))
    }
    
  • 8. Module de négociation de contrats à terme

    Nous étudierons les modules ci-dessus un par un et définirons l’échange de test sur les contrats à terme sur matières premières.

    Paramètres de backtesting : Module de visualisation pour construire des stratégies de trading - avancé L’exemple suivant teste rétrospectivement cette configuration.

    • Module permettant d’évaluer l’état de connexion entre les serveurs des sociétés de contrats à terme et des contrats à terme sur matières premières CTP

    Module de visualisation pour construire des stratégies de trading - avancé

    Les contrats à terme sur matières premières ont des heures d’ouverture et de fermeture. Lorsque le marché est fermé, vous ne pouvez pas vous connecter.

    • Configurer le module de contrat

    Module de visualisation pour construire des stratégies de trading - avancé

    Lorsque l’objet d’échange est configuré comme un échange à terme, si vous ne définissez pas le contrat et n’obtenez pas directement les informations du marché, une erreur sera signalée : Module de visualisation pour construire des stratégies de trading - avancé

    Nous avons fixé le contrat à MA909, qui est le contrat principal actuel pour le méthanol. Module de visualisation pour construire des stratégies de trading - avancé De cette manière, la dernière valeur de prix sur le marché actuel des ticks du contrat MA909 est obtenue.

    • Configurer le module de direction des ordres de trading à terme

    Dans le module d’ordre d’exécution Module de visualisation pour construire des stratégies de trading - avancé
    Le sens de l’ordre doit être précisé car les contrats à terme ont : acheter : ouvrir une position longue vendre : ouvrir une position courte closebuy : clôturer une position longue closesell : clôturer une position courte Quatre directions (les contrats à terme sur matières premières ont deux directions supplémentaires : closebuy_today ferme les positions longues aujourd’hui, closesell_today ferme les positions courtes aujourd’hui).

    Par exemple, si le module de commande est configuré pour acheter, il y a alors deux significations : ouvrir une position longue et fermer une position courte, ce qui crée une ambiguïté. Par conséquent, le module « Définir la direction de l’ordre de négociation à terme » est nécessaire pour définir une direction d’ordre claire.

    Module de visualisation pour construire des stratégies de trading - avancé

    Les backtests montrent : Module de visualisation pour construire des stratégies de trading - avancé

    Comme le code de la stratégie JavaScript :

      function main () {
          while (true) {
              if (exchange.IO("status")) {
                  exchange.SetContractType("MA909")
                  Log(exchange.GetTicker().Last)
                  exchange.SetDirection("buy")
                  Log(exchange.Buy(1000, 1))
                  throw "stop"
              } else {
                  Log("未连接商品期货前置机")
              }
              Sleep(1000)
          }
      }
    
  • 9. Module de trading de contrats à terme sur crypto-monnaies

    L’utilisation des contrats à terme sur devises numériques est fondamentalement la même que l’utilisation des contrats à terme sur matières premières dans [8] ci-dessus.

    • En prenant OKEX comme exemple, le code du contrat peut être :

      • cette_semaine : cette semaine
      • next_week : la semaine prochaine
      • trimestre : trimestre
      • swap : perpétuel
    • BitMEX :

      • XBTUSD
      • ETHUSD
    • Configuration du module de levier

    Module de visualisation pour construire des stratégies de trading - avancé

    Utilisé pour définir l’effet de levier pour les contrats à terme sur devises numériques.

      # 注意 : 回测不支持。
    

    Comme dans la stratégie JavaScript :

      function main () {
          exchange.SetMarginLevel(10)
      }
    

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 !