Details zur Konfiguration von Börsen für die Quantifizierung von Währungen

Schriftsteller:Kleine Träume, Erstellt: 2019-09-02 09:39:59, Aktualisiert: 2023-10-19 21:07:41

img

Details zur Konfiguration von Börsen für die Quantifizierung von Währungen

Bei der Entwicklung einer Quantifizierungsstrategie für digitale Währungen gibt es oft verschiedene strategische Anforderungen, die unabhängig von der Sprache und der Plattform unterschiedlich sind. Zum Beispiel sind manchmal verschiedene Spiele erforderlich, manchmal sind verschiedene Plattformen erforderlich, manchmal sind verschiedene Märkte erforderlich. Die Lernplattformen nutzen immer noch die Quantitative Trading Plattformen der Erfinder.https://www.fmz.comDer Markt wählt den Markt für digitale Währungen.

  • Strategie für die Multikurrency

    Diese Bedürfnisse werden häufig durch die Erstellung einer vielfältigen Trendstrategie, einer vielfältigen Gitterstrategie usw. bedingt, die auf die Strategielogik ausgerichtet und mit verschiedenen Transaktionen auf den Markt iterativ ausgeführt wird. Das ist normalerweise so:

    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)
            }
        }
    }
    

    Wir konfigurieren die Roboter so:img

    img

    Man kann sehen, dass dies ermöglicht, ein Austauschobjekt auf dem Roboter zu konfigurieren, Paare zu wechseln, verschiedene Paare zu erhalten, verschiedene Märkte zu erstellen und unter einer strategischen Logik auszuführen. Sie können sehen, dass die drei Paare, die wir definieren: BTC_USDT, LTC_USDT, ETH_USDT, im Zyklus wiederholt Märkte erwerben, die nach dem Erwerb von Märkten speziell für die Marktermittlung und den Auslöser der strategisch konzipierten Handelslogik verwendet werden können.

    Einige Schüler werden vielleicht sagen: "Ich mag keine Wechselpaare, das ist ein bisschen schwierig, die Strategie ist nicht klar". Aber es gibt auch andere Design-Methoden, die wir hier unten beschreiben.

  • Das gleiche Börsenkonto konfiguriert mehrere Börsenobjekte für den Roboter

    Die Marktdaten für verschiedene Handelspare werden über mehrere Austauschobjekte erfasst und in einer Iderative Strategie-Logik ausgeführt. So konfiguriert man einen Roboter zum Beispiel: Der Roboter konfiguriert drei Börsenobjekte, wobei die Handelspare BTC_USDT, LTC_USDT und ETH_USDT sind.img

    Der Name des Austauschobjekts "OKEX Live V3 Test" ist im Kontrollzentrum, auf der Austauschkonfigurationsseite:imgIch habe es bereits konfiguriert.

    Ändern Sie den Code, denn wir haben dem Roboter mehrere Börsenobjekte hinzugefügt, die für BTC_USDT, LTC_USDT und ETH_USDT sind.

    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)
            }
        }
    }
    

    Ich bin ein Roboter.img

    Die oben beschriebenen Beispiele sind entweder das Wechseln von Paaren oder das Hinzufügen mehrerer verschiedener Paare zu einem Konfigurationskonto. Die meisten von ihnen verwenden nur eine Konfigurierung eines Austauschkontos. Wie kann man also mehrere Austauschkonten in einer Strategie verwenden?

  • Strategien für mehrere Börsenkonten

    Einige Strategien sind z. B. Multi-Exchange Cross-Market Hedging, Multi-Account-Politik innerhalb einer einzigen Börse usw.

    • Es gibt mehrere Börsen, aber es sind verschiedene Börsen.imgZum Beispiel konfiguriere ich in Control Center - > Exchange - > Add Exchange Seite zwei Börsen. Ich habe in der Strategie Zugriff auf die Anlageninformationen der Konten, die von diesen beiden Börsen konfiguriert wurden.

      img

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

      Natürlich kann ich auch eine Austauschkonfiguration für ein zweites oder drittes Konto hinzufügen.

    • Es gibt mehrere Anbieter, die die gleiche Börse sind.

      Zum Beispiel fügen wir ein Token-Futures-Konto hinzu.img

      Wie Sie sehen können, werden die Konten der beiden "Token-Futures"-Börsen so konfiguriert.

      img

      Bei der Erstellung der Strategie erscheint ein weiteres Objekt des Token-Futures-Austauschs in der Option "Konfiguration ändern" des Bots.

      img

      So können beispielsweise zwei Konten eine Kauf- und Verkaufs-Strategie (nach oben) und eine Kauf- und Verkaufs-Strategie (nach unten) haben.

      Wir haben zwei Beispiele.

      Hier ist der Unterschied zwischen der Konfiguration mehrerer Börsenobjekte für Roboter und der Konfiguration mehrerer Börsenobjekte für Roboter für ein und dasselbe Börsenkonto:

      Das ist ein ähnliches Beispiel wie das oben beschriebene Beispiel: "Ein einziges Börsenkonto konfiguriert mehrere Börsenobjekte für Roboter", aber es gibt einen Unterschied. Der Unterschied besteht darin, dass das oben genannte Beispiel eine Börsenkonfiguration ist, nämlich:

      img

      Bei der Konfiguration von Roboter-Börsen werden immer folgende Objekte verwendet:imgDiese Konfiguration.

      Es ist nur, wenn ein Austauschobjekt hinzugefügt wird, dass die Transaktionen unterschiedlich eingestellt sind. Wenn die GetAccount-Funktion aufgerufen wird, werden immer alle Vermögensdaten des gleichen Kontos aufgerufen.

      Die Menschen sind nicht mehr in Sicherheit.imgZwei so konfigurierte Token-Futures-Exchange-Objekte, obwohl beide Token-Futures sind, werden von verschiedenen Börsenkonten repräsentiert.

  • Die Konfiguration der Börsen erleichtert die Gestaltung von Futures-Strategien für digitale Währungen.

    Manchmal ist es notwendig, dass viele Szenarien bei der Strategie der Hedging von Kryptowährungskontrakten gleichzeitig ausgefüllt werden, um eine flüchtige Handelsmöglichkeit zu ergreifen. Aber da die Kontrakte unterschiedlich sind, müssen Sie bei der Erfassung des Marktes auf den entsprechenden Vertrag wechseln, wenn der Auftrag ausgeführt wird. Bei der Verwendung der Exchange.Go-Funktion ist die gleichzeitige Ausführung der einzelnen Funktion oder die Erfassung des Marktes aufgrund von Synchronisationsproblemen nicht schnell.

    Natürlich gibt es eine Möglichkeit! Wir können zwei Börsenobjekte dem Roboter hinzufügen, wie oben beschrieben: "Ein einziges Börsenkonto kann mehrere Börsenobjekte für den Roboter konfigurieren".imgDann verwenden Sie diese Austauschkonfiguration, um ein Austauschobjekt hinzuzufügen. Das ist ein Tipp-Box, das erscheint.imgEin Austauschkonto ist so konfiguriert, dass keine Austauschobjekte mit derselben Währung, demselben Handelspärchen hinzugefügt werden können.

    Wie geht das? Es scheint, dass es nicht möglich ist, dass Strategie-Roboter zwei Börsenobjekte verwenden und einen Börsenkontocode an die Börsenobjekte binden? Es gibt eine Lösung!

    Wir fügen eine OKEX-Futures-Börsenkonfiguration in "Control Center" - "Exchange" hinzu.

    img

    Klicken Sie auf Speichern, wenn Sie es konfiguriert haben.

    img

    Das bedeutet, dass wir zwei Börsenkonfigurationen haben, die jedoch die gleiche API KEY-Konfiguration verwenden.

    img

    Was sind die Vorteile? Natürlich ist das Design einfach, wenn es um die Strategie geht.

    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)
        }
    }
    

    Das ist eine sehr einfache Strategie, die viele Dinge einfacher und klarer macht.

    Die Festplatte läuft:img

    Wie Sie sehen können, dauert es nur etwa 50 Millisekunden, um zwei Kontrakte gleichzeitig zu erwerben.


Verwandt

Mehr

Aufmerksamkeit und QuantitätDie letzte Methode ist sehr gut.

- Ich weiß nicht.Das ist sehr hilfreich.