पिछले लेख में, हमने प्रोग्रामेटिक ट्रेडिंग स्क्रिप्ट के बारे में बात की थी। वास्तव में, ट्रेडिंग रणनीति एक ट्रेडिंग स्क्रिप्ट प्रोग्राम है। लेख मुख्य रूप से ट्रेडिंग स्क्रिप्ट प्रोग्राम (जहां प्रोग्राम चलता है) के लिए हार्डवेयर कैरियर की आवश्यकता के बारे में बात करता है, और स्क्रिप्ट ट्रेडिंग प्रोग्राम को किस प्रकार की कंप्यूटर प्रोग्रामिंग भाषा में लिखा जा सकता है (एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर उपयोग की जाने वाली तीन प्रोग्रामिंग भाषाएँ सूचीबद्ध हैं। बेशक, आप प्रोग्रामेटिक ट्रेडिंग के लिए रणनीतियों को लागू करने के लिए किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं। इस लेख में, हम क्रिप्टोक्यूरेंसी के मात्रात्मककरण पर चर्चा करना जारी रखते हैं और इसके बारे में सीखते हैं।
ट्रेडिंग रणनीति के प्रकार प्रोग्रामेड ट्रेडिंग और मात्रात्मक ट्रेडिंग में नए शुरुआत करने वालों को विभिन्न प्रवृत्ति रणनीतियों, मध्यस्थता रणनीतियों, उच्च आवृत्ति रणनीतियों, ग्रिड रणनीतियों आदि जैसे शब्दों से भ्रमित किया जा सकता है। वास्तव में, प्रोग्रामेड ट्रेडिंग और मात्रात्मक ट्रेडिंग में सामान्य प्रकार की रणनीतियां बस कई दिशाएं हैं।
उपरोक्त को ट्रेडिंग रणनीतियों के दृष्टिकोण से विभाजित किया गया है। एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर रणनीति डिजाइन के दृष्टिकोण से, रणनीतियों को भी विभाजित किया जा सकता हैः
एक्सचेंज एपीआई इंटरफ़ेस
प्रोग्रामेटिक ट्रेडिंग स्क्रिप्ट एक्सचेंज खाते को कैसे संचालित करती है? यह एक्सचेंज द्वारा खोले गए एपीआई इंटरफ़ेस के माध्यम से है।
तो किस तरह के इंटरफेस एक्सचेंजों के लिए खुले हैं? पिछले लेख में, हमने एक्सचेंज के बारे में बात की है REST और वेबसॉकेट इंटरफेस आम तौर पर
ऐसे इंटरफेस जिन्हें सत्यापन की आवश्यकता नहीं है
आम तौर पर API KEY
(यदि आप भूल गए हैं कि एपीआई कुंजी क्या है, तो आप पिछले लेख की ओर मुड़ सकते हैं) इस प्रकार का इंटरफ़ेस सामान्य रूप से बाजार इंटरफ़ेस है, जैसे कि गहन बाजार मूल्य पूछना, के-लाइन डेटा पूछना, वित्तपोषण दरों की पूछताछ करना, व्यापार किस्मों के बारे में जानकारी पूछना, एक्सचेंज सर्वर टाइमस्टैम्प पूछना, आदि।
सीधे शब्दों में कहें, इंटरफ़ेस जो आपके खाते से संबंधित नहीं है, को मोटे तौर पर एक सार्वजनिक इंटरफ़ेस के रूप में निर्धारित किया जा सकता है (कोई सत्यापन आवश्यक नहीं है)
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर, एक अप्रमाणित एपीआई फ़ंक्शन (एक्सचेंज के अप्रमाणित इंटरफ़ेस, सार्वजनिक इंटरफ़ेस को कैप्सूल करने वाले) को कॉल करते समय, भले ही एपीआई कुंजी कॉन्फ़िगरेशन गलत हो, इंटरफ़ेस द्वारा लौटाए गए डेटा को सामान्य रूप से प्राप्त किया जा सकता है (गैर-प्रमाणन के कारण) ।
ऐसे इंटरफेस जिन्हें सत्यापित करने की आवश्यकता है सरल शब्दों में, यह इंटरफ़ेस है जिसे सत्यापित करने की आवश्यकता है (एपीआई कुंजी के माध्यम से), इस प्रकार के इंटरफ़ेस को एक निजी इंटरफ़ेस कहा जाता है। यह आमतौर पर आपके खाते के कुछ संचालन या जानकारी से संबंधित होता है, जैसे कि खाता संपत्ति की क्वेरी करना, खाता पदों की क्वेरी करना, लंबित आदेशों की क्वेरी करना, स्थानांतरण की क्वेरी करना, मुद्रा स्थानांतरित करना, लीवरेज समायोजित करना, स्थिति मोड सेट करना, आदि। इन सभी कार्यों का सत्यापन किया जाना चाहिए। एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर, जब सत्यापित किए जाने वाले एपीआई फ़ंक्शन को बुलाया जाता है (इंटरफेस जिसे इनकैप्सुलेटेड एक्सचेंज के लिए सत्यापित करने की आवश्यकता होती है, निजी इंटरफ़ेस), यदि एपीआई कुंजी को गलत तरीके से कॉन्फ़िगर किया गया है, तो इंटरफ़ेस को बुलाए जाने पर एक त्रुटि की सूचना दी जाएगी, और शून्य मान लौटाया जाएगा।
तो FMZ क्वांट ट्रेडिंग प्लेटफॉर्म पर इन इंटरफेस का उपयोग कैसे किया जाता है?
एफएमजेड क्वांट ट्रेडिंग प्लेटफ़ॉर्म एक्सचेंज व्यवहार और इंटरफेस को सुसंगत परिभाषाओं के साथ कैप्सूल करता है (जैसे कि के-लाइन इंटरफ़ेस, गहन बाजार इंटरफ़ेस, वर्तमान परिसंपत्ति क्वेरी इंटरफ़ेस, ऑर्डर इंटरफ़ेस, ऑर्डर रद्दीकरण इंटरफ़ेस, आदि), इन इंटरफेस को एफएमजेड क्वांट ट्रेडिंग प्लेटफ़ॉर्म एपीआई फ़ंक्शंस कहा जाता है, और इसे एपीआई दस्तावेज से एक्सेस किया जा सकता है (https://www.fmz.com/api).
तो FMZ क्वांट ट्रेडिंग प्लेटफॉर्म पर विभिन्न व्यवहारों और परिभाषाओं के साथ कुछ एक्सचेंज इंटरफेस का उपयोग कैसे किया जाता है?
इन एक्सचेंज इंटरफेस में शामिल हैंः परिसंपत्ति हस्तांतरण, सशर्त आदेश, बैच ऑर्डर प्लेसमेंट, बैच ऑर्डर रद्दीकरण, ऑर्डर संशोधन, आदि। कुछ एक्सचेंजों के पास ये इंटरफेस हैं, कुछ के पास नहीं हैं और उनके कार्य और उपयोग के विवरण काफी भिन्न हो सकते हैं, इसलिए इन इंटरफेस तकexchange.IO
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर कार्य (विवरण के लिए, कृपया एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म एपीआई दस्तावेज देखेंःhttps://www.fmz.com/api#exchange.io..एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म रणनीति वर्ग पर कुछ व्यावहारिक आईओ उदाहरण रणनीतियाँ भी हैं।
क्या FMZ क्वांट ट्रेडिंग प्लेटफ़ॉर्म एपीआई दस्तावेज़ पर सभी एपीआई फ़ंक्शन नेटवर्क अनुरोध उत्पन्न करते हैं?
सबसे पहले और सबसे महत्वपूर्ण बात, एक्सचेंज के एपीआई इंटरफ़ेस में एक्सेस आवृत्ति प्रतिबंध हैं (जैसे 5 बार प्रति सेकंड), और एक्सेस बहुत बार नहीं हो सकता है, अन्यथा यह http 429 त्रुटि की रिपोर्ट करेगा, और एक्सेस से इनकार कर दिया जाएगा (ज्यादातर एक्सचेंजों की रिपोर्ट 429) । आविष्कारक मात्रात्मक ट्रेडिंग प्लेटफॉर्म पर कैप्सुलेट एक्सचेंज इंटरफ़ेस को कॉल करने के लिए एक ही सीमा है, लेकिन एफएमजेड ट्रेडिंग क्वांट प्लेटफॉर्म पर नेटवर्क अनुरोध उत्पन्न नहीं करने वाले एपीआई कार्यों पर ऐसी कोई सीमा नहीं है। एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म के सभी एपीआई फ़ंक्शन नेटवर्क अनुरोध उत्पन्न नहीं करेंगे। उनमें से कुछ केवल कुछ स्थानीय सेटिंग्स को संशोधित करते हैं, जैसे कि वर्तमान ट्रेडिंग जोड़ी सेट करना, अनुबंध कोड सेट करना, संकेतक गणना फ़ंक्शन और एक्सचेंज ऑब्जेक्ट नाम प्राप्त करना, आदि। आम तौर पर, यह फ़ंक्शन के उद्देश्य से न्याय किया जा सकता है कि नेटवर्क अनुरोध होता है या नहीं। जब तक विनिमय डेटा, विनिमय खाता संचालन आदि उत्पन्न नेटवर्क अनुरोध होते हैं, इन इंटरफेस को कॉल आवृत्ति पर ध्यान देने की आवश्यकता होती है।
आइए एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर एपीआई कार्यों का उपयोग करते समय कुछ आम समस्याओं और अनुभवों के बारे में बात करते हैं
त्रुटि सहिष्णुता यह सबसे आम त्रुटि है, जिसने अनगिनत शुरुआती लोगों को परेशान किया है। रणनीति बैकटेस्टिंग का सब कुछ अक्सर सामान्य होता है, असली बॉट कुछ समय के लिए क्यों चलता है (किसी भी समय ट्रिगर किया जा सकता है) और फिर विफल हो जाता है?
रणनीति लिखने के समय, हम सभी को इंटरफेस द्वारा लौटाए गए डेटा का न्याय और सत्यापन करने की आवश्यकता होती है। उदाहरण के लिए, एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर प्राप्त करने के लिए बाजार मूल्य कोड की पंक्ति (अपने आप से सीधे एक्सचेंज इंटरफ़ेस तक पहुंचने के लिए एक प्रोग्राम लिखने के समान):var ticker = exchange. GetTicker()
, अगर हमें उपयोग करने की आवश्यकता हैLast
(अंतिम मूल्य)ticker
चर (GetTicker फ़ंक्शन द्वारा लौटाया संरचना का संदर्भ लें), हम का उपयोग करने की जरूरत हैvar newPrice = ticker.Last
इस तरह के डेटा प्राप्त करने के लिए (क्या है newPrice? new: latest, Price: price, yes! सभी एक साथ!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 {
// The data is null, there will be no problem if no operation is performed
}
न केवलGetTicker
इंटरफेस को दोष-सहिष्णु होना चाहिए, लेकिन नेटवर्क अनुरोधों के साथ इंटरफेस को दोष-सहिष्णु होने की आवश्यकता है (यदि आप फ़ंक्शन के वापसी मूल्य का उपयोग करते हैं)
वहाँ कई दोष सहिष्णु तरीकों हैं, आप का उपयोग कर सकते हैं_C()
समारोह (एफएमजेड एपीआई प्रलेखन देखें) लिखने के लिए दोष-सहिष्णुता समारोह और डिजाइन दोष-सहिष्णुता तंत्र और तर्क अपने आप को.
के उपयोग के लिए के रूप में_C()
इस प्रकार, कई शुरुआत करने वाले इसे गलत तरीके से उपयोग करते हैं।_C()
function एक function reference है, एक function call नहीं है।_C(funcName, param1, param2)
, कॉल सही है, funcName को कोष्ठक के बिना रखा गया है, और param1 और param2 फ़ंक्शन funcName को पास किए जाने वाले पैरामीटर हैं._C(funcName(param1, param2))
, कॉल गलत है, आमतौर पर शुरुआती लोगों द्वारा लिखा जाता है जो एफएमजेड एपीआई प्रलेखन को गंभीरता से नहीं पढ़ते हैं।
स्पॉट मार्केट ऑर्डर खरीद ऑर्डर की ऑर्डर मात्रा
स्पॉट मार्केट ऑर्डर खरीद ऑर्डर की ऑर्डर मात्रा भी शुरुआती लोगों द्वारा गलतियां करना आसान है, जैसा कि पिछले लेख में उल्लेख किया गया है, स्पॉट मार्केट ऑर्डर खरीद ऑर्डर की ऑर्डर मात्रा आमतौर पर राशि है (बहुत कम एक्सचेंजों में अन्य सेटिंग्स हो सकती हैं, आम तौर पर, एफएमजेड पर ये विशेष एक्सचेंज सेटिंग्स एफएमजेड एपीआई दस्तावेज़ में समझाई जाएंगी), उदाहरण के लिए मैं परीक्षण करने के लिए ओकेएक्स वी 5 डेमो का उपयोग करता हूंः
व्यापारिक जोड़ी को इस प्रकार सेट किया गया हैःLTC_USDT
function main() {
exchange.IO("simulate", true) // Switch to the demo of OKEX exchange
exchange.Buy(-1, 1) // The price is -1, indicating that the order placed is a market order, and the quantity is 1, indicating that the order amount is 1USDT
}
चूंकि एक्सचेंजों में आम तौर पर ऑर्डर राशि पर सीमा होती है, इसलिए सीमा से कम ऑर्डर नहीं रखे जाएंगे (उदाहरण के लिए, बिनांस स्पॉट को सफलतापूर्वक रखे जाने से पहले प्रत्येक ऑर्डर के लिए 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...
के रूप में आदेश समारोह केवल है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 as a quarterly contract
exchange.SetDirection("sell")
var id = exchange.Sell(-1, 1)
Log("See my market order is placed and the transaction is completed, there is a position", exchange.GetPosition())
exchange.SetDirection("closebuy") // closebuy is used in conjunction with Sell, yes~
exchange.Sell(-1, 1)
}
यहाँ आप पूछ सकते हैं:
लॉग आउटपुट, लेनदेन सूचना प्रदर्शित करना
प्रोग्राम और मात्रात्मक ट्रेडिंग रणनीतियों का डिजाइन मानव-कंप्यूटर बातचीत के डिजाइन से अविभाज्य है, जैसे कि print
.
जावास्क्रिप्ट उपयोगconsole.log
.
गोलांग का प्रयोगfmt.Println()
.
सी++ का प्रयोगcout
आइए बात करते हैं FMZ प्लेटफॉर्म पर सूचना प्रदर्शन के बारे में, FMZ क्वांट ट्रेडिंग प्लेटफॉर्म पर, दो मुख्य स्थान हैं जहां जानकारी प्रदर्शित की जाती है।
स्थिति स्तंभ वास्तविक बॉट चलाने के बाद, वास्तविक बॉट पृष्ठ चित्र में दिखाया गया हैः
प्रदर्शन भाग स्थिति स्तंभ जानकारी है। स्थिति स्तंभ का उपयोग मुख्य रूप से कुछ वास्तविक समय में बदलते डेटा प्रदर्शित करने के लिए किया जाता है (क्योंकि वास्तविक समय में परिवर्तनों को वास्तविक समय में देखा जाना चाहिए, और इसे हर बार लॉग के रूप में मुद्रित नहीं किया जा सकता है, इस प्रकार के डेटा को स्थिति स्तंभ में प्रदर्शित किया जा सकता है। लॉग बहुत सारे डुप्लिकेट और अर्थहीन डेटा को दोहराएगा, यदि प्रत्येक लॉग मुद्रित किया जाता है तो क्वेरी को प्रभावित करता है) ।
स्थिति स्तंभ पर प्रदर्शित डेटा का उपयोग करता हैLogStatus
विवरण के लिए, कृपया एफएमजेड एपीआई प्रलेखन देखें।
लॉग स्तंभ वास्तविक बॉट पृष्ठ पर भी हटाया गया, जैसा कि चित्र में दिखाया गया हैः
प्रदर्शन भाग लॉग कॉलम है। लॉग कॉलम का उपयोग मुख्य रूप से एक निश्चित समय पर कुछ डेटा को स्थायी रूप से रिकॉर्ड करने के लिए किया जाता है, या एक निश्चित समय पर एक निश्चित रणनीति के संचालन को रिकॉर्ड करने के लिए किया जाता है। विभिन्न प्रकार के लॉग होते हैंः
सामान्य लॉग, एफएमजेड पर रणनीतियाँ रणनीति लॉग में आउटपुट और प्रिंट करने के लिए लॉग फ़ंक्शन को अपनाती हैं।
ऑर्डर लॉग, उपयोगexchange.Sell
/exchange.Buy
में FMZ
रद्द करने का लॉग,exchange.CancelOrder
FMZ
त्रुटि लॉग, जब एफएमजेड पर रणनीति चल रही है, तो नेटवर्क अनुरोध करने वाले इंटरफ़ेस पर कॉल त्रुटि होती है, एक अपवाद फेंक दिया जाता है (जैसे फेंकने का कथन), त्रुटि लॉग स्वचालित रूप से लॉग में आउटपुट होता है।
एफएमजेड पर एपीआई फ़ंक्शन, फ़ंक्शन जो लॉग आउटपुट उत्पन्न कर सकते हैं जैसे लॉग ((...), exchange.Buy ((Price, Amount), exchange.CancelOrder ((Id), आदि, उन सभी के बाद आवश्यक पैरामीटर के बाद कुछ अतिरिक्त आउटपुट पैरामीटर हो सकते हैं, जैसेः exchange. CancelOrder ((orders[j].Id, orders[j]), यह ऑर्डर की जानकारी आउटपुट करने के लिए है जब ऑर्डर का क्रम [j] रद्द कर दिया जाता है।
function main() {
Log("data1", "data2", "data3", "...")
var data2 = 200
var id = exchange.Sell(100000, 0.1, "Attached data1", data2, "...")
exchange.CancelOrder(id, "Attached data1", data2, "...")
LogProfit(100, "Attached data1", data2, "...")
}
संकेतक कार्यों का प्रयोग
संकेतक फंक्शन के बारे में बात करने से पहले, आइए पहले समझते हैं कि एक संकेतक क्या है। सरल शब्दों में, यह एक रेखा है, जैसे कि चलती औसत, एमएसीडी और एटीआर।
प्रश्न: ये संकेतक कहां से आए?
उत्तर: बेशक यह गणना की जाती है।
प्रश्न: गणना का आधार क्या है?
उत्तर: के-लाइन डेटा के आधार पर गणना।
प्रश्न: एक उदाहरण दें?
उत्तर: उदाहरण के रूप में सबसे सरल संकेतक चलती औसत संकेतक को लेते हुए, यदि हम दैनिक के-लाइन (यानी, एक सकारात्मक या नकारात्मक रेखा एक दिन का प्रतिनिधित्व करती है) डेटा का उपयोग संकेतक गणना के लिए डेटा स्रोत के रूप में करते हैं। चलती औसत संकेतक पैरामीटर 10 है, तो गणना की गई चलती औसत संकेतक 10-दिवसीय चलती औसत है।
प्रश्न: यदि के-लाइन बार की संख्या 10 से कम है तो क्या चलती औसत सूचक की गणना की जा सकती है?
उत्तर: न केवल चलती औसत सूचक की गणना नहीं की जा सकती है, बल्कि कोई भी सूचक प्रभावी सूचकांक मूल्य की गणना नहीं कर सकता है जब K-लाइन डेटा BAR की संख्या सूचक अवधि पैरामीटर को पूरा नहीं करती है, और गणना की गई सरणी की संबंधित स्थिति खाली मूल्यों से भरी होगी, उदाहरण के लिए,JavaScript
भाषा रणनीति प्रदर्शित होगीnull
गणना किए गए सूचक डेटा को छापते समय।
ऐसा होता है कि रणनीति वर्ग में एक ट्यूटोरियल उदाहरण हैःhttps://www.fmz.com/strategy/125770बैकटेस्ट ट्यूटोरियल उदाहरण रणनीति, हम बैकटेस्टिंग प्रणाली और 10-अवधि चलती औसत द्वारा उत्पन्न चार्ट देख सकते हैंः
रणनीति कस्टम ड्राइंग, खींची गई K-लाइन के साथ-साथ चलती औसत चार्ट।
प्रश्न: क्या होगा अगर मैं 10 घंटे का चलती औसत चाहता हूँ? उत्तरः K-लाइन डेटा का उपयोग करके घंटे की अवधि के साथ K-लाइन डेटा ठीक होगा।
आम आदमी के शब्दों में, हम जो K-लाइन देखते हैं वह एक सरणी है जिसे हमने डिजिटलीकृत करने के बाद (आप Baidu से पूछ सकते हैं यदि आप सरणी की अवधारणा को नहीं समझते हैं), जिसका प्रत्येक तत्व एक K-लाइन कॉलम है, जिसे क्रम में व्यवस्थित किया गया है, सरणी में पहला तत्व वर्तमान समय से सबसे दूर है, और सरणी का अंतिम तत्व वर्तमान समय के सबसे करीब है। आमतौर पर, के-लाइन डेटा का अंतिम बार वर्तमान अवधि का बार होता है, जो वास्तविक समय में बदलता है और यह अधूरा होता है (आप एक विनिमय पृष्ठ में लॉग इन करके परिवर्तनों का निरीक्षण कर सकते हैं और के-लाइन का निरीक्षण कर सकते हैं) । गणना किए गए संकेतक भी के-लाइन बार के अनुरूप होते हैं। उपरोक्त उदाहरण में, हम देख सकते हैं कि एक संकेतक मूल्य के-लाइन बार के अनुरूप है। ध्यान दें कि अंतिम के-लाइन बार वास्तविक समय में बदलता है, और गणना की गई संकेतक भी के-लाइन बार के परिवर्तन के साथ बदल जाएगी।
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर, हम टीए लाइब्रेरी (एफएमजेड प्लेटफॉर्म द्वारा लागू लाइब्रेरी, डॉकर में एकीकृत, और विभिन्न भाषाओं का सीधे उपयोग किया जा सकता है) या तालिब लाइब्रेरी (पुरानी तालिब संकेतक लाइब्रेरी, जेएस, सी ++ एकीकरण, पायथन की आवश्यकता है) का उपयोग कर सकते हैं। उदाहरण के लिए उपरोक्त उदाहरण में चलती औसत की गणना करने के लिएः टीए लाइब्रेरी का प्रयोग करें:
function main() {
var records = exchange.GetRecords()
var ma = TA.MA(records, 10)
Log(ma) // print moving average
}
तालिब लाइब्रेरी का प्रयोग करें:
function main() {
var records = exchange.GetRecords()
var ma = talib.MA(records, 10)
Log(ma) // print moving average
}
गणना की गई सूचक डेटा मा एक सरणी है, और प्रत्येक तत्व K-लाइन सरणी (रिकॉर्ड) एक-से-एक, अर्थात्,ma[ma.length -1]
से मेल खाती हैrecords[records.length - 1]
, और इसी तरह।
अन्य जटिल संकेतकों के लिए भी यही बात लागू होती है, और हमें एमएसीडी जैसे संकेतकों पर ध्यान देने की आवश्यकता है।
var macd = TA.MACD(records) // In this way, only the K-line data is passed in, not the indicator parameters. The indicator parameters use the default values, and the same goes for other indicator functions.
इस समय, चर macd एक दो आयामी सरणी है (यदि आप अवधारणा को नहीं समझते हैं तो आप Baidu से पूछ सकते हैं) । एक दो आयामी सरणी बस एक सरणी है, और इसका प्रत्येक तत्व भी एक सरणी है। प्रश्न: मैकडी सूचक डेटा दो आयामी सरणी क्यों है? उत्तर: क्योंकि मैकड सूचक दो रेखाओं (डिफ़ लाइन, डीईए लाइन) और वॉल्यूम बारों (मैकड वॉल्यूम बार, वास्तव में इस वॉल्यूम बार डेटा को भी एक रेखा माना जा सकता है) के सेट से बना है। इसलिए मैकड चर को विभाजित किया जा सकता हैः
var dif = macd[0]
var dea = macd[1]
var macdColumn = macd[2]
यहाँ एक तैयार ट्यूटोरियल उदाहरण भी है, यदि आप रुचि रखते हैं, तो आप इस पर अध्ययन कर सकते हैंःhttps://www.fmz.com/strategy/151972