Type/to search
8
Follow
1364
Followers
क्रिप्टोकरेंसी सर्किल में क्वांटिटेटिव ट्रेडिंग में नए लोग, कृपया इस पर एक नज़र डालें - क्रिप्टोकरेंसी सर्किल में क्वांटिटेटिव ट्रेडिंग के करीब आपको ले जाना (भाग 2)
Discussions
Created 2021-04-19 14:16:21  Updated 2024-12-04 21:21:43
 0
 4534

img

क्रिप्टोकरेंसी सर्किल में क्वांटिटेटिव ट्रेडिंग में नए लोग, कृपया इस पर एक नज़र डालें - क्रिप्टोकरेंसी सर्किल में क्वांटिटेटिव ट्रेडिंग के करीब आपको ले जाना (भाग 2)

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

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

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

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

    उपरोक्त को ट्रेडिंग रणनीतियों के दृष्टिकोण से विभाजित किया गया है। इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म पर रणनीति डिज़ाइन के दृष्टिकोण से, रणनीतियों को भी विभाजित किया जा सकता है:

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

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

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

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

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

    तो इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म पर असंगत व्यवहार और परिभाषाओं वाले कुछ एक्सचेंज इंटरफेस का उपयोग कैसे करें?

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

    क्या इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म API दस्तावेज़ में सभी API फ़ंक्शन नेटवर्क अनुरोध उत्पन्न करते हैं?

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

    • आइए इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म में API फ़ंक्शन का उपयोग करते समय कुछ सामान्य समस्याओं और अनुभवों के बारे में बात करते हैं।

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

        img

        रणनीति लिखते समय, हमें इंटरफ़ेस द्वारा लौटाए गए डेटा का मूल्यांकन और सत्यापन करने की आवश्यकता होती है। उदाहरण के लिए, कोड की इस पंक्ति का उपयोग इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म पर बाज़ार की जानकारी प्राप्त करने के लिए किया जाता है (एक्सचेंज तक सीधे पहुँचने के लिए प्रोग्राम लिखते समय भी यही सच है इंटरफ़ेस):var ticker = exchange.GetTicker()यदि हमें इसका उपयोग करने की आवश्यकता हैtickerचर (GetTicker फ़ंक्शन द्वारा लौटाई गई संरचना देखें)Last(नवीनतम मूल्य) डेटा के लिए हमें उपयोग करने की आवश्यकता हैvar newPrice = ticker.Lastइस तरह से डेटा प्राप्त करें (newPrice क्या है? new: latest, Price: price, हाँ! इन्हें एक साथ रखें!) इस समय, यदिGetTicker()यदि फ़ंक्शन सामान्य डेटा लौटाता है तो यह ठीक है, लेकिन यदि अनुरोध का समय समाप्त हो जाता है, नेटवर्क त्रुटियाँ होती हैं, एक्सचेंज नेटवर्क केबल को अनप्लग कर देता है, केबल कट जाती है, कोई शरारती बच्चा पावर स्विच खींच देता है, आदि, तो यह कारण होगाGetTicker()फ़ंक्शन रिटर्नnull. इस समयtickerका मान हैnullमेरा फिर से आना होगा।Lastप्रोग्राम अपवाद उत्पन्न होगा, जिसके कारण नीति प्रोग्राम रुक जाएगा.
        ऐसा लगता है कि इंटरफ़ेस कॉल की विफलता (GetTicker कॉल विफल रही और शून्य लौटा) रणनीति वास्तविक ट्रेडिंग स्टॉप का प्रत्यक्ष कारण नहीं है (प्रत्यक्ष कारण एक्सेस करना हैnullपरिवर्तनीय गुण), इंटरफ़ेस कॉल विफलता और त्रुटि के कारण वास्तविक ट्रेडिंग बंद नहीं होगी (जोर दिया गया)।
        तो फिर वास्तविक व्यापार के असामान्य निलंबन से बचने के लिए हम क्या कर सकते हैं?
        इसका उत्तर इंटरफ़ेस द्वारा लौटाए गए डेटा पर दोष सहिष्णुता प्रसंस्करण करना है। यह निर्धारित करना बहुत सरल है कि लौटाया गया डेटा सही है या नहींnull(जावास्क्रिप्ट का उपयोग एक उदाहरण के रूप में किया जाता है, अन्य भाषाएं मूलतः समान हैं)
        समझाने के लिए एक छोटा सा कोड स्निपेट लिखें (यह सिर्फ एक स्पष्टीकरण है, यदि आप इसे सीधे चलाएंगे तो यह काम नहीं करेगा!)

        var ticker = exchange.GetTicker() if (ticker) { var newPrice = ticker.Last Log("打印最新价格:", newPrice) } else { // 数据为null,不做操作就不会出问题 }

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

      • स्पॉट मार्केट खरीद ऑर्डर की ऑर्डर मात्रा
        स्पॉट मार्केट बाय ऑर्डर की ऑर्डर मात्रा भी अक्सर कई नए व्यापारियों द्वारा गलत समझी जाती है। पिछले लेख में, हमने उल्लेख किया है कि स्पॉट मार्केट बाय ऑर्डर की ऑर्डर मात्रा आमतौर पर राशि होती है (कुछ एक्सचेंजों में अन्य सेटिंग हो सकती हैं, आम तौर पर FMZ, इन विशेष एक्सचेंज सेटिंग्स का वर्णन FMZ API दस्तावेज़ में किया गया है। उदाहरण के लिए, मैंने परीक्षण के लिए OKEX V5 सिमुलेशन डिस्क का उपयोग किया:
        ट्रेडिंग जोड़ी की सेटिंग्स इस प्रकार हैं:LTC_USDT

        function main() { exchange.IO("simulate", true) // 切换为OKEX交易所的模拟盘 exchange.Buy(-1, 1) // 价格是-1,表示下的订单为市价单,数量为1表示下单量是1USDT }

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

        错误 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:]
      • वायदा ऑर्डर देते समय दिशा-निर्देश
        वायदा रणनीति विकसित करते समय, नए लोग अक्सर ऑर्डर दिशा में गलतियाँ करते हैं, जिससे समस्याएँ पैदा होती हैं। उदाहरण के लिए इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म पर रणनीति लिखना लें।
        आइए सबसे पहले API दस्तावेज़ में विवरण देखें:
        https://www.fmz.com/api#exchange.setdirection...

        img

        चूंकि ऑर्डर फ़ंक्शन में केवल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") // 设置当前合约为季度合约 exchange.SetDirection("sell") var id = exchange.Sell(-1, 1) Log("看我市价单下单了,成交了,就有持仓了", exchange.GetPosition()) exchange.SetDirection("closebuy") // closebuy 和Sell 搭配使用,嗯没错~ exchange.Sell(-1, 1) }

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

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

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

        • स्थिति पट्टी
          वास्तविक डिस्क चलने के बाद, वास्तविक डिस्क पृष्ठ चित्र में दिखाए अनुसार होता है

          img

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

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

          img

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

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

          img

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

          img

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

          img

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

          img

        FMZ API फ़ंक्शन जो लॉग आउटपुट उत्पन्न कर सकते हैं, जैसे Log(...), exchange.Buy(Price, Amount), exchange.CancelOrder(Id), आदि, आवश्यक पैरामीटर के बाद कुछ अतिरिक्त आउटपुट पैरामीटर द्वारा अनुसरण किए जा सकते हैं, जैसे: एक्सचेंज. कैंसलऑर्डर(ऑर्डर[j].Id, orders[j]) यह आदेश रद्द करने के लिए है[j] यह ऑर्डर देते समय, ऑर्डर की जानकारी आउटपुट की जाएगी।

        function main() { Log("数据1", "数据2", "数据3", "...") var data2 = 200 var id = exchange.Sell(100000, 0.1, "附带数据1", data2, "...") exchange.CancelOrder(id, "附带数据1", data2, "...") LogProfit(100, "附带数据1", data2, "...") }
      • सूचक कार्यों का उपयोग
        इंडिकेटर फंक्शन के बारे में बात करने से पहले, आइए पहले समझते हैं कि इंडिकेटर क्या हैं। सरल शब्दों में, वे मूविंग एवरेज, MACD और ATR जैसी रेखाएँ हैं।
        प्रश्न: ये संकेतक कहां से आते हैं?
        उत्तर: निश्चित रूप से इसकी गणना की जाती है।
        प्रश्न: गणना का आधार क्या है?
        उत्तर: K-लाइन डेटा के आधार पर गणना की गई।
        प्रश्न: क्या आप कोई उदाहरण दे सकते हैं?
        उत्तर: सबसे सरल संकेतक, चलती औसत संकेतक को उदाहरण के रूप में लेते हुए, यदि हम संकेतक गणना के लिए डेटा स्रोत के रूप में दैनिक के-लाइन (एक सकारात्मक या नकारात्मक रेखा एक दिन का प्रतिनिधित्व करती है) डेटा का उपयोग करते हैं। यदि मूविंग एवरेज इंडिकेटर पैरामीटर 10 है, तो गणना किया गया मूविंग एवरेज इंडिकेटर 10-दिवसीय मूविंग एवरेज है।
        प्रश्न: यदि K-लाइन BAR की संख्या 10 से कम है, तो क्या मूविंग एवरेज इंडिकेटर की गणना की जा सकती है?
        उत्तर: न केवल मूविंग एवरेज इंडिकेटर की गणना नहीं की जा सकती है, बल्कि कोई भी इंडिकेटर वैध इंडिकेटर वैल्यू की गणना नहीं कर सकता है जब K-लाइन डेटा BAR की संख्या इंडिकेटर चक्र मापदंडों को पूरा नहीं करती है। गणना की गई सरणी की संगत स्थितियाँ खाली से भर दी जाएँगी मान, उदाहरण के लिएJavaScriptगणना किए गए संकेतक डेटा को प्रिंट करते समय भाषा रणनीति प्रदर्शित की जाएगीnull

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

        img

        रणनीति कस्टम ड्राइंग, तैयार K-लाइन और चलती औसत चार्ट:

        img

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

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

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

        function main() { var records = exchange.GetRecords() var ma = TA.MA(records, 10) Log(ma) // 打印均线 }

        तालिब लाइब्रेरी का उपयोग:

        function main() { var records = exchange.GetRecords() var ma = talib.MA(records, 10) Log(ma) // 打印均线 }

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

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

        var macd = TA.MACD(records) // 这样只传入K线数据,不传入指标参数,指标参数采用的就是默认值,其它指标函数也是同理

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

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

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

        img

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)