avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Erstellt in: 2019-09-02 09:39:59, aktualisiert am: 2024-12-17 20:42:42
comments   2
hits   4296

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Wenn Sie gerade erst mit der Entwicklung quantitativer Handelsstrategien für digitale Währungen beginnen, haben Sie häufig unterschiedliche Strategieanforderungen. Unabhängig davon, welche Sprache oder Plattform Sie verwenden, werden Sie auf Strategiedesignanforderungen für unterschiedliche Situationen stoßen. Beispielsweise müssen manchmal mehrere Sorten rotiert werden, manchmal müssen mehrere Plattformen abgesichert werden und manchmal müssen unterschiedliche Sorten gleichzeitig gehandelt werden usw. Lassen Sie uns einige Designerfahrungen bei der Implementierung strategischer Anforderungen austauschen. Die Lernplattform verwendet weiterhin die Inventor Quantitative Trading Platform (https://www.fmz.com) und der ausgewählte Markt ist der Markt für digitale Währungen.

  • ### Strategiedesign „Multi-Währung“

Diese Art von Anforderung erfordert häufig das Schreiben einer Trendstrategie mit mehreren Varianten, einer Rasterstrategie mit mehreren Varianten usw., was eine iterative Ausführung der Strategielogik unter Verwendung verschiedener Handelspaare erfordert. Normalerweise so aufgebaut:

  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 den Roboter: Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Wie Sie sehen, ist es dadurch möglich, ein Austauschobjekt auf dem Roboter zu konfigurieren, Handelspaare zu wechseln, Marktbedingungen verschiedener Handelspaare abzurufen, Marktbedingungen unterschiedlicher Art durchzuführen und gemäß einer Strategielogik auszuführen. Es ist ersichtlich, dass die drei von uns definierten Handelspaare: BTC_USDT, LTC_USDT, ETH_USDT, nacheinander in der Schleife iteriert werden, um die Marktinformationen zu erhalten. Nachdem wir die Marktinformationen erhalten haben, können wir die Marktinformationen gezielt erkennen und die entworfene Handelslogik auslösen durch die Strategie.

Einige Studenten sagen vielleicht: „Ich mag es nicht, Handelspaare zu wechseln. Es fühlt sich ein bisschen mühsam an und der Strategieentwurf ist nicht klar.“ Es gibt tatsächlich noch andere Entwurfsmethoden. Eine weitere Methode stellen wir weiter unten vor.

  • ### Konfigurieren Sie mehrere Exchange-Objekte für den Roboter mit demselben Exchange-Konto

Erhalten Sie Marktdaten für verschiedene Handelspaare über mehrere Börsenobjekte und führen Sie sie in der iterativen Strategielogik aus. Konfigurieren Sie den Roboter beispielsweise folgendermaßen: Konfigurieren Sie drei Austauschobjekte für den Roboter und legen Sie die Handelspaare jeweils auf BTC_USDT, LTC_USDT und ETH_USDT fest. Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Das Exchange-Objekt mit dem Namen „OKEX Spot V3 Test“ befindet sich im Kontrollzentrum auf der Exchange-Konfigurationsseite: Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen Bereits konfiguriert.

Ändern Sie den Code, da wir dieses Mal dem Roboter mehrere Austauschobjekte hinzugefügt haben, nämlich die Austauschobjekte mit den Handelspaaren BTC_USDT, LTC_USDT und 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)
          }
      }
  }

Führen Sie den Roboter aus: Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Bei den oben beschriebenen Beispielen geht es um den Wechsel von Handelspaaren oder das Hinzufügen eines Tauschobjekts mit mehreren unterschiedlichen Handelspaaren zu einem konfigurierten Konto. Alle werden mit nur einem Exchange-Konto konfiguriert (mithilfe einer konfigurierten Börse). Wie verwenden Sie also mehrere Börsenkonten in einer Strategie?

  • ### Strategien für die Verwendung mehrerer Exchange-Konten

