पिछले लेख में हमने प्रोग्रामेटिक ट्रेडिंग स्क्रिप्ट के बारे में बात की थी। वास्तव में, ट्रेडिंग रणनीति एक ट्रेडिंग स्क्रिप्ट है। लेख मुख्य रूप से ट्रेडिंग स्क्रिप्ट के बारे में बात करता है जिसे हार्डवेयर वाहक की आवश्यकता होती है (जहां प्रोग्राम चल रहा है) और यह स्क्रिप्ट ट्रेडिंग प्रोग्राम उस कंप्यूटर प्रोग्रामिंग भाषा में लिखा जा सकता है जिसे आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर उपयोग करने वाली तीन प्रोग्रामिंग भाषाओं को सूचीबद्ध करता है।
ट्रेडिंग रणनीतियों के प्रकार शुरुआती प्रोग्रामेटिक ट्रेडिंग, क्वांटिफाइड ट्रेडिंग के लिए नए लोग विभिन्न प्रकार की प्रवृत्ति रणनीतियों, सूट रणनीतियों, उच्च आवृत्ति रणनीतियों, ग्रिड रणनीतियों और अन्य नामों से भ्रमित हो सकते हैं, जबकि प्रोग्रामेटिक ट्रेडिंग, क्वांटिफाइड ट्रेडिंग सामान्य रणनीति प्रकारों को सरल रूप से कई दिशाओं में कहा जाता है।
उपरोक्त ट्रेडिंग रणनीतियों के दृष्टिकोण से विभाजित हैं, और आविष्कारकों द्वारा क्वांटिफाइड ट्रेडिंग प्लेटफार्मों पर रणनीति डिजाइन के दृष्टिकोण से, रणनीतियों को भी विभाजित किया जा सकता हैः
एक्सचेंज एपीआई इंटरफ़ेस प्रोग्रामेटिक ट्रेडिंग स्क्रिप्ट एक्सचेंज खाते को कैसे संचालित करती है? इसका उत्तर एक्सचेंज के माध्यम से खुले एपीआई इंटरफेस में है। तो, एक्सचेंजों के लिए खुले इंटरफेस किस प्रकार के होते हैं? पिछले लेख में हमने एक्सचेंजों के बारे में बताया था कि एक्सचेंजों में सामान्य रूप से REST, वेबसॉकेट इंटरफेस होते हैं। यहां हम नीति कार्यक्रम के स्तर से कुछ अवधारणाओं को जोड़ते हैं। एक्सचेंजों के इंटरफेस को सत्यापन के आधार पर विभाजित किया गया है (REST, वेबसॉकेट दोनों) सत्यापन और गैर-सत्यापन के साथ।
बिना सत्यापन के इंटरफ़ेस
आम तौर पर सार्वजनिक इंटरफेस के रूप में जाना जाता है, इस तरह के इंटरफेस को सत्यापित करने की आवश्यकता नहीं हैAPI KEY
(API KEY क्या है भूलकर पिछले लेख पर जाएं) । इस प्रकार के इंटरफ़ेस आम तौर पर बाजार इंटरफेस होते हैं, जैसे कि गहरा बाजार पूछना, K-लाइन डेटा पूछना, पूंजी दर पूछना, लेन-देन की विविधता के बारे में जानकारी पूछना, एक्सचेंज सर्वर के समय के बारे में पूछना आदि।
सरल शब्दों में कहें तो, यह एक सार्वजनिक इंटरफ़ेस है जिसका आपके खाते से कोई संबंध नहीं है (सत्यापन की आवश्यकता नहीं) ।
आविष्कारक के द्वारा क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर, जब एक अप्रमाणित एपीआई फ़ंक्शन को बुलाया जाता है (संकुल एक्सचेंज गैर-प्रमाणित इंटरफ़ेस, सार्वजनिक इंटरफ़ेस) तब भी एपीआई कुंजी को गलत कॉन्फ़िगरेशन के साथ, इंटरफ़ेस पर लौटने वाले डेटा को सामान्य रूप से प्राप्त किया जा सकता है।
जिन इंटरफेस को सत्यापित करने की आवश्यकता है सरल शब्दों में कहें तो, यह एक ऐसा इंटरफ़ेस है जिसे एपीआई कीवी के माध्यम से सत्यापित करने की आवश्यकता होती है, जिसे एक निजी इंटरफ़ेस कहा जाता है। यह आमतौर पर आपके खाते के कुछ कार्यों या जानकारी से जुड़ा होता है, जैसे कि खाता संपत्ति का पता लगाना, खाता होल्डिंग का पता लगाना, पूछताछ करना, पूछताछ करना, एक-पर-एक-पर-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक-एक इन सभी कार्यों को सत्यापित किया जाना चाहिए। आविष्कारक द्वारा क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर, एपीआई फ़ंक्शन को कॉल करने पर सत्यापन की आवश्यकता होती है (इंटरफेस जो एक पैक किए गए एक्सचेंज को सत्यापित करने की आवश्यकता होती है, निजी इंटरफ़ेस), यदि एपीआई की को गलत रूप से कॉन्फ़िगर किया जाता है, तो इंटरफ़ेस को कॉल करने पर एक त्रुटि दिखाई देती है और रिक्त मान लौटाती है।
तो इन इंटरफेस का उपयोग कैसे किया जाता है इन आविष्कारकों के लिए क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर?
आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म में एक्सचेंज व्यवहार, परिभाषित इंटरफेस (जैसे, के-लाइन इंटरफेस, डीप-मार्केट इंटरफेस, वर्तमान परिसंपत्ति इंटरफेस, डाउन सिंगल इंटरफेस, ऑर्डर निकालने के इंटरफेस आदि) शामिल हैं, जिन्हें आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म एपीआई फ़ंक्शन कहा जाता है, जिसे एपीआई दस्तावेज़ीकरण से पूछकर देखा जा सकता है।https://www.fmz.com/api )。
तो, कैसे कुछ व्यवहार, परिभाषाओं और एक्सचेंजों के लिए एक समान इंटरफेस आविष्कारकों के लिए एक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म के रूप में उपयोग किया जाता है?
इन एक्सचेंजों के इंटरफेस के उदाहरण हैंः परिसंपत्ति विभाजन, सशर्त असाइनमेंट, थोक ऑर्डर, थोक निकासी, संशोधन ऑर्डर आदि। ये इंटरफेस कुछ एक्सचेंजों में उपलब्ध हैं, कुछ एक्सचेंजों में नहीं हैं, और फ़ंक्शन और उपयोग के विवरण में काफी अंतर हो सकता है, इसलिए इन इंटरफेस को आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर पारित किया जाता है।exchange.IO
इस फ़ंक्शन को एक्सेस करने के लिए, आप इसके आविष्कारक के एपीआई दस्तावेज़ को देख सकते हैंःhttps://www.fmz.com/api#exchange.io...........................................
क्या आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म एपीआई दस्तावेज़ में सभी एपीआई फ़ंक्शन नेटवर्क अनुरोध उत्पन्न करते हैं?
यदि एक्सचेंज एपीआई इंटरफेस पर पहुंच की आवृत्ति सीमित है (उदाहरण के लिए, 5 बार प्रति सेकंड), तो पहुंच बहुत अधिक नहीं हो सकती है, अन्यथा यह एक HTTP 429 त्रुटि रिपोर्ट करेगी, और प्रवेश से इनकार कर दिया जाएगा (ज्यादातर एक्सचेंजों ने 429 रिपोर्ट किया है) । तो आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर एक पैक किए गए एक्सचेंज इंटरफेस पर कॉल करने के लिए भी यह सीमा है, लेकिन आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर नेटवर्क अनुरोध उत्पन्न नहीं करने वाले एपीआई फ़ंक्शन के लिए यह सीमा नहीं है। सभी आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म के एपीआई फ़ंक्शन नेटवर्क अनुरोध उत्पन्न नहीं करते हैं, कुछ आविष्कारक एपीआई फ़ंक्शन केवल कुछ स्थानीय सेटिंग्स को संशोधित करते हैं, जैसे कि वर्तमान ट्रेडिंग जोड़े सेट करना, अनुबंध कोड सेट करना, संकेतक गणना फ़ंक्शन, एक्सचेंज ऑब्जेक्ट नाम प्राप्त करना आदि। मूल रूप से फ़ंक्शन के उपयोग से यह निर्धारित किया जा सकता है कि क्या नेटवर्क अनुरोध किया गया है, जब तक कि एक्सचेंज डेटा प्राप्त करने, एक्सचेंज खाते के संचालन आदि के लिए नेटवर्क अनुरोध उत्पन्न होते हैं, इन इंटरफेस को कॉल आवृत्ति पर ध्यान देने की आवश्यकता होती है।
अब हम आपको कुछ सामान्य प्रश्नों और अनुभवों के बारे में बताएंगे जो आविष्कारकों को एपीआई के साथ क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का उपयोग करते समय होते हैं।
गलती करना यह सबसे आम गलती है, जो अनगिनत नवाचारों को परेशान करती है, अक्सर रणनीति को फिर से जांचने के लिए अच्छी तरह से सब कुछ ठीक है, क्यों वास्तविक ड्राइव कुछ समय के लिए चल रहा है (किसी भी समय ट्रिगर हो सकता है) वास्तविक ड्राइव बंद हो जाता है ~
एक रणनीति लिखने के दौरान, हम इंटरफ़ेस द्वारा लौटाए गए डेटा के लिए सत्यापन का निर्णय लेते हैं, उदाहरण के लिए, आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर इस लाइन का कोड प्राप्त करें (यह एक ही बात है कि आप अपने स्वयं के प्रोग्राम को सीधे एक्सचेंज इंटरफेस तक पहुंचने के लिए लिखते हैं):var ticker = exchange.GetTicker()
और अगर हम इसे इस्तेमाल करना चाहते हैं,ticker
चर (GetTicker फ़ंक्शन द्वारा लौटाया गया संरचना देखें)Last
(हाल की कीमतें) इस डेटा का उपयोग करने की जरूरत है।var newPrice = ticker.Last
इस प्रकार डेटा प्राप्त होता है ((newPrice क्या है?new: नवीनतम,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()
फ़ंक्शन (एफएमजेड एपीआई दस्तावेज़ देखें), स्वयं त्रुटि-सहिष्णु फ़ंक्शन लिखते हैं, स्वयं त्रुटि-सहिष्णु तंत्र, तर्क डिजाइन करते हैं।
के बारे में_C()
फ़ंक्शन का उपयोग करना, और कई नए छात्र शायद गलत हैं, ध्यान दें।_C()
फ़ंक्शन के पैरामीटर फ़ंक्शन संदर्भ हैं, फ़ंक्शन कॉल नहीं।_C(funcName, param1, param2)
, कॉल सही है, funcName में कोई छोटा सा कोष्ठक नहीं है, param1, param2 फ़ंक्शन को दिए जाने वाले पैरामीटर हैं।_C(funcName(param1, param2))
एक बार जब आप एक एफएमजेड एपीआई दस्तावेज़ को गंभीरता से नहीं देखते हैं, तो आप इसे गलत तरीके से लिखते हैं।
नकदी बाजार मूल्य के लिए आदेश की मात्रा
एफएमजेड पर इन विशेष विनिमय सेटिंग्स को एफएमजेड एपीआई दस्तावेजों में बताया जाएगा) उदाहरण के लिए, मैंने ओकेएक्स वी 5 एनालॉग डिस्क के साथ परीक्षण कियाः
लेन-देन के लिए सेट करेंः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:]
वायदा आदेश के समय की दिशा फ्यूचर्स रणनीति बनाने के लिए एक ही दिशा है, और नए लोग अक्सर गलतियाँ करते हैं जो समस्याओं का कारण बनते हैं, उदाहरण के लिए, आविष्कारकों के लिए क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर रणनीति लिखना। हम पहले एपीआई दस्तावेजों में वर्णन देखेंःhttps://www.fmz.com/api#exchange.setdirection...
और यह केवल एक ही है.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") // 设置当前合约为季度合约
exchange.SetDirection("sell")
var id = exchange.Sell(-1, 1)
Log("看我市价单下单了,成交了,就有持仓了", exchange.GetPosition())
exchange.SetDirection("closebuy") // closebuy 和Sell 搭配使用,嗯没错~
exchange.Sell(-1, 1)
}
यह देखने के लिए यहाँ पूछना होगाः अरे क्यों मैं रखरखाव है और closebuy और बेच भी साथ में इस्तेमाल किया है, कैसे गलत रिपोर्ट करने के लिए, समतल नहीं हो सकता है? अरे. मैं जवाब दूंगाः समतल गलत दिशा में है! समतल है कई पदों पर समतल है.
एक और स्थिति जहां यह त्रुटि हो सकती है, वह यह है कि स्थिति की दिशा सही है, नीचे दिए गए फ़ंक्शन का उपयोग भी सही है, और इस दिशा का होल्डिंग भी है, लेकिन फिर भी यह त्रुटि दर्ज की गई है।
इसका कारण यह हो सकता है कि आपके प्रोग्राम में कई ऑर्डर दिए गए हैं, शुरुआती ऑर्डर निष्पादित नहीं हुए हैं, ब्लोइंग ऑर्डर डिब्बे में हैं और लेनदेन का इंतजार कर रहे हैं, जब प्रोग्राम ब्लोइंग जारी रखता है, तो यह ब्लोइंग स्थिति से परे त्रुटि का संकेत देगा।
लॉग आउटपुट, लेन-देन जानकारी प्रदर्शित करना
डिजाइन, लेखन, प्रोग्रामिंग, क्वांटिफाइंग लेनदेन की रणनीति, अनप्लग किए गए डेटा को प्रदर्शित करने के लिए कंक्रीट, कंक्रीट ऑपरेशन लॉग आउटपुट कंक्रीट आदि के साथ मशीन इंटरैक्शन के डिजाइन; आमतौर पर देशी प्रोग्रामिंग भाषाओं का उपयोग करके वास्तविक डिस्क स्क्रिप्ट, कंक्रीट प्रोग्राम लिखने के लिए; सीधे वर्तमान भाषा के आउटपुट फ़ंक्शन का उपयोग करें।
उदाहरण के लिएः
python के साथprint
..
जावास्क्रिप्ट का उपयोग करनाconsole.log
..
गोलांगfmt.Println()
..
C++ का प्रयोगcout
इसके अलावा, एफएमजेड प्लेटफॉर्म पर जानकारी दो मुख्य स्थानों पर दिखाई देती है, जहां जानकारी आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर दिखाई देती है।
स्थिति टैब एक बार डिस्क चालू हो जाने के बाद, डिस्क पेज इस प्रकार है
स्थिति टैब का मुख्य उद्देश्य कुछ वास्तविक समय में परिवर्तन के डेटा को प्रदर्शित करना है (क्योंकि वास्तविक समय में परिवर्तन को वास्तविक समय में देखना आवश्यक है और हर बार लॉग में प्रिंट नहीं किया जा सकता है, इसलिए इस तरह के डेटा को स्थिति टैब में दिखाया जा सकता है, यदि प्रत्येक लॉग को प्रिंट किया जाता है तो बहुत सारे दोहराए गए डेटा होंगे, जो क्वेरी को प्रभावित करते हैं) ।
स्टेटस बार पर डेटा का उपयोग दिखाएंLogStatus
फ़ंक्शन के बारे में, आप एफएमजेड के एपीआई दस्तावेज़ को देख सकते हैं।
दिनचर्या एक बार फिर, एक बार फिर, एक बार फिर, एक बार फिर, एक बार फिर।
लॉग टैब के रूप में प्रदर्शित किया जाता है, जो मुख्य रूप से किसी समय कुछ डेटा या किसी समय नीति के लिए किसी ऑपरेशन को स्थायी रूप से रिकॉर्ड करने के लिए है। ब्लॉग के कई प्रकार हैंः 1. सामान्य लॉग, एफएमजेड की नीति में लॉग फ़ंक्शन का उपयोग करके आउटपुट, नीति लॉग में प्रिंट करें।
2, नीचे दिए गए लॉग, एफएमजेड की रणनीति में उपयोग किया गयाexchange.Sell
/exchange.Buy
यह लॉग में स्वचालित रूप से रिकॉर्ड आउटपुट करता है।
3। लॉग हटाने, एफएमजेड की रणनीति में इस्तेमाल किया गयाexchange.CancelOrder
एक बार जब आप लॉग आउट कर लेते हैं, तो लॉग आउट स्वचालित रूप से लॉग आउट हो जाता है।
4. त्रुटि लॉग, एफएमजेड की नीति चल रही है, जब नेटवर्क अनुरोध करने वाले इंटरफ़ेस पर कॉल करने में त्रुटि होती है, तो यह स्वचालित रूप से लॉग में एक त्रुटि लॉग आउटपुट करता है जब कोई असामान्य (जैसे कि फेंकने जैसे वाक्यांश) फेंक दिया जाता है।
एफएमजेड के एपीआई फ़ंक्शन, जो लॉग आउटपुट फ़ंक्शन जैसे लॉग ((...), exchange.Buy ((Price, Amount), exchange.CancelOrder ((Id) आदि उत्पन्न कर सकते हैं, आवश्यक पैरामीटर के बाद कुछ संलग्न आउटपुट पैरामीटर जैसेः exchange.CancelOrder ((orders[j].Id, orders[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-लाइन डेटा के आधार पर गणना की गई।
प्रश्नः एक उदाहरण दें?
उत्तरः सबसे सरल सूचक समोच्च सूचक उदाहरण में, यदि हम सूचक के लिए डेटा स्रोत के रूप में K-सूचक का उपयोग करते हैं (यानी, एक सूर्य रेखा या कैनिन एक दिन का प्रतिनिधित्व करता है) । समोच्च सूचक पैरामीटर 10 है, तो गणना की गई समोच्च सूचक 10 दिन की समोच्च है ।
प्रश्नः क्या यदि K-लाइन BAR की संख्या 10 से कम है, तो क्या औसत रेखा सूचकांक की गणना की जा सकती है?
उत्तरः न केवल समवर्ती संकेतक की गणना नहीं की जा सकती है, किसी भी संकेतक का एक वैध संकेतक मान गणना नहीं की जा सकती है जब K-रेखा डेटा BAR की संख्या संकेतक चक्र पैरामीटर को पूरा नहीं करती है।JavaScript
भाषा नीति प्रिंट किए गए सूचकांक डेटा को प्रदर्शित करती हैnull
。
एक उदाहरण है सही रणनीति स्क्वायर मेंःhttps://www.fmz.com/strategy/125770इस शिक्षण उदाहरण की रणनीति को दोहराने के लिए, आप दोहराने प्रणाली द्वारा उत्पन्न चार्ट और 10 चक्रों के औसत रेखा देख सकते हैंः
रणनीति अनुकूलित ड्राइंग ग्राफ, K रेखाओं और समोच्च रेखाओं को आकर्षित करने के लिएः
प्रश्नः क्या होगा अगर मैं 10 घंटे की औसत लाइन चाहता हूं? उत्तरः K-लाइन डेटा के साथ घंटे के चक्र के लिए K-लाइन डेटा ठीक है।
आम तौर पर कहा जाता है कि हम जो K-रेखा देखते हैं, हम उसे डेटाकृत करने के बाद एक सरणी (सरणी का अवधारणा समझ में नहीं आती है, नीचे जा सकते हैं) है, जिसमें प्रत्येक तत्व एक K-रेखा स्तंभ है, जो क्रम में क्रमबद्ध है, सरणी का पहला तत्व वर्तमान समय से सबसे दूर है, और सरणी का अंतिम तत्व वर्तमान समय से सबसे करीब है। आमतौर पर K-लाइन डेटा का अंतिम रेखा स्तंभ वर्तमान चक्र का रेखा स्तंभ होता है, जो वास्तविक समय में परिवर्तनशील होता है, और अधूरा होता है (एक एक्सचेंज के पेज पर लॉग इन करने पर उसके 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 सूचक दो पंक्तियों (diff पंक्ति,dea पंक्ति) और एक मात्रा स्तंभ (macd मात्रा स्तंभ, जो वास्तव में एक मात्रा स्तंभ डेटा भी एक पंक्ति के रूप में देखा जा सकता है) से बना है, इसलिए MACD चर को विभाजित किया जा सकता हैः
var dif = macd[0]
var dea = macd[1]
var macdColumn = macd[2]
यहाँ एक तैयार शिक्षण उदाहरण है, और दिलचस्प अध्ययनःhttps://www.fmz.com/strategy/151972