Les modules visualisés construisent des stratégies de transaction - progressivement

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2019-07-17 10:22:20, Mis à jour: 2023-10-24 21:40:50

可视化模块搭建交易策略–进阶

Les modules de visualisation pour créer des stratégies de transactions sont en cours de développement

Apprendre à construire des stratégies de transaction avec des modules visualisés est une première étape, une compréhension conceptuelle de la construction et de l'assemblage des modules visualisés est nécessaire. Il est plus facile d'apprendre à utiliser d'autres modules. Il est possible de combiner des fonctionnalités plus complexes.

  • ## Module de catégorie de transaction

Dans les études et les tests précédents, nous avons abordé plusieurs modules de "catégories de transactions". Par exemple: Le module "Acquérir des marchés" Module "Les échanges acquièrent les lignes K" Je ne sais pas.

Les utilisateurs de Twitter ne sont pas les seuls à utiliser ces outils.

  • 1°, obtenir le nombre d'échanges

    可视化模块搭建交易策略–进阶

    Lors de la rédaction d'une stratégie utilisant un robot de trading, il est possible d'ajouter plus d'un objet d'échange, comme une stratégie de couverture. Il peut être nécessaire de parcourir (parcourir signifie visiter une fois par une fois) l'objet de l'échange, pour visiter le marché. Il est donc nécessaire d'utiliser des modules pour obtenir le nombre d'échanges.

    Nous pouvons d'abord imprimer le nombre d'échanges actuellement configurés en utilisant une structure simple:可视化模块搭建交易策略–进阶

    Il s'agit en fait d'appeler le code de stratégie JavaScript suivant:

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

    Voici les résultats de cette combinaison de modules:可视化模块搭建交易策略–进阶

    Vous pouvez voir que nous avons ajouté 3 objets d'échange, représentant trois comptes d'échange différents, et que le résultat de la réévaluation des journaux est 3.

  • 2° Obtenir le nom de l'échange

    可视化模块搭建交易策略–进阶

    Lorsque vous ajoutez trois objets d'échange, la barre de bas de page affiche trois options. Apprendre un module de cycle à l'avance, dans le type de cycle.可视化模块搭建交易策略–进阶

    Il y a aussi un module de conditionnement à apprendre à l'avance:可视化模块搭建交易策略–进阶Les conditions peuvent être écrites comme suit:可视化模块搭建交易策略–进阶

    Nous avons ajouté le nom de l'échange en utilisant le module circulaire. Le module de jugement conditionnel est utilisé pour déterminer si le nombre de cycles actuel correspond au nom de l'échange à imprimer.

    可视化模块搭建交易策略–进阶

    Les résultats de la reprise:可视化模块搭建交易策略–进阶

    Par exemple, le code de 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° Obtenir les paires de transactions en cours sur l'échange

    可视化模块搭建交易策略–进阶

    Un exemple simple est d'obtenir la première paire de transactions de l'objet de l'échange dans la configuration actuelle et d'attribuer une valeur à la variable text (crée à l'avance dans la catégorie des variables).

    可视化模块搭建交易策略–进阶Les résultats des tests:可视化模块搭建交易策略–进阶

    Si vous appelez le code de stratégie JavaScript:

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4 modules de sous-rubrique

    可视化模块搭建交易策略–进阶Le module est très important pour les opérations de commande, la première position de la souris () est intégrée à la variable de prix, pour spécifier le prix de la commande, ou pour entrer directement des valeurs fixes. La deuxième position de la souris () est intégrée à la variable de la quantité à commander, pour spécifier la quantité à commander.

    Par exemple, nous avons composé un exemple de paiement à partir du prix le plus récent basé sur les données de transaction de tick actuelles, plus 10 dollars de prix glissant, la quantité de la commande est réglée à 0,1 pièce et l'ID de l'ordre est imprimé.可视化模块搭建交易策略–进阶

    Les résultats de la reprise:可视化模块搭建交易策略–进阶

    Par exemple, le code de stratégie JavaScript suivant:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5° Obtenir les modules des transactions en cours sur les commandes de commande

    可视化模块搭建交易策略–进阶

    Le module renvoie tous les ordres de commande dans l'état d'une paire de transactions en cours qui n'est pas terminée, et renvoie une structure de liste (une matrice) qui peut être traitée avec un module de type liste (une opération de parcours, etc.). Par exemple: nous avons modifié un peu le modèle de module de vente au détail ci-dessus, en changeant le prix de 10 $ ajouté au moment de la commande en moins de 10 $. L'ordre ne sera pas immédiatement traité, mais sera suspendu à la profondeur de vente (c'est-à-dire à un certain niveau dans un achat, un achat, un achat N), de sorte que l'ordre est dans un état de vente au détail en attente de traitement. Ensuite, nous utilisons le module " Obtenir les commandes en attente d'une transaction " pour obtenir une liste des commandes en attente d'une transaction. Afin d'éviter que la transaction des commandes dans les transactions ultérieures n'affecte les dernières observations de la réévaluation, nous avons imprimé une liste d'ordres après l'exécution du module " Obtenir la transaction en cours sur l'ordre de commande " et immédiatement arrêté le processus à l'aide du module " Jeter une exception ".

    可视化模块搭建交易策略–进阶

    Les résultats de cette analyse montrent:可视化模块搭建交易策略–进阶

    Le prix de la prochaine commande est inférieur au prix actuel de 10 dollars, donc il n'y aura pas de transaction immédiate. Les commandes en attente sont ensuite récupérées et imprimées. La dernière chose à faire est de jeter une exception et d'arrêter le programme.

    Les modules sont assemblés comme s'ils appelaient 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, annuler les modules de commande

    可视化模块搭建交易策略–进阶

    Le module est utilisé pour annuler les commandes.

    Il y a beaucoup de scénarios qui nécessitent une telle opération lors de l'écriture d'une stratégie:

    Nous avons décidé de supprimer toutes les commandes actuellement en attente.

    Il est certain que cela nécessite l'utilisation d'un "module de retrait", et en même temps que l'apprentissage du module de retrait, nous pouvons utiliser le module d'acquisition de la transaction en cours par ordre de commande avec le module de retrait de la combinaison de 5 pour réaliser cette fonctionnalité.

    Tout d'abord, pour tester l'annulation de toutes les commandes, il n'est pas évident de suspendre une seule commande, nous commençons à commander deux fois et le nombre de prix est différent pour distinguer les deux commandes.

    可视化模块搭建交易策略–进阶

    Utilisez le module "Passez par chaque élément de la liste" dans le module de type de cycle pour parcourir les commandes de la liste de listes en cours.可视化模块搭建交易策略–进阶Lors de l'exploration, chaque ordre extrait est attribué à un module de variable order ((crée dans le type de module de variable, comme illustré ci-dessous:)可视化模块搭建交易策略–进阶Dans le module de type d'outil:可视化模块搭建交易策略–进阶Retirer l'ID de l'ordre, le transmettre à l'emplacement de l'ordre de révocation et exécuter l'ordre de révocation.

    Le dépistage est en cours:可视化模块搭建交易策略–进阶

    Décrire en utilisant la stratégie 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. Module pour obtenir les détails d'une commande en fonction de l'ID de commande

    可视化模块搭建交易策略–进阶

    Le module est positionné sur un module d'accès à une variable d'identification d'ordre pour retourner les détails de l'ordre.

    可视化模块搭建交易策略–进阶

    Les commandes qui ont été retournées après le lancement:可视化模块搭建交易策略–进阶

    Une comparaison des résultats de l'expérience de fonctionnement avec le 5 tonnes de soupape montre que l'ordre imprimé est un message d'ordre distinct, sans[]Les parenthèses sont dans le paquet. L'exemple du module 5 est une liste, ce modèle renvoie un message d'ordre séparé (obtention d'une variable ID basée sur la position du module dans lequel le module est passé).

    Les exemples ci-dessus sont les mêmes que ceux utilisés pour exécuter une stratégie JavaScript:

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

    Les modules ci-dessus, nous les apprenons un par un, et nous testons les échanges que nous avons mis en place pour les contrats à terme sur produits.

    Réglage des paramètres:可视化模块搭建交易策略–进阶Les exemples suivants sont des tests de retouche basés sur ce paramètre.

    • Déterminez le module d'état de connexion des serveurs des futures de produits CTP et des futures de sociétés

    可视化模块搭建交易策略–进阶

    Les contrats à terme sur les produits ont des heures d'ouverture et des heures d'arrêt.

    • Mettre en place un module de contrat

    可视化模块搭建交易策略–进阶

    Lorsque l'objet de l'échange est configuré comme un échange à terme, l'erreur se produit lorsque le marché est consulté directement sans avoir mis en place de contrat:可视化模块搭建交易策略–进阶

    Nous avons mis en place un contrat pour MA909, et le méthanol est le principal contrat actuellement.可视化模块搭建交易策略–进阶Cela permet d'obtenir la valeur actuelle du prix de la tique actuelle du contrat MA909.

    • Mettre en place des modules unidirectionnels pour les contrats à terme

    Exécution des sous-modules可视化模块搭建交易策略–进阶
    Il est nécessaire de spécifier la direction vers laquelle vous allez, car les contrats à terme ont: acheter: faire plus d'actions Vendre: stockage ouvert closebuy: le plus grand nombre possible closesell: stockage à plat Quatre directions (commodity futures) et deux directions supplémentaires: closebuy_today, closeesell_today et close-buy_today.

    Par exemple, si vous définissez le module de sous-traitance comme un achat, il y a deux significations, le stockage en plus et le stockage en moins, ce qui produit une dualité. Il est donc nécessaire de configurer une direction de négociation des contrats à terme pour définir une direction de négociation claire.

    可视化模块搭建交易策略–进阶

    Les résultats montrent:可视化模块搭建交易策略–进阶

    Par exemple, le code de 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 négociation de contrats à terme pour la monnaie numérique

    L'utilisation des futures de crypto-monnaie est essentiellement la même que celle des futures de produits dans les huit catégories ci-dessus.

    • Le code du contrat peut être:

      • this_week: Cette semaine
      • Next_week: La semaine suivante
      • Quartier: Quartier
      • Swap: Persistant
    • BitMEX:

      • XBTUSD
      • ETHUSD
    • Mettre en place le module de levier

    可视化模块搭建交易策略–进阶

    Les utilisateurs peuvent utiliser des outils similaires pour créer un effet de levier sur les devises numériques.

      # 注意 : 回测不支持。
    

    Il y a des stratégies de JavaScript comme:

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

Une stratégie de visualisation de paradigmes:

Pour plus de détails, consultez:https://www.fmz.com/square

Autres articles dans cette série

C'est un programme ennuyeux, qui peut être facilement fait avec des blocs, essayez-le vous-même, c'est très amusant!


Contenu lié

En savoir plus

Je vous en prie.Après avoir appris à programmer pendant plus d'un mois, je n'arrive toujours pas à écrire une stratégie, et maintenant je suis entièrement dépendante des blocs!

L'inventeur de la quantification - un petit rêveMerci pour votre soutien, et cette série continuera. En fait, selon le code de stratégie JavaScript correspondant à chaque paradigme, il est facile de maîtriser les stratégies écrites en JS.