Zu bestimmten Strategien gehören beispielsweise börsenübergreifendes Cross-Market-Hedging, Multi-Account-Strategien innerhalb einer einzigen Börse usw.

  • Es sind mehrere Börsen konfiguriert, es handelt sich jedoch um unterschiedliche Börsen. Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen Ich habe beispielsweise 2 Börsen auf der Seite „Control Center->Börse->Börse hinzufügen“ konfiguriert. Ich kann auf die Vermögensinformationen der in der Strategie an diesen beiden Börsen konfigurierten Konten zugreifen.

    Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

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

    Natürlich kann ich auch die Exchange-Konfiguration des zweiten und dritten Accounts zu einem Exchange hinzufügen.

  • Bei mehreren Austauschkonfigurationen handelt es sich um denselben Austausch.

    Fügen wir beispielsweise ein weiteres Huobi Futures-Konto hinzu. Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

    Wie Sie sehen, wurden zwei Konten der Börse „Huobi Futures“ konfiguriert.

    Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

    Beim Erstellen einer Strategie wird in der Option „Konfiguration ändern“ des Roboters ein Huobi Futures Exchange-Objekt zur Auswahl angezeigt.

    Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

    Sie können beispielsweise zwei Konten haben, von denen eines die Rasterstrategie „Zuerst verkaufen, später kaufen“ (aufwärts) verwendet, und das andere die Rasterstrategie „Zuerst kaufen, später verkaufen“ (abwärts).

    Durch die beiden obigen Beispiele

    Hier ist der Unterschied zwischen der Konfiguration mehrerer Exchange-Objekte auf dem Roboter und der Konfiguration mehrerer Exchange-Objekte für den Roboter mit demselben Exchange-Konto:

    Dies ähnelt auf den ersten Blick etwas dem oben erläuterten Beispiel „Konfigurieren mehrerer Exchange-Objekte für den Roboter mit demselben Exchange-Konto“, es gibt jedoch Unterschiede. Der Unterschied besteht darin, dass es sich bei dem obigen Beispiel um eine Austauschkonfiguration handelt, und zwar:

    Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

    Verwenden Sie beim Konfigurieren des Austauschobjekts im Roboter immer: Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen Diese Konfiguration.

    Es ist lediglich so, dass die Einstellungen des Handelspaares beim Hinzufügen eines Austauschobjekts unterschiedlich sind. Wenn Sie die Funktion GetAccount aufrufen, greifen Sie immer auf die Vermögensinformationen desselben Kontos zu.

    Jedoch: Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen Die beiden auf diese Weise konfigurierten Huobi Futures Exchange-Objekte stellen, obwohl es sich bei beiden um Huobi Futures handelt, unterschiedliche Börsenkonten dar.

  • Machen Sie von der Börsenkonfiguration guten Gebrauch, um die Entwicklung von Futures-Strategien für digitale Währungen zu vereinfachen.

Um flüchtige Handelschancen nutzen zu können, sind bei der Implementierung einer Absicherungsstrategie für digitale Währungskontrakte manchmal in vielen Szenarien gleichzeitige Aufträge erforderlich. Da es sich allerdings um unterschiedliche Kontrakte handelt, müssen Sie bei der Einholung von Marktinformationen und bei der Auftragserteilung auf den entsprechenden Kontrakt wechseln. Wenn Sie die Funktion „exchange.Go“ verwenden, um gleichzeitig Auftragsfunktionen auszuführen oder Marktinformationen abzurufen, ist sie aufgrund von Synchronisierungsproblemen nicht sehr schnell. Und die Ausgestaltung der Wechselverträge lässt die Logik nicht ganz so einfach erscheinen. Gibt es also einen besseren Weg?

Natürlich gibt es einen Weg! Wir können dem Roboter zwei Austauschobjekte gemäß der obigen Beschreibung unter „Konfigurieren mehrerer Austauschobjekte für den Roboter mit demselben Austauschkonto“ hinzufügen. Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen Fügen Sie dann, weiterhin unter Verwendung dieser Austauschkonfiguration, ein weiteres Austauschobjekt hinzu. Jetzt wird ein Eingabeaufforderungsfenster angezeigt! Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen Einer Börsenkontokonfiguration können keine Börsenobjekte mit derselben Währung und demselben Handelspaar hinzugefügt werden.

Was soll ich in diesem Fall tun? Es scheint, dass es nicht möglich ist, den Strategieroboter zwei Austauschobjekte verwenden zu lassen und das Austauschobjekt an einen Austauschkontocode zu binden? Es gibt noch einen Weg!

Wir gehen zu „Control Center“ -> „Exchange“ und fügen eine OKEX-Terminbörsenkonfiguration hinzu.

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Klicken Sie nach der Konfiguration auf Speichern.

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

### „Highlight“ Jetzt haben wir zwei Austauschkonfigurationen, aber es werden dieselben API-KEY-Konfigurationsinformationen verwendet.

Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Was sind die Vorteile davon? Natürlich ist der Entwurf beim Schreiben einer Strategie sehr einfach!

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

Fühlt sich diese Designstrategie viel einfacher an und sind die Ideen viel klarer?

Realer Festplattenbetrieb: Detaillierte Erläuterung der Konfiguration des quantitativen Handelsstrategieaustauschs für digitale Währungen

Es ist ersichtlich, dass es nur etwa 50 Millisekunden dauert, jedes Mal die Marktinformationen von zwei Kontrakten gleichzeitig zu erhalten.