Détails de la configuration des plateformes d'échange de devises numériques

Auteur:Le petit rêve, Créé: 2019-09-02 09:39:59, Mis à jour: 2023-10-19 21:07:41

img

Détails de la configuration des plateformes d'échange de devises numériques

Lorsque vous commencez à concevoir une stratégie de trading quantitatif de crypto-monnaie, il y a souvent une grande variété de besoins stratégiques, et vous rencontrerez des besoins stratégiques dans une variété de situations, quelle que soit la langue utilisée, quelle que soit la plate-forme. Par exemple, il faut parfois plusieurs variétés de rotations, parfois plusieurs plateformes de couverture, parfois plusieurs variétés de transactions en même temps, etc. Nous partagerons ci-dessous quelques expériences de conception pour réaliser les besoins stratégiques. Les plateformes d'apprentissage utilisent toujours les plateformes de négociation quantitative des inventeurs.https://www.fmz.comLe marché a choisi le marché de la monnaie numérique.

  • La stratégie de la "multi-monnaie"

    Ces besoins sont principalement liés à l'écriture d'une stratégie de tendance multivariée, d'une stratégie de grille multivariée, etc., qui doit être exécutée en fonction de la logique de la stratégie et de l'hypothèse d'un marché avec des transactions différentes. Il est 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 avons configuré le robot:img

    img

    On peut voir que cela permet de configurer un objet d'échange sur un robot, de changer de paire de transactions, d'obtenir des marchés de paires de transactions différentes, de réaliser une variété de marchés et de les exécuter selon une logique stratégique. Vous pouvez voir que les trois paires de transactions que nous définissons: BTC_USDT, LTC_USDT, ETH_USDT, sont récurrentes dans la boucle pour acquérir des marchés, et après avoir obtenu des marchés, il est possible de détecter les marchés et de déclencher une logique de trading stratégique.

    Certains élèves peuvent dire: "Je n'aime pas changer de paire, je me sens un peu gêné, la stratégie n'est pas si claire". Il existe en effet d'autres façons de concevoir, comme celle que nous allons vous présenter ci-dessous.

  • Le même compte d'échange configure plusieurs objets d'échange pour le robot

    Les données de marché de différentes paires de transactions sont obtenues à travers plusieurs objets d'échange et sont exécutées dans la logique de la stratégie d'irradiation. Par exemple, configurez le robot comme suit: configurez trois objets d'échange pour le robot, les paires de transactions étant respectivement définies comme BTC_USDT, LTC_USDT et ETH_USDT.img

    Le nom de l'objet de l'échange est "OKEX Live V3 Test", dans le centre de contrôle, sur la page de configuration de l'échange:imgLe système est configuré.

    Modifiez le code, car cette fois, nous avons ajouté plusieurs objets d'échange au robot, les objets d'échange pour les paires de transactions 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)
            }
        }
    }
    

    Le robot est en train de fonctionner:img

    L'exemple ci-dessus peut être de changer de paire de transactions ou d'ajouter des objets d'échange à plusieurs paires de transactions différentes dans un seul compte de configuration. Tout est simplement configuré avec un seul compte d'échange. Comment utiliser plusieurs comptes d'échange dans une stratégie?

  • Stratégies pour utiliser plusieurs comptes

    Certaines stratégies, comme la couverture multi-échanges, la couverture multi-accounts sur un seul échange, etc.

    • Il s'agit d'un réseau de banques qui a été créé par le gouvernement de l'Etat de New York.imgPar exemple, j'ai configuré deux bourses dans le centre de contrôle - > bourses - > ajouter des bourses page. Je peux accéder aux informations sur les actifs des comptes configurés par ces deux plateformes dans la stratégie.

      img

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

      Bien sûr, je peux aussi ajouter une configuration d'échange pour un deuxième ou un troisième compte à un échange.

    • Il y a plusieurs plateformes qui sont configurées pour être la même plateforme.

      Par exemple, nous ajoutons un compte de jeton à terme.img

      Comme vous pouvez le voir, cela configure les comptes de deux "token futures" d'échanges.

      img

      Lors de la création de la stratégie, une autre option d'échange de jetons est apparue dans l'option " Modifier la configuration " du robot.

      img

      Par exemple, cela permet à deux comptes d'avoir une stratégie de grille d'achat (en haut) et une stratégie de grille d'achat (en bas).

      En utilisant les deux exemples ci-dessus

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

      L'exemple de "le même compte d'échange configure plusieurs objets d'échange pour le robot" est similaire à celui présenté ci-dessus, mais il y a une différence. La différence réside dans le fait que l'exemple ci-dessus est une configuration d'échange, à savoir:

      img

      L'objectif de l'échange robotisé est toujours de:imgCette configuration.

      Il s'agit simplement de l'ajout d'un objet d'échange, qui est différent de la transaction. Si vous appelez la fonction GetAccount, toutes les informations sur les actifs du même compte sont toujours consultées.

      Cependant:imgLes deux objets de l'échange à terme de jetons ainsi configurés, bien qu'ils soient des jetons à terme, sont représentés par des comptes d'échange différents.

  • La configuration de l'échange de crypto-monnaie permet de simplifier la stratégie de conception des contrats à terme.

    Parfois, dans la stratégie de couverture de contrats de devises numériques, de nombreux scénarios nécessitent des commandes simultanées pour saisir des opportunités de trading qui disparaissent instantanément. Mais comme les contrats sont différents, il est nécessaire de passer à un contrat correspondant lors de l'acquisition d'un marché et de passer à un contrat correspondant lors de l'opération.

    Bien sûr qu'il y a une solution! Nous pouvons ajouter deux objets d'échange à un robot, comme nous l'avons dit ci-dessus: "Le même compte d'échange configure plusieurs objets d'échange pour le robot".imgEnsuite, utilisez cette configuration d'échange pour ajouter un objet d'échange. Une boîte d'avertissement apparaît!imgUne configuration d'un compte d'échange ne permet pas d'ajouter des objets d'échange de la même monnaie ou de la même paire de transactions.

    Comment cela fonctionne-t-il? Ne semble-t-il pas possible de faire en sorte que les robots stratégiques utilisent deux objets d'échange et qu'ils aient un code de compte d'échange lié à ces objets? Il y a une solution!

    Nous avons ajouté une configuration d'échange de contrats à terme OKEX dans le centre de contrôle - > l'échange.

    img

    Cliquez sur "Enregistrer" pour une configuration ultérieure.

    img

    "Priorité" signifie que nous avons deux configurations d'échanges, mais que nous utilisons la même information de configuration API KEY.

    img

    Quel est l'avantage de cela? Bien sûr, quand il s'agit de créer une stratégie, la conception est 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)
        }
    }
    

    La stratégie de conception est-elle si simple et si claire?

    Le disque fonctionne:img

    Comme vous pouvez le voir, chaque fois que vous obtenez deux contrats en même temps, cela ne prend que 50 millisecondes environ.


Relationnée

Plus de

Le dévouement est quantifiéLa dernière méthode est très bonne.

- Je ne sais pas.C'est vraiment très utile!