नौसिखिया, इसे देखें आपको क्रिप्टोकरेंसी मात्रात्मक व्यापार में ले जाएं (2)

लेखक:निनाबादास, बनाया गयाः 2022-04-19 16:46:53, अद्यतन किया गयाः 2022-04-20 16:56:43

नौसिखिया, इसे देखें आपको क्रिप्टोकरेंसी मात्रात्मक व्यापार में ले जाएं (2)

पिछले लेख में, हमने प्रोग्राम किए गए ट्रेडिंग स्क्रिप्ट के बारे में बात की थी। वास्तव में, ट्रेडिंग रणनीति एक ट्रेडिंग स्क्रिप्ट प्रोग्राम है। लेख मुख्य रूप से ट्रेडिंग स्क्रिप्ट प्रोग्राम (जहां प्रोग्राम चलता है) के लिए हार्डवेयर वाहक की आवश्यकता के बारे में बात करता है, और स्क्रिप्ट ट्रेडिंग प्रोग्राम को उस कंप्यूटर प्रोग्रामिंग भाषा में लिखा जा सकता है (एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म में उपयोग की जाने वाली तीन प्रोग्रामिंग भाषाओं की सूची; निश्चित रूप से, आप प्रोग्राम किए गए ट्रेडिंग में रणनीतियों को लागू करने के लिए किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं) । इस लेख में, हम क्रिप्टोक्यूरेंसी सर्कल के मात्रात्मककरण पर चर्चा करना जारी रखते हैं और इसके ज्ञान को समझते हैं।

प्रोग्राम ट्रेडिंग स्क्रिप्ट

  • ट्रेडिंग रणनीति का प्रकार प्रोग्राम्ड ट्रेडिंग और क्वांटिटेटिव ट्रेडिंग के लिए नए होने वाले नौसिखिए विभिन्न शब्दों जैसे ट्रेंड स्ट्रेटेजी, आर्बिट्रेज स्ट्रेटेजी, हाई-फ्रीक्वेंसी स्ट्रेटेजी, ग्रिड स्ट्रेटेजी आदि से भ्रमित हो सकते हैं। वास्तव में, प्रोग्राम्ड ट्रेडिंग और क्वांटिटेटिव ट्रेडिंग में सामान्य प्रकार की रणनीतियां बस कई दिशाओं में हैं।

    • मध्यस्थता रणनीति सरल शब्दों में, एक रणनीति जो मूल रूप से लंबी स्थिति रखती है जबकि छोटी स्थिति रखती है, को एक मध्यस्थता रणनीति के रूप में वर्गीकृत किया जा सकता है। इसके कई विशिष्ट प्रकार हैं, जैसे स्पॉट क्रॉस-मार्केट, वायदा क्रॉस-पीरियड, वायदा और स्पॉट मध्यस्थता, और क्रॉस-प्रतीक मध्यस्थता, आदि।

    • प्रवृत्ति रणनीति सरल शब्दों में कहें तो यह ट्रेंड को ट्रैक करने और एक ही पोजीशन रखने की रणनीति है, जैसे डबल मूविंग एवरेज, एमएसीडी और अन्य रणनीतियां।

    • वापसी की रणनीति उदाहरण के लिए, ग्रिड रणनीति, अस्थिर बाजारों में मूल्य उतार-चढ़ाव से रिटर्न अर्जित करना।

    • उच्च आवृत्ति रणनीति सरल शब्दों में कहें तो यह कुछ एल्गोरिदम के माध्यम से बाजार के सूक्ष्म संरचना, नियमों, अवसरों आदि की खोज करने के लिए उच्च आवृत्ति व्यापार करने की रणनीति है।

    उपरोक्त प्रकारों को ट्रेडिंग रणनीति के दृष्टिकोण से वर्गीकृत किया गया है; एफएमजेड क्वांट पर रणनीति डिजाइन के दृष्टिकोण से, रणनीतियों को भी विभाजित किया जा सकता हैः

    • एकल-प्रतीक रणनीति यानी रणनीति केवल एक ही प्रतीक संचालित कर सकती है, जैसे कि बीटीसी व्यापार या ईटीएच व्यापार करना।

    • बहु-प्रतीक रणनीति सरल शब्दों में, यह एक रणनीति तर्क द्वारा कई प्रतीकों को संचालित करने के लिए है।

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

    • बहु-तर्क रणनीति उदाहरण के लिए, एमएसीडी रणनीति, चलती औसत रणनीति, ग्रिड रणनीति, आदि एक ही समय में एक बॉट पर डिज़ाइन किए गए हैं (बेशक, यह विभिन्न एक्सचेंज ऑब्जेक्ट्स को संचालित करने के लिए है, और एक ही ऑपरेशन के साथ एक्सचेंज ऑब्जेक्ट्स इस बात पर निर्भर करते हैं कि क्या विशिष्ट रणनीति तार्किक रूप से विरोधाभासी है)

  • प्लेटफ़ॉर्म एपीआई इंटरफ़ेस प्रोग्राम्ड ट्रेडिंग स्क्रिप्ट प्लेटफार्म खाते को कैसे संचालित करती है? इसका उत्तर प्लेटफॉर्म द्वारा खोले गए एपीआई इंटरफ़ेस के माध्यम से है। तो प्लेटफार्मों के लिए कौन से प्रकार के इंटरफेस खुले हैं? पिछले लेख में, हमने इस बारे में बात की थी कि प्लेटफार्मों में आम तौर पर REST और Websocket इंटरफेस होते हैं। यहाँ हम रणनीति प्रक्रियाओं के पहलू से कुछ अवधारणाओं को जोड़ते हैं। प्लेटफॉर्म इंटरफेस को इस आधार पर विभाजित किया जाता है कि क्या यह सत्यापित है (दोनों REST और Websocket), अर्थात् सत्यापित और गैर-सत्यापित।

    • ऐसे इंटरफेस जिन्हें सत्यापन की आवश्यकता नहीं है आम तौर पर, उन्हें सार्वजनिक इंटरफेस कहा जाता है; इस प्रकार के इंटरफेस के लिए सत्यापन की आवश्यकता नहीं होती हैAPI KEY(यदि आपको याद नहीं है कि एपीआई कुंजी क्या है, तो आप पिछले लेख की ओर मुड़ सकते हैं) इस प्रकार का इंटरफ़ेस आम तौर पर एक बाजार इंटरफ़ेस है, जैसे कि गहराई से बाजार उद्धरण, के-लाइन डेटा, फंडिंग दर, ट्रेडिंग प्रतीकों, प्लेटफॉर्म सर्वर टाइमस्टैम्प आदि के बारे में जानकारी पूछना। सीधे शब्दों में कहें तो, इंटरफ़ेस जो मूल रूप से आपके खाते से संबंधित नहीं है, को मोटे तौर पर एक सार्वजनिक इंटरफ़ेस के रूप में निर्धारित किया जा सकता है (कोई सत्यापन आवश्यक नहीं है) । एफएमजेड क्वांट ट्रेडिंग प्लेटफ़ॉर्म पर, एक अप्रमाणित एपीआई फ़ंक्शन (प्लेटफ़ॉर्म के अप्रमाणित इंटरफ़ेस को कैप्सूल करने वाला; सार्वजनिक इंटरफ़ेस) को कॉल करते समय, भले ही एपीआई कुंजी विन्यास गलत हो, इंटरफ़ेस द्वारा लौटाए गए डेटा को सामान्य रूप से प्राप्त किया जा सकता है (कोई सत्यापन आवश्यक नहीं है) ।

    • जिन इंटरफेस को सत्यापित करने की आवश्यकता है सरल शब्दों में कहें तो, वे इंटरफेस हैं जिन्हें सत्यापित करने की आवश्यकता है (एपीआई कुंजी द्वारा) । इस प्रकार के इंटरफ़ेस को एक निजी इंटरफ़ेस कहा जाता है। इस प्रकार का इंटरफ़ेस आमतौर पर आपके खाते के कुछ संचालन या जानकारी से संबंधित होता है, जैसे कि खाता संपत्ति, खाता स्थिति, लंबित आदेश, हस्तांतरण, मुद्रा रूपांतरण, उत्तोलन समायोजन, और स्थिति मोड सेटिंग, आदि। इन कार्यों का सत्यापन किया जाना चाहिए।

      एफएमजेड क्वांट पर, सत्यापन की आवश्यकता वाले एपीआई फ़ंक्शंस (निजी इंटरफेस, जो कैप्सूल किए गए हैं और प्लेटफ़ॉर्म सत्यापन की आवश्यकता है) को कॉल करते समय। यदि एपीआई कुंजी का कॉन्फ़िगरेशन गलत है, तो इस प्रकार के फ़ंक्शन को कॉल करने से त्रुटि रिपोर्ट होगी, और शून्य लौटाएगा।

    तो, FMZ क्वांट ट्रेडिंग प्लेटफॉर्म पर इन इंटरफेस का उपयोग कैसे करें?

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

    तो, कैसे FMZ क्वांट पर एकीकृत कार्यों और परिभाषाओं के बिना कुछ मंच इंटरफेस का उपयोग करने के लिए?

    इन प्लेटफार्म इंटरफेस में शामिल हैंः परिसंपत्ति हस्तांतरण, सशर्त आदेश, बैच आदेश, बैच आदेश रद्द, आदेश संशोधन, आदि। कुछ प्लेटफार्मों में ये इंटरफेस हैं, कुछ प्लेटफार्मों में नहीं हैं और कार्य और उपयोग विवरण काफी भिन्न हो सकते हैं, इसलिए इन इंटरफेस तक पहुंचexchange.IOएफएमजेड क्वांट पर कार्य (विवरण के लिए, एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म एपीआई दस्तावेज देखेंःhttps://www.fmz.com/api#exchange.io..एफएमजेड क्वांट के स्क्वायर में कुछ व्यावहारिक आईओ उदाहरण रणनीतियाँ भी हैं।

FMZ API प्रलेखन में सभी एपीआई फ़ंक्शन नेटवर्क अनुरोध कर सकते हैं?

हमें यह कहने की आवश्यकता है कि प्लेटफ़ॉर्म एपीआई में एक्सेस आवृत्ति की सीमा होती है (उदाहरण के लिए, 1 सेकंड में 5 बार) । एक्सेस बहुत बार नहीं हो सकता है, या http 429 की त्रुटि की सूचना दी जाएगी, और एक्सेस अस्वीकार कर दिया जाएगा (ज्यादातर प्लेटफ़ॉर्म रिपोर्ट 429) । इसलिए, FMZ Quant पर कैप्सुलेट प्लेटफ़ॉर्म इंटरफेस को कॉल करने की भी सीमा होती है, लेकिन एपीआई फ़ंक्शंस को कॉल करने में ऐसी कोई सीमा नहीं होती है जो नेटवर्क अनुरोध नहीं करते हैं।
एफएमजेड क्वांट पर सभी एपीआई फ़ंक्शन नेटवर्क अनुरोध नहीं कर सकते हैं; एफएमजेड पर कुछ एपीआई फ़ंक्शन केवल कुछ स्थानीय सेटिंग्स को संशोधित करते हैं, जैसे कि वर्तमान ट्रेडिंग जोड़ी, अनुबंध कोड और संकेतक गणना फ़ंक्शन सेट करना, साथ ही एक्सचेंज ऑब्जेक्ट नाम प्राप्त करना, आदि। मूल रूप से, एक फ़ंक्शन के उपयोग से, आप निर्धारित कर सकते हैं कि नेटवर्क अनुरोध किया जाएगा या नहीं; जब तक यह प्लेटफ़ॉर्म डेटा प्राप्त करने के लिए है, या प्लेटफ़ॉर्म खाता संचालित करने के लिए, एक नेटवर्क अनुरोध किया जाएगा; इन सभी इंटरफेस को कॉल आवृत्ति पर ध्यान देने की आवश्यकता है।

  • आइए FMZ Quant पर एपीआई कार्यों का उपयोग करने की कई आम समस्याओं और अनुभवों के बारे में बात करते हैं।

    • दोष सहिष्णुता यह सबसे आम त्रुटि है, जिसने अनगिनत शुरुआती लोगों को परेशान किया है। अक्सर, रणनीति बैकटेस्ट अच्छा होता है और सब कुछ सामान्य होता है। बॉट थोड़ी देर के लिए चलने के बाद बॉट असामान्य रूप से क्यों काम करता है (जो किसी भी समय ट्रिगर हो सकता है)?

      img

      एक रणनीति लिखते समय, इंटरफ़ेस द्वारा लौटाए गए डेटा के लिए सत्यापित करने की आवश्यकता होती है। उदाहरण के लिए, एफएमजेड क्वांट पर टिकर प्राप्त करने का कोड (जो सीधे प्लेटफॉर्म इंटरफ़ेस तक पहुंचने के लिए अपना स्वयं का प्रोग्राम लिखने के समान है):var ticker = exchange.GetTicker()यदि हमें डेटा का उपयोग करने की आवश्यकता हैLast(अंतिम मूल्य) चर मेंticker(आप फ़ंक्शन GetTicker के रिटर्न संरचना का संदर्भ ले सकते हैं), हमें डेटा प्राप्त करने की आवश्यकता है (नया क्या है?

      अब, यह ठीक है अगर समारोहGetTicker()सामान्य डेटा लौटाता है; अगर वहाँ एक समय सीमा अनुरोध, नेटवर्क त्रुटि, मंच केबल खींचने, केबल खोदने से टूट गया, या बच्चों बिजली स्विच बंद, समारोह हैGetTicker()लौटेंगेnullवर्तमान में,tickerहैnull; जब मैंLastइसके अंतर्गत, कार्यक्रम अपवाद द्वारा रणनीति कार्यक्रम को रोक दिया जाएगा। इससे यह प्रतीत होता है कि इंटरफ़ेस कॉल की विफलता (GetTicker का आह्वान विफल हो जाता है और शून्य लौटाता है) रणनीति बॉट के बंद होने का प्रत्यक्ष कारण नहीं है (प्रत्यक्ष कारण यह है कि एक विशेषताnullयदि इंटरफ़ेस कॉल की विफलता त्रुटि रिपोर्ट करती है, तो बॉट को बंद करने का कारण नहीं बनेगा (यहां जोर दिया गया है).

      तो, हम क्या करना चाहिए बॉट के असामान्य बंद से बचने के लिए?
      जवाब है कि इंटरफ़ेस द्वारा लौटाए गए डेटा के लिए गलती सहिष्णुता प्रक्रिया करना है; यह बहुत सरल है, और आप केवल यह तय करने की जरूरत है कि लौटाए गए डेटा है या नहींnull(यहां जावास्क्रिप्ट को उदाहरण के रूप में लें, अन्य भाषाओं के लिए समान हैं) । एक छोटा कोड खंड लिखें (जो केवल निर्देश के लिए है, और सीधे चलाया नहीं जा सकता है!

      var ticker = exchange.GetTicker()
      if (ticker) {
          var newPrice = ticker.Last
          Log("Print the latest price:", newPrice)
      } else {
          // data is null, so no operation will make no problem 
      }
      

      न केवलGetTickerइंटरफ़ेस को दोष-सहिष्णु प्रसंस्करण करने की आवश्यकता है, लेकिन नेटवर्क अनुरोधों के साथ इंटरफ़ेस को रिटर्न मान के लिए दोष-सहिष्णु प्रसंस्करण करने की आवश्यकता है (यदि आप फ़ंक्शन के रिटर्न मान का उपयोग करते हैं) दोष सहिष्णुता के कई तरीके हैं। आप_C()फ़ंक्शन (एफएमजेड एपीआई प्रलेखन देखें) अपने स्वयं के दोष-सहिष्णु फ़ंक्शन लिखने और अपने स्वयं के दोष-सहिष्णु तंत्र और तर्क को डिजाइन करने के लिए।

      के उपयोग के संबंध में_C()यह भी ध्यान दिया जाना चाहिए कि पैरामीटर की संख्या के साथ, यह भी बहुत संभव है कि कई नए छात्रों को यह गलत उपयोग करने के लिए है।_C()फ़ंक्शन एक फ़ंक्शन संदर्भ है, फ़ंक्शन कॉल नहीं। सरल होने के लिएः_C(funcName, param1, param2); कॉल सही है; funcName में कोष्ठक नहीं है, और param1 और param2 फ़ंक्शन funcName में आयात किए जाने वाले पैरामीटर हैं._C(funcName(param1, param2)); कॉल गलत है; आम तौर पर यदि कोई नौसिखिया FMZ API प्रलेखन को ध्यान से नहीं पढ़ता है, तो यह इस तरह लिखा जाएगा।

    • स्पॉट मार्केट खरीद आदेश की राशि

      शुरुआती भी आसानी से स्पॉट बाजार खरीद आदेश के आदेश राशि में गलतियाँ करने के लिए. जैसा कि पिछले लेख में उल्लेख किया गया है, स्पॉट बाजार खरीद आदेश के आदेश राशि आम तौर पर पैसे की राशि है (केवल कुछ प्लेटफार्मों अन्य सेटिंग्स हो सकती है, और आम तौर पर इन विशेष मंच सेटिंग्स एफएमजेड एपीआई प्रलेखन में समझाया जाएगा). उदाहरण के लिए, मैं परीक्षण करने के लिए OKEX V5 अनुकरण बॉट का इस्तेमाल कियाः

      ट्रेडिंग जोड़ी को इस प्रकार सेट करेंःLTC_USDT

      function main() {
          exchange.IO("simulate", true)   // switch to OKEX simulated bot 
          exchange.Buy(-1, 1)             // the price is -1, representing the placed order is market order; the amount of 1 means the order amount of 1 USDT
      }
      

      चूंकि प्लेटफ़ॉर्म में आम तौर पर ऑर्डर राशि की सीमा होती है, इसलिए सीमा से कम राशि वाले ऑर्डर नहीं रखे जाएंगे (उदाहरण के लिए, बिनेंस स्पॉट को केवल 5USDT से अधिक राशि वाले ऑर्डर की आवश्यकता होती है ताकि सफलतापूर्वक रखा जा सके) । इसलिए इस तरह का ऑर्डर देने से त्रुटि रिपोर्ट होगीः

      error	Buy(-1, 1): map[code:1 data:[map[clOrdId: ordId: sCode:51020 sMsg:Order amount should be greater than the min available amount. tag:]] msg:]
      
    • वायदा आदेश दिशा

      वायदा रणनीतियों को करते समय, शुरुआती अक्सर आदेश दिशा में गलतियाँ करते हैं। एफएमजेड क्वांट पर रणनीतियों को लिखने का उदाहरण लेते हुए, आइए पहले एपीआई दस्तावेज पर विवरण देखेंःhttps://www.fmz.com/api#exchange.setdirection...

      img

      क्योंकि ऑर्डर प्लेसिंग फ़ंक्शन में केवलBuyऔरSellहालांकि, वायदा (बेशक, स्पॉट के लिए कोई समस्या नहीं है, स्पॉट के लिए केवल खरीदने और बेचने के लिए है) खोलने के लिए लंबे, बंद करने के लिए लंबे, खोलने के लिए कम, और बंद करने के लिए कम दिशाओं है, तो स्पष्ट रूप से Buy और Sell इतने दिशाओं में संचालन व्यक्त नहीं कर सकते हैं, तो यह समारोह को पेश करने के लिए आवश्यक हैexchange.SetDirection()वायदा व्यापार की दिशा निर्धारित करने का। FMZ पर,exchange.SetDirection("buy")(जो सबसे पहले दिशा निर्धारित करता है) का प्रयोग साथ में किया जाता हैexchange.Buy, जिसका अर्थ है कि दिया गया आदेश लंबी स्थिति खोलने का आदेश है। और इसी तरहः

      प्रयोगexchange.SetDirection("sell")औरexchange.Sellएक साथ, जो रखे गए आदेश का प्रतिनिधित्व करता है, वह शॉर्ट पोजीशन खोलने का ऑर्डर है। प्रयोगexchange.SetDirection("closebuy")औरexchange.Sellएक साथ, जो रखे गए आदेश का प्रतिनिधित्व करता है, लंबी स्थिति को बंद करने का आदेश है। प्रयोगexchange.SetDirection("closesell")औरexchange.Buyएक साथ, जो रखे गए ऑर्डर का प्रतिनिधित्व करता है, वह शॉर्ट पोजीशन बंद करने का ऑर्डर है। शुरुआती, आमतौर पर उपयोग करेंगेexchange.SetDirection("sell")औरexchange.Buyएक साथ, या अन्य गलत संयोजन. तो, एक त्रुटि की सूचना दी जाएगी (एक त्रुटि बैकटेस्ट में रिपोर्ट नहीं किया जा सकता है, लेकिन यह स्पष्ट रूप से एक तार्किक त्रुटि है, जो मेरे जैसे जुनूनी-कंपल्सिव लोगों द्वारा अनदेखी नहीं की जा सकती है) । यहाँ एक और गलती है जो आम तौर पर शुरुआत करने वालों द्वारा की जाती है।

      function main() {
          exchange.SetContractType("quarter")   // set the current contract to a quarterly contract 
          exchange.SetDirection("sell")
          var id = exchange.Sell(-1, 1)    
          Log("placed market order, executed, get positions", exchange.GetPosition())    
          exchange.SetDirection("closebuy")   // use closebuy and Sell together, yes, no problem 
          exchange.Sell(-1, 1)
      }
      

      img
      जब यह यहाँ आता है, तो आप पूछ सकते हैंः "मेरे पास पद हैं, और closebuy और Sell एक साथ उपयोग करते हैं, तो एक त्रुटि की सूचना क्यों दी जाती है और मैं पदों को बंद नहीं कर सकता? "मैं कहूंगाः" गलत दिशा बंद पदों! आप बंद कर दिया लंबी स्थिति। इसके अतिरिक्त, त्रुटि एक अन्य स्थिति में हो सकती हैः निकट स्थिति दिशा की सेटिंग सही है, आदेश रखने के कार्य का उपयोग भी सही है, और आप भी दिशा में पदों को पकड़ते हैं, लेकिन त्रुटि अभी भी रिपोर्ट की जाती है। इसका कारण यह हो सकता है कि आपके प्रोग्राम ने बहुत सारे ऑर्डर रखे हैं, ऑर्डर पहले निष्पादित नहीं होते हैं, और बंद पदों के आदेश अब बाजार में हैं और निष्पादन की प्रतीक्षा कर रहे हैं। उस समय, प्रोग्राम बंद पदों को जारी रखता है, जो बंद पदों से अधिक की त्रुटि को प्रेरित करेगा।

    • लॉग निर्यात और व्यापार जानकारी प्रदर्शित करें प्रोग्राम और मात्रात्मक ट्रेडिंग रणनीतियों का डिजाइन और लेखन मानव-कंप्यूटर बातचीत के डिजाइन से अविभाज्य है, जैसे कि डेटा डिस्प्ले और ऑपरेशन लॉग निर्यात। आमतौर पर बॉट स्क्रिप्ट और रणनीति कार्यक्रम लिखने के लिए स्थानीय प्रोग्रामिंग भाषा का उपयोग करें। वर्तमान भाषा के आउटपुट फ़ंक्शन का सीधे उपयोग करें। उदाहरण के लिए: पायथन उपयोगprint. जावास्क्रिप्ट उपयोगconsole.log. गोलांग का उपयोगfmt.Println(). सी++ उपयोगcout.

      आइए एफएमजेड पर सूचना प्रदर्शन के बारे में बात करते हैं। एफएमजेड क्वांट पर, सूचना प्रदर्शित करने के लिए मुख्य रूप से दो स्थान हैं।

      • स्थिति पट्टी बॉट शुरू होने के बाद, बॉट पृष्ठ निम्नानुसार दिखाया गया हैः

        img

        प्रदर्शन भाग स्थिति पट्टी की जानकारी है। स्थिति पट्टी का उपयोग मुख्य रूप से कुछ वास्तविक समय में बदलते डेटा को प्रदर्शित करने के लिए किया जाता है (क्योंकि वास्तविक समय में परिवर्तनों को वास्तविक समय में देखा जाना चाहिए, और हर बार लॉग के रूप में मुद्रित नहीं किया जा सकता है, इसलिए इस प्रकार के डेटा को स्थिति पट्टी में प्रदर्शित किया जा सकता है। यदि प्रत्येक का लॉग प्रिंट करें, तो बहुत सारे अर्थहीन दोहराए गए डेटा होंगे, जो क्वेरी को प्रभावित करते हैं) । स्थिति पट्टी पर प्रदर्शित डेटा का उपयोग करता हैLogStatusविवरण के लिए, कृपया एफएमजेड एपीआई प्रलेखन देखें।

      • लॉग बार यह बॉट पृष्ठ पर भी है, जैसा कि निम्नलिखित चित्र में दिखाया गया हैः

        img

        प्रदर्शन भाग लॉग बार है। लॉग बार का उपयोग मुख्य रूप से एक निश्चित समय पर कुछ डेटा को स्थायी रूप से रिकॉर्ड करने के लिए किया जाता है, या एक निश्चित समय पर एक निश्चित रणनीति के संचालन को रिकॉर्ड करता है। लॉग को विभिन्न प्रकारों में विभाजित किया जाता हैः

        1. सामान्य लॉग; एफएमजेड रणनीति रणनीति लॉग में आउटपुट और प्रिंट करने के लिए लॉग फ़ंक्शन का उपयोग करती है।

        img

        1. ऑर्डर लॉग का उपयोग करनाexchange.Sell/exchange.Buyएक एफएमजेड रणनीति में स्वचालित रूप से लॉग में रिकॉर्ड आउटपुट होगा.

        img

        1. रद्द करने का लॉग;exchange.CancelOrderएक एफएमजेड रणनीति में प्रयोग किया जाता है, और रद्द लॉग स्वचालित रूप से लॉग में आउटपुट किया जाएगा।

        img

        1. त्रुटि लॉग; जब FMZ रणनीति चल रही है, और नेटवर्क अनुरोध के लिए इंटरफ़ेस में कॉल त्रुटि है, और एक अपवाद फेंक दिया जाता है (जैसे throw कथन), त्रुटि लॉग स्वचालित रूप से लॉग में आउटपुट किया जाएगा।

        img

      एफएमजेड एपीआई कार्यों में, ऐसे कार्य जो लॉग आउटपुट उत्पन्न कर सकते हैं, जैसे लॉग ((...), एक्सचेंज.बुक ((मूल्य, राशि), एक्सचेंज.कैंसलऑर्डर ((आईडी), आदि, आवश्यक मापदंडों के बाद कुछ अतिरिक्त आउटपुट मापदंडों के बाद हो सकते हैं, जैसेः एक्सचेंज। कैंसलऑर्डर ((ऑर्डर[जे]।आईडी, ऑर्डर[जे]); यह आदेशों के आदेश[जे] को रद्द करने पर अतिरिक्त रूप से ऑर्डर जानकारी आउटपुट करना है।

      function main() {
          Log("data1", "data2", "data3", "...")
          var data2 = 200
          var id = exchange.Sell(100000, 0.1, "additional data1", data2, "...")
          exchange.CancelOrder(id, "additional data1", data2, "...")
          LogProfit(100, "additional data1", data2, "...")
      }
      
    • संकेतक कार्यों का प्रयोग संकेतक फंक्शन के बारे में बात करने से पहले, चलो पहले समझते हैं कि एक संकेतक क्या है। सरल शब्दों में, यह एक रेखा है जैसे कि चलती औसत, एमएसीडी, या एटीआर।

      प्रश्न: इन संकेतकों को कैसे उत्पन्न किया जाता है? उत्तर: वे निश्चित रूप से गणना द्वारा उत्पन्न होते हैं।

      प्रश्न: इनकी गणना किस आधार पर की जाती है? ए: के-लाइन डेटा।

      प्रश्न: क्या आप एक उदाहरण दे सकते हैं? उत्तर: उदाहरण के रूप में सबसे सरल चलती औसत संकेतक को लेते हुए। यदि हम दैनिक के-लाइन (यानी यांग लाइन या यिन लाइन एक दिन का प्रतिनिधित्व करती है) डेटा का उपयोग संकेतक गणना के लिए डेटा स्रोत के रूप में करते हैं। चलती औसत संकेतक पैरामीटर 10 है, तो गणना की गई चलती औसत संकेतक 10-दिवसीय चलती औसत है।

      प्रश्न: यदि के-लाइन BAR की संख्या 10 से कम है, तो क्या चलती औसत सूचक की गणना की जा सकती है? उत्तरः न केवल चलती औसत सूचक की गणना की जा सकती है, बल्कि कोई भी सूचक प्रभावी सूचक मूल्य की गणना नहीं कर सकता है जब के-लाइन डेटा बार की संख्या सूचक अवधि पैरामीटर को पूरा नहीं करती है, और गणना की गई सरणी की संबंधित स्थिति खाली मानों से भरी होगी, जैसे किnullप्रदर्शित किया जाता है जबJavaScriptरणनीति गणना किए गए सूचक डेटा को प्रिंट करती है।

      स्क्वायर में एक शिक्षण उदाहरण हैःhttps://www.fmz.com/strategy/125770इस शिक्षण उदाहरण रणनीति का बैकटेस्ट करें, और आप बैकटेस्ट प्रणाली और 10-अवधि चलती औसत द्वारा उत्पन्न चार्ट देख सकते हैंः

      img

      रणनीति कस्टम ड्राइंग, खींचा K-लाइन और चलती औसत चार्ट द्वाराः

      img

      प्रश्न: क्या होगा यदि मैं 10 घंटे के चलती औसत का उपयोग करना चाहता हूँ? उत्तर: एक घंटे की अवधि के के-लाइन डेटा का प्रयोग करें।

      सरल शब्दों में कहें तो, हम जो K-लाइन देखते हैं, वह एक array है जिसे हम डिजिटलीकृत करने के बाद (यदि आप array की अवधारणा को नहीं समझते हैं, तो आप इसे Baidu पर खोज सकते हैं), और array का प्रत्येक तत्व एक K-line bar है, जिसे क्रम में व्यवस्थित किया गया है। array में पहला तत्व वर्तमान समय से सबसे दूर है, और array का अंतिम तत्व वर्तमान समय के सबसे करीब है। आमतौर पर के-लाइन डेटा का अंतिम बार वर्तमान अवधि का बार होता है, जो वास्तविक समय में बदलता है और पूरा नहीं होता है (आप किसी प्लेटफ़ॉर्म पृष्ठ पर लॉग इन करके और इसकी के-लाइन का निरीक्षण करके परिवर्तनों का निरीक्षण कर सकते हैं) । गणना किए गए संकेतक भी के-लाइन बार के साथ एक-से-एक पत्राचार में होते हैं। उपरोक्त उदाहरण में, आप देख सकते हैं कि एक संकेतक मूल्य के-लाइन बार के अनुरूप है। ध्यान दें कि अंतिम के-लाइन बार वास्तविक समय में बदलता है, और गणना किया गया संकेतक भी के-लाइन बार के परिवर्तन के साथ बदल जाएगा।

      एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर, आप टीए लाइब्रेरी (एफएमजेड द्वारा लागू लाइब्रेरी, डॉकर में एकीकृत, और विभिन्न भाषाओं में सीधे इस्तेमाल किया जा सकता है) या तालिब (पुराना प्रसिद्ध संकेतक लाइब्रेरी talib, जेएस, सी ++ में एकीकृत; पायथन को अतिरिक्त रूप से स्थापित करने की आवश्यकता है) का उपयोग कर सकते हैं। उदाहरण के लिए, उपरोक्त उदाहरण में औसत की गणनाः FMZ TA लाइब्रेरी का प्रयोग करेंः

      function main() {
          var records = exchange.GetRecords()
          var ma = TA.MA(records, 10)
          Log(ma)       // print average
      }
      

      तालिब का प्रयोग करें:

      function main() {
          var records = exchange.GetRecords()
          var ma = talib.MA(records, 10)
          Log(ma)       // print average 
      }      
      

      गणना सूचकांक डेटा मा एक सरणी है, और प्रत्येक तत्व के लाइन सरणी (रिकॉर्ड) एक के बाद एक के अनुरूप है, अर्थात्,ma[ma.length -1]से मेल खाती हैrecords[records.length - 1], और इसी तरह।

      यह अन्य अधिक जटिल संकेतकों के लिए भी समान है, और आपको MACD जैसे संकेतकों पर ध्यान देने की आवश्यकता है।

      var macd = TA.MACD(records)   // In this way, only the K-line data is passed in, and no indicator parameters are passed in. The indicator parameters use the default values, and that is the same for other indicator functions
      

      इस समय, चर macd एक दो आयामी सरणी है (आप इसे Baidu कर सकते हैं, यदि आप अवधारणा को नहीं समझते हैं). एक दो आयामी सरणी बस एक सरणी है, और इसका प्रत्येक तत्व भी एक सरणी है.

      प्रश्न: मैकडी सूचक डेटा दो आयामी सरणी क्यों है? उत्तर: क्योंकि मैकडी सूचक दो रेखाओं (डिफ लाइन और डीईए लाइन) और वॉल्यूम बार के एक सेट से बना है (मैकडी वॉल्यूम बार डेटा को वास्तव में एक रेखा के रूप में भी माना जा सकता है) । इसलिए मैकडी चर को विभाजित किया जा सकता हैः

      var dif = macd[0]
      var dea = macd[1]
      var macdbar = macd[2]
      

      यहाँ एक तैयार शिक्षण उदाहरण भी है; यदि आप रुचि रखते हैं, तो आप इसका अध्ययन कर सकते हैंःhttps://www.fmz.com/strategy/151972

      img


अधिक