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

Explication détaillée de la configuration de la stratégie d'échange quantitative de devises numériques

Créé le: 2019-09-02 09:39:59, Mis à jour le: 2024-12-17 20:42:42
comments   2
hits   4296

Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Lorsque vous commencez à concevoir des stratégies de trading quantitatives de devises numériques, vous avez souvent des exigences stratégiques variées. Quelle que soit la langue ou la plateforme que vous utilisez, vous rencontrerez des exigences de conception de stratégie pour diverses situations. Par exemple, il est parfois nécessaire de faire tourner plusieurs variétés, il est parfois nécessaire de couvrir plusieurs plateformes, et il est parfois nécessaire de négocier simultanément différentes variétés, etc. Partageons quelques expériences de conception lors de la mise en œuvre d’exigences stratégiques. La plateforme d’apprentissage utilise toujours la plateforme de trading quantitative Inventor (https://www.fmz.com), et le marché sélectionné est le marché des devises numériques.

  • ### Conception de stratégie « multi-devises »

Ce type de demande nécessite souvent la rédaction d’une stratégie de tendance multi-variété, d’une stratégie de grille multi-variété, etc., ce qui nécessite une exécution itérative de la logique de la stratégie en utilisant différentes paires de trading. Généralement conçu comme ceci :

  function Process (symbol) {
      exchange.IO("currency", symbol)
      var ticker = _C(exchange.GetTicker)
      Log("已经切换交易对,按照策略逻辑处理交易对 :", symbol, "行情:", ticker)
      // ...
      // ..
      // .
  }  

  function main(){
      var symbols = ["BTC_USDT", "LTC_USDT", "ETH_USDT"]
      while (true) {
          for (var i = 0 ; i < symbols.length; i++) {
              Process(symbols[i])
              Sleep(500)
          }
      }
  }

Nous configurons le robot : Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Comme vous pouvez le voir, cela permet de configurer un objet d’échange sur le robot, de changer de paires de trading, d’obtenir les conditions de marché de différentes paires de trading, de réaliser des conditions de marché multi-variétés et d’exécuter sous une logique de stratégie. On peut voir que les trois paires de trading que nous avons définies : BTC_USDT, LTC_USDT, ETH_USDT, sont itérées à tour de rôle dans la boucle pour obtenir les informations de marché. Après avoir obtenu les informations de marché, nous pouvons détecter spécifiquement les informations de marché et déclencher la logique de trading conçue par la stratégie.

Certains étudiants peuvent dire : « Je n’aime pas changer de paires de trading. C’est un peu gênant et la conception de la stratégie n’est pas claire. » Il existe en effet d’autres méthodes de conception, dont une autre que nous présentons ci-dessous.

  • ### Configurer plusieurs objets d’échange pour le robot avec le même compte d’échange

Obtenez des données de marché pour différentes paires de trading via plusieurs objets d’échange et exécutez-les dans la logique de stratégie itérative. Par exemple, configurez le robot comme ceci : configurez trois objets d’échange pour le robot et définissez les paires de trading sur BTC_USDT, LTC_USDT et ETH_USDT respectivement. Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

L’objet d’échange nommé « OKEX Spot V3 Test » se trouve dans le centre de contrôle, page de configuration de l’échange : Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques Déjà configuré.

Modifiez le code car cette fois nous avons ajouté plusieurs objets d’échange au robot, à savoir les objets d’échange avec les paires de trading BTC_USDT, LTC_USDT et ETH_USDT.

  function Process (e) {
      var ticker = _C(e.GetTicker)
      Log("交易所", e.GetName(), "按照策略逻辑处理交易对 :", e.GetCurrency(), "行情:", ticker)
      // ...
      // ..
      // .
  }  

  function main(){
      while (true) {
          for (var i = 0 ; i < exchanges.length; i++) {
              Process(exchanges[i])
              Sleep(500)
          }
      }
  }

Exécutez le robot : Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Les exemples décrits ci-dessus concernent le changement de paires de trading ou l’ajout d’un objet d’échange avec plusieurs paires de trading différentes à un compte configuré. Tous sont configurés à l’aide d’un seul compte d’échange (à l’aide d’un échange configuré). Alors, comment utiliser plusieurs comptes d’échange dans une seule stratégie ?

  • ### Stratégies pour utiliser plusieurs comptes d’échange

Certaines stratégies incluent, par exemple, la couverture inter-marchés sur plusieurs bourses, les stratégies multi-comptes au sein d’une seule bourse, etc.

  • Plusieurs échanges sont configurés, mais ce sont des échanges différents. Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques Par exemple, j’ai configuré 2 échanges dans la page Centre de contrôle->Exchange->Ajouter Exchange. Je peux accéder aux informations sur les actifs des comptes configurés sur ces deux échanges dans la stratégie.

    Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

    function main(){
        Log(exchanges[0].GetAccount())    // 打印第一个 交易所对象的账户资产信息,即火币期货 这个交易所的资产信息。
        Log(exchanges[1].GetAccount())    // ... 打印Bit-Z这个交易所的资产信息
    }
    

    Bien sûr, je peux également ajouter la configuration d’échange des deuxième et troisième comptes à un échange.

  • Plusieurs configurations d’échange constituent le même échange.

    Par exemple, ajoutons un autre compte Huobi Futures. Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

    Comme vous pouvez le voir, deux comptes de l’échange « Huobi Futures » ont été configurés.

    Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

    Lors de la création d’une stratégie, un objet Huobi Futures Exchange apparaît dans l’option « Modifier la configuration » du robot pour sélection.

    Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

    Par exemple, vous pouvez avoir deux comptes, l’un utilisant une stratégie de grille « vendre d’abord, acheter plus tard » (vers le haut) et l’autre utilisant une stratégie de grille « acheter d’abord, vendre plus tard » (vers le bas).

    À travers les deux exemples ci-dessus

    Voici la différence entre la configuration de plusieurs objets d’échange sur le robot et la configuration de plusieurs objets d’échange pour le robot avec le même compte d’échange :

    À première vue, cela ressemble un peu à l’exemple de « Configuration de plusieurs objets d’échange pour le robot avec le même compte d’échange » expliqué ci-dessus, mais il existe des différences. La différence est que l’exemple ci-dessus est une configuration d’échange, c’est-à-dire :

    Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

    Lors de la configuration de l’objet d’échange dans le robot, utilisez toujours : Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques Cette configuration.

    C’est juste que les paramètres de la paire de trading sont différents lors de l’ajout d’un objet d’échange. Si vous appelez la fonction GetAccount, vous accéderez toujours aux informations sur les actifs du même compte.

    Cependant: Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques Les deux objets Huobi Futures Exchange configurés de cette manière, bien que tous deux soient des Huobi Futures, représentent des comptes d’échange différents.

  • Utilisez efficacement la configuration des échanges pour faciliter la conception de stratégies de contrats à terme sur devises numériques.

Parfois, lors de la mise en œuvre d’une stratégie de couverture de contrat de monnaie numérique, afin de saisir des opportunités de trading éphémères, de nombreux scénarios nécessitent des ordres simultanés. Cependant, comme les contrats sont différents, vous devez passer au contrat correspondant lorsque vous obtenez des informations sur le marché et passez des commandes. Lors de l’utilisation de la fonction exchange.Go pour exécuter simultanément des fonctions de commande ou obtenir des informations sur le marché, elle n’est pas très rapide en raison de problèmes de synchronisation. Et la conception des contrats de commutation fait que la logique ne semble pas si simple. Alors, existe-t-il une meilleure solution ?

Bien sûr qu’il y a un moyen ! Nous pouvons ajouter deux objets d’échange au robot selon la description ci-dessus de « Configuration de plusieurs objets d’échange pour le robot avec le même compte d’échange ». Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques Ensuite, toujours en utilisant cette configuration d’échange, ajoutez un autre objet d’échange. Une boîte de dialogue apparaîtra à ce moment-là ! Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques Une configuration de compte d’échange ne peut pas ajouter d’objets d’échange avec la même devise et la même paire de trading.

Que dois-je faire dans ce cas ? Il semble qu’il ne soit pas possible de laisser le robot de stratégie utiliser deux objets d’échange et de lier l’objet d’échange à un code de compte d’échange ? Il y a encore du chemin !

Nous allons dans « Centre de contrôle » -> « Bourse » et ajoutons une configuration d’échange de contrats à terme OKEX.

Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Après la configuration, cliquez sur Enregistrer.

Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

### « Mise en surbrillance » Nous avons maintenant deux configurations d’échange, mais les mêmes informations de configuration de CLÉ API sont utilisées.

Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

Quels sont les avantages de cela ? Bien sûr, lors de la rédaction d’une stratégie, la conception est très simple !

  function main(){
      exchanges[0].SetContractType("quarter")        // 设置第一个添加的交易所对象 当前的合约为季度合约
      exchanges[1].SetContractType("this_week")      // 设置第二个添加的交易所对象,当前的合约为当周合约

      while (true) {
          var beginTime = new Date().getTime()       // 记录这次获取行情时起始的时间戳。
          var rA = exchanges[0].Go("GetTicker")      // 创建并发 线程去获取 第一个交易所对象,也就是季度合约的行情数据。
          var rB = exchanges[1].Go("GetTicker")      // 创建并发 线程去获取 第二个交易所对象,也就是当周合约的行情数据。

          var tickerA = rA.wait()                    // 并发的两个线程各自执行自己的任务,这里等待获取数据,A 等待时,B任务也在执行。
          var tickerB = rB.wait()                    // 所以这里看似是顺序执行,实际在底层是并发的。只不过获取的时候是顺序先获取A,在获取B。
          var endTime = new Date().getTime()         // 记录并发获取两个合约行情结束时的时间戳。

          if (tickerA && tickerB) {                  // 如果获取的数据没有问题,执行以下逻辑。
              var diff = tickerA.Last - tickerB.Last // 计算差价
              $.PlotLine("diff", diff)               // 使用画线类库把差价画在图表上。
              if (diff > 500) {                      // 如果差价大于500, 对冲套利(当然设置500 的差价是比较大的,很少见。)
                  // 对冲
                  rA = exchanges[0].Go("Sell", tickerA.Buy, 1)     // 并发线程创建 季度合约下卖单
                  rB = exchanges[1].Go("Buy", tickerB.Sell, 1)     // 并发线程创建 当周合约下买单

                  var idA = rA.wait()           // 等待 返回下单结果,返回的是订单ID
                  var idB = rB.wait()           // ...
              }

              // ...
          }

          LogStatus(_D(), "并发获取两个合约行情耗时:", endTime - beginTime, "毫秒。")    // 显示在状态栏上时间,以便知道程序在执行。
          Sleep(500)
      }
  }

Cette stratégie de conception semble-t-elle beaucoup plus simple et les idées beaucoup plus claires ?

Fonctionnement du disque réel : Explication détaillée de la configuration de la stratégie d’échange quantitative de devises numériques

On peut constater qu’il ne faut qu’environ 50 millisecondes pour obtenir simultanément les informations de marché de deux contrats à chaque fois.