4
ध्यान केंद्रित करना
1271
समर्थक

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

में बनाया: 2019-09-02 09:39:59, को अपडेट: 2024-12-17 20:42:42
comments   2
hits   4296

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

जब आप डिजिटल मुद्रा मात्रात्मक ट्रेडिंग रणनीतियों को डिजाइन करना शुरू कर रहे हैं, तो आपके पास अक्सर विभिन्न रणनीति आवश्यकताएं होती हैं। कोई फर्क नहीं पड़ता कि आप किस भाषा या प्लेटफ़ॉर्म का उपयोग करते हैं, आपको विभिन्न स्थितियों के लिए रणनीति डिज़ाइन आवश्यकताओं का सामना करना पड़ेगा। उदाहरण के लिए, कभी-कभी कई किस्मों को घुमाने की जरूरत होती है, कभी-कभी कई प्लेटफार्मों को हेज करने की जरूरत होती है, और कभी-कभी विभिन्न किस्मों को एक साथ कारोबार करने की जरूरत होती है, आदि। आइए रणनीतिक आवश्यकताओं को लागू करते समय कुछ डिज़ाइन अनुभव साझा करें। सीखने का प्लेटफॉर्म अभी भी इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म (https://www.fmz.com) का उपयोग करता है, और चयनित बाजार डिजिटल मुद्रा बाजार है।

  • ### “बहु-मुद्रा” रणनीति डिजाइन

इस प्रकार की मांग के लिए अक्सर बहु-विविधता प्रवृत्ति रणनीति, बहु-विविधता ग्रिड रणनीति आदि लिखने की आवश्यकता होती है, जिसके लिए विभिन्न व्यापारिक जोड़ों का उपयोग करके रणनीति तर्क के पुनरावृत्त निष्पादन की आवश्यकता होती है। आमतौर पर इस तरह डिज़ाइन किया गया:

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

हम रोबोट को कॉन्फ़िगर करते हैं: डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

जैसा कि आप देख सकते हैं, इससे रोबोट पर एक्सचेंज ऑब्जेक्ट को कॉन्फ़िगर करना, ट्रेडिंग जोड़े को स्विच करना, विभिन्न ट्रेडिंग जोड़े की बाजार स्थितियों को प्राप्त करना, बहु-विविधता बाजार स्थितियों का संचालन करना और रणनीति तर्क के तहत निष्पादित करना संभव हो जाता है। यह देखा जा सकता है कि हमने जो तीन ट्रेडिंग जोड़े परिभाषित किए हैं: BTC_USDT, LTC_USDT, ETH_USDT, बाजार की जानकारी प्राप्त करने के लिए लूप में बारी-बारी से दोहराए जाते हैं। बाजार की जानकारी प्राप्त करने के बाद, हम विशेष रूप से बाजार की जानकारी का पता लगा सकते हैं और डिज़ाइन किए गए ट्रेडिंग लॉजिक को ट्रिगर कर सकते हैं रणनीति द्वारा.

कुछ छात्र कह सकते हैं: “मुझे ट्रेडिंग जोड़े बदलना पसंद नहीं है। यह थोड़ा परेशानी भरा लगता है और रणनीति का डिज़ाइन भी स्पष्ट नहीं है।” वास्तव में अन्य डिजाइन विधियां भी हैं, जो एक अन्य विधि है जिसका परिचय हम नीचे दे रहे हैं।

  • ### रोबोट के लिए एक ही एक्सचेंज खाते के साथ कई एक्सचेंज ऑब्जेक्ट कॉन्फ़िगर करें

एकाधिक एक्सचेंज ऑब्जेक्ट्स के माध्यम से विभिन्न ट्रेडिंग जोड़ों के लिए बाजार डेटा प्राप्त करें और इसे पुनरावृत्त रणनीति तर्क में निष्पादित करें। उदाहरण के लिए, रोबोट को इस तरह कॉन्फ़िगर करें: रोबोट के लिए तीन एक्सचेंज ऑब्जेक्ट कॉन्फ़िगर करें, और ट्रेडिंग जोड़े को क्रमशः BTC_USDT, LTC_USDT और ETH_USDT पर सेट करें। डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

“OKEX स्पॉट V3 टेस्ट” नामक एक्सचेंज ऑब्जेक्ट नियंत्रण केंद्र, एक्सचेंज कॉन्फ़िगरेशन पृष्ठ में है: डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण पहले से कॉन्फ़िगर किया गया.

कोड को संशोधित करें क्योंकि इस बार हमने रोबोट में कई एक्सचेंज ऑब्जेक्ट्स जोड़े हैं, अर्थात् BTC_USDT, LTC_USDT और 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)
          }
      }
  }

रोबोट चलाएँ: डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

ऊपर वर्णित उदाहरण ट्रेडिंग जोड़ों को स्विच करने या कॉन्फ़िगर किए गए खाते में कई अलग-अलग ट्रेडिंग जोड़ों के साथ एक्सचेंज ऑब्जेक्ट जोड़ने के बारे में हैं। सभी को केवल एक एक्सचेंज खाते (कॉन्फ़िगर किए गए एक्सचेंज का उपयोग करके) का उपयोग करके कॉन्फ़िगर किया गया है। तो आप एक ही रणनीति में एकाधिक एक्सचेंज खातों का उपयोग कैसे करते हैं?

  • ### एकाधिक एक्सचेंज खातों का उपयोग करने की रणनीतियाँ

उदाहरण के लिए, कुछ रणनीतियों में कई एक्सचेंजों में क्रॉस-मार्केट हेजिंग, एक ही एक्सचेंज के भीतर बहु-खाता रणनीतियां आदि शामिल हैं।

  • एकाधिक एक्सचेंज कॉन्फ़िगर किए गए हैं, लेकिन वे अलग-अलग एक्सचेंज हैं। डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण उदाहरण के लिए, मैंने कंट्रोल सेंटर->एक्सचेंज->एक्सचेंज जोड़ें पृष्ठ में 2 एक्सचेंज कॉन्फ़िगर किए। मैं रणनीति में इन दो एक्सचेंजों पर कॉन्फ़िगर किए गए खातों की परिसंपत्ति जानकारी तक पहुंच सकता हूं।

    डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

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

    बेशक, मैं किसी एक्सचेंज में दूसरे और तीसरे खाते का एक्सचेंज कॉन्फ़िगरेशन भी जोड़ सकता हूं।

  • एकाधिक एक्सचेंज कॉन्फ़िगरेशन एक ही एक्सचेंज हैं।

    उदाहरण के लिए, आइए एक और हुओबी फ्यूचर्स खाता जोड़ें। डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

    जैसा कि आप देख सकते हैं, “हुओबी फ्यूचर्स” एक्सचेंज के दो खाते कॉन्फ़िगर किए गए हैं।

    डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

    रणनीति बनाते समय, चयन के लिए रोबोट के “कॉन्फ़िगरेशन संशोधित करें” विकल्प में हुओबी फ्यूचर्स एक्सचेंज ऑब्जेक्ट दिखाई देता है।

    डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

    उदाहरण के लिए, आपके पास दो खाते हो सकते हैं, एक जो पहले बेचें-बाद में खरीदें ग्रिड रणनीति (ऊपर की ओर) का उपयोग करता है, और दूसरा जो पहले खरीदें-बाद में बेचें ग्रिड रणनीति (नीचे की ओर) का उपयोग करता है।

    उपरोक्त दो उदाहरणों के माध्यम से

    रोबोट पर एकाधिक एक्सचेंज ऑब्जेक्ट्स को कॉन्फ़िगर करने और समान एक्सचेंज खाते वाले रोबोट के लिए एकाधिक एक्सचेंज ऑब्जेक्ट्स को कॉन्फ़िगर करने के बीच अंतर इस प्रकार है:

    पहली नज़र में, यह कुछ हद तक ऊपर बताए गए “समान एक्सचेंज खाते वाले रोबोट के लिए कई एक्सचेंज ऑब्जेक्ट्स को कॉन्फ़िगर करना” के उदाहरण के समान है, लेकिन इसमें अंतर हैं। अंतर यह है कि उपरोक्त उदाहरण एक एक्सचेंज कॉन्फ़िगरेशन है, अर्थात:

    डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

    रोबोट में एक्सचेंज ऑब्जेक्ट को कॉन्फ़िगर करते समय हमेशा उपयोग करें: डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण यह विन्यास.

    बस इतना है कि एक्सचेंज ऑब्जेक्ट जोड़ते समय ट्रेडिंग जोड़ी सेटिंग्स अलग होती हैं। यदि आप GetAccount फ़ंक्शन को कॉल करते हैं, तो आप हमेशा उसी खाते की परिसंपत्ति जानकारी तक पहुंच पाएंगे।

    तथापि: डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण इस तरह से कॉन्फ़िगर किए गए दो हुओबी फ्यूचर्स एक्सचेंज ऑब्जेक्ट, हालांकि दोनों हुओबी फ्यूचर्स हैं, अलग-अलग एक्सचेंज खातों का प्रतिनिधित्व करते हैं।

  • डिजिटल मुद्रा वायदा रणनीतियों के डिजाइन को आसान बनाने के लिए एक्सचेंज कॉन्फ़िगरेशन का अच्छा उपयोग करें।

कभी-कभी डिजिटल मुद्रा अनुबंध हेजिंग रणनीति को लागू करते समय, क्षणभंगुर व्यापारिक अवसरों को जब्त करने के लिए, कई परिदृश्यों में समवर्ती आदेशों की आवश्यकता होती है। हालाँकि, क्योंकि अनुबंध अलग-अलग हैं, इसलिए आपको बाजार की जानकारी प्राप्त करने और ऑर्डर देने के दौरान संबंधित अनुबंध पर स्विच करना होगा। जब ऑर्डर कार्यों को समवर्ती रूप से निष्पादित करने या बाजार की जानकारी प्राप्त करने के लिए एक्सचेंज.गो फ़ंक्शन का उपयोग किया जाता है, तो यह सिंक्रनाइज़ेशन समस्याओं के कारण बहुत तेज़ नहीं होता है। और अनुबंधों को बदलने का डिज़ाइन तर्क को इतना सरल नहीं बनाता है। तो क्या कोई बेहतर तरीका है?

बेशक एक रास्ता है! हम “एक ही एक्सचेंज खाते वाले रोबोट के लिए कई एक्सचेंज ऑब्जेक्ट्स को कॉन्फ़िगर करना” के उपरोक्त विवरण के अनुसार रोबोट में दो एक्सचेंज ऑब्जेक्ट्स जोड़ सकते हैं। डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण फिर, इस एक्सचेंज कॉन्फ़िगरेशन का उपयोग करते हुए, एक अन्य एक्सचेंज ऑब्जेक्ट जोड़ें। इस समय एक प्रॉम्प्ट बॉक्स पॉप अप होगा! डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण एक एक्सचेंज खाता कॉन्फ़िगरेशन समान मुद्रा और ट्रेडिंग जोड़ी के साथ एक्सचेंज ऑब्जेक्ट नहीं जोड़ सकता है।

इस स्थिति में मुझे क्या करना चाहिए? ऐसा लगता है कि रणनीति रोबोट को दो एक्सचेंज ऑब्जेक्ट्स का उपयोग करने देना और एक्सचेंज ऑब्जेक्ट को एक एक्सचेंज खाता कोड से बांधना संभव नहीं है? अभी भी एक रास्ता है!

हम “कंट्रोल सेंटर” -> “एक्सचेंज” पर जाते हैं और OKEX फ्यूचर्स एक्सचेंज कॉन्फ़िगरेशन जोड़ते हैं।

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

कॉन्फ़िगरेशन के बाद, सहेजें पर क्लिक करें.

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

### 「हाइलाइट」अब हमारे पास दो एक्सचेंज कॉन्फ़िगरेशन हैं, लेकिन एक ही API कुंजी कॉन्फ़िगरेशन जानकारी का उपयोग किया जाता है।

डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

इसके क्या लाभ हैं? बेशक, रणनीति लिखते समय, डिज़ाइन बहुत सरल होता है!

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

क्या यह डिजाइन रणनीति अधिक सरल और विचार अधिक स्पष्ट लगते हैं?

वास्तविक डिस्क संचालन: डिजिटल मुद्रा मात्रात्मक व्यापार रणनीति एक्सचेंज के विन्यास का विस्तृत विवरण

यह देखा जा सकता है कि प्रत्येक बार दो अनुबंधों की बाजार जानकारी प्राप्त करने में केवल 50 मिलीसेकंड का समय लगता है।