हमने ट्रेडिंग रणनीति बनाने के लिए विज़ुअलाइज़ेशन मॉड्यूल सीखा है - पहला परिचित, और हमारे पास विज़ुअल मॉड्यूल निर्माण और स्प्लाईसिंग की वैचारिक समझ है, इसके बाद अन्य मॉड्यूलों का प्रयोग करना सीखना आसान है। कुछ अधिक जटिल कार्यों को जोड़ना संभव है।
पिछले सीखने और परीक्षण में, हमें कई
जो प्रयोग किये गये हैं, उन्हें यहाँ दोहराया नहीं जाएगा।
जब रोबोट ट्रेडिंग का उपयोग करने के लिए रणनीतियाँ लिखते हैं, तो आप एक से अधिक एक्सचेंज ऑब्जेक्ट जोड़ सकते हैं, जैसे हेजिंग रणनीतियाँ। या आपको बाजार तक पहुँचने के लिए एक्सचेंज ऑब्जेक्ट्स को पार करने की आवश्यकता है (पार करने का अर्थ है एक्सचेंज ऑब्जेक्ट्स को एक-एक करके देखना) । यह वह जगह है जहां एक्सचेंजों की संख्या प्राप्त करने के लिए मॉड्यूल खेल में आता है।
हम एक सरल संरचना में वर्तमान में विन्यस्त एक्सचेंजों की संख्या मुद्रित कर सकते हैंः
वास्तव में, यह इस तरह के जावास्क्रिप्ट रणनीति कोड कॉल करने के लिए की तरह हैः
function main () {
Log(exchanges.length)
}
आइए इस संयुक्त मॉड्यूल के चल रहे परिणामों पर एक नज़र डालें:
हम देख सकते हैं कि हमने तीन एक्सचेंज ऑब्जेक्ट जोड़े हैं, जो तीन अलग-अलग एक्सचेंज खातों का प्रतिनिधित्व करते हैं, और बैकटेस्ट लॉग का आउटपुट परिणाम 3 है।
तीन विनिमय वस्तुओं को जोड़ते समय, ड्रॉप-डाउन बॉक्स तीन विकल्प प्रदर्शित करेगा. लूप प्रकार में एक लूप मॉड्यूल पहले से सीखें.
पूर्व में एक स्थिति निर्णय मॉड्यूल सीखेंः
निर्णय की शर्तों को इस प्रकार लिखा जा सकता हैः
हम लूप मॉड्यूल का उपयोग जोड़े गए एक्सचेंज नामों को पार करने के लिए करते हैं। हम शर्त न्याय मॉड्यूल का उपयोग यह तय करने के लिए करते हैं कि क्या वर्तमान लूप की संख्या मुद्रित होने वाले एक्सचेंज के नाम से मेल खाती है।
बैकटेस्ट ऑपरेशन के परिणाम:
जावास्क्रिप्ट रणनीति कोड की तरहः
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
एक सरल उदाहरण वर्तमान में सेट की गई पहली विनिमय वस्तु की ट्रेडिंग जोड़ी प्राप्त करना और इसे पाठ चर (पूर्व में चर श्रेणी में बनाए गए) को असाइन करना है।
बैकटेस्टिंग के परिणाम:
यदि आप जावास्क्रिप्ट रणनीति कोड कॉल करते हैंः
function main () {
var text = exchange.GetCurrency()
Log(text)
}
यह मॉड्यूल ऑर्डर ऑपरेशन के लिए बहुत महत्वपूर्ण है। पहला टेनन (गोलाकार) स्थिति एक मूल्य चर के साथ एम्बेडेड है, जिसका उपयोग ऑर्डर मूल्य निर्दिष्ट करने के लिए किया जाता है। आप सीधे एक निश्चित मूल्य भी दर्ज कर सकते हैं। दूसरी टेनन (गोलाकार) स्थिति आदेश मात्रा चर के साथ एम्बेडेड है, जिसका उपयोग आदेश मात्रा को निर्दिष्ट करने के लिए किया जाता है।
उदाहरण के लिए, हम वर्तमान टिक बाजार डेटा की नवीनतम कीमत के आधार पर 10 युआन की स्लाइडिंग कीमत जोड़ने पर खरीद ऑर्डर रखने के उदाहरण को जोड़ते हैं, जिसमें ऑर्डर मात्रा 0.1 सिक्कों पर सेट होती है, और ऑर्डर आईडी प्रिंट करते हैं।
बैकटेस्ट ऑपरेशन के परिणाम:
निम्न जावास्क्रिप्ट रणनीति कोड की तरहः
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
यह मॉड्यूल वर्तमान ट्रेडिंग जोड़ी की अधूरी स्थिति में सभी लंबित ऑर्डर लौटाएगा। यह एक सूची संरचना (सरणी) लौटाता है, जिसे सूची प्रकार मॉड्यूल (ट्रैवर्सल ऑपरेशन, आदि) द्वारा संसाधित किया जा सकता है।
उदाहरण के लिए, हमने ऊपर दिए गए उदाहरण ऑर्डर मॉड्यूल[4] को थोड़ा संशोधित किया, और ऑर्डर देते समय जोड़े गए 10 युआन की कीमत को माइनस 10 युआन में बदल दिया। ऑर्डर तुरंत बंद नहीं किया जाएगा, लेकिन इसे लेनदेन की गहराई में रखा जाएगा (यानी, एक खरीदें, दो खरीदें, एन में एक निश्चित स्तर खरीदें), इस तरह, ऑर्डर लंबित ऑर्डर की स्थिति में होगा।
फिर हम वर्तमान ट्रेडिंग जोड़ी के लंबित आदेश प्राप्त करें के मॉड्यूल का उपयोग करते हैं (पूरा होने की प्रतीक्षा कर रहे) स्थिति में आदेशों की सूची प्राप्त करने के लिए।
बाद के बाजार में आदेशों को भरने के कारण बैकटेस्ट के अंतिम अवलोकन पर प्रभाव से बचने के लिए, मॉड्यूल
बैकटेस्टिंग से पता चलता है कि:
खरीद आदेश की कीमत उस समय की नवीनतम कीमत से 10 युआन कम थी, इसलिए इसे तुरंत पूरा नहीं किया जाएगा। फिर आदेश को लंबित लेनदेन की स्थिति में प्राप्त करें और उसे प्रिंट करें। अंत में, कार्यक्रम को रोकने के लिए एक अपवाद फेंक दिया जाता है।
पूरे इकट्ठे मॉड्यूल जावास्क्रिप्ट रणनीति के लिए एक कॉल की तरह हैः
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
इस मॉड्यूल का उपयोग आदेश रद्द करने के लिए किया जाता है।
ऐसे कई परिदृश्य हैं जिनमें रणनीतियों को लिखने के लिए ऐसे कार्यों की आवश्यकता होती हैः
सभी मौजूदा लंबित आदेशों को रद्द करें।
इसमें कोई संदेह नहीं है कि
सबसे पहले, सभी आदेशों के रद्द करने का परीक्षण करने के लिए, यह एक आदेश रखने के लिए स्पष्ट नहीं है। हम 2 आदेश रखने के लिए शुरू करते हैं, उनकी कीमतों और मात्रा दोनों आदेशों को अलग करने के लिए अलग हैं।
प्रतीक्षा आदेशों की वर्तमान सूची में आदेशों को पार करने के लिए
traversal के दौरान, प्रत्येक प्राप्त आदेश को चर मॉड्यूल आदेश को एक मान आवंटित किया जाता है (विभिन्न मॉड्यूल प्रकार में बनाया गया है, जैसा कि नीचे दिखाया गया है:)
आदेश आईडी निकालें, इसे
बैकटेस्ट ऑपरेशन:
जावास्क्रिप्ट रणनीति विवरण का प्रयोग करेंः
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
मॉड्यूल की टेनन (गोलाकार) स्थिति एक ऑर्डर आईडी चर मॉड्यूल से जुड़ी होती है, और ऑर्डर विवरण लौटाया जा सकता है।
चलाने के बाद लौटा आदेश ध्यान देंः
उदाहरण [5] में चल रहे परिणामों की तुलना में, यह पाया जा सकता है कि मुद्रित आदेश [] कोष्ठक के बिना एक अलग आदेश जानकारी है। क्योंकि उदाहरण [5] एक सूची लौटाता है, लेकिन यह उदाहरण एक अलग आदेश जानकारी लौटाता है (मॉड्यूल द्वारा पारित टैनन स्थिति पर आईडी चर मॉड्यूल के आधार पर प्राप्त) ।
उपरोक्त उदाहरण जावास्क्रिप्ट रणनीति निष्पादित करने के समान हैः
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
हम उपरोक्त मॉड्यूल एक-एक करके सीखेंगे और हम परीक्षण विनिमय को कमोडिटी वायदा के रूप में सेट करेंगे।
बैकटेस्टिंग सेटिंग्सः
निम्न उदाहरण सेटिंग्स के आधार पर बैकटेस्ट करता है.
कमोडिटी फ्यूचर्स में खुलने का समय और बंद होने का समय होता है। जब बाजार बंद होता है, तो इसे कनेक्ट नहीं किया जा सकता है।
जब एक्सचेंज का ऑब्जेक्ट फ्यूचर्स एक्सचेंज के रूप में कॉन्फ़िगर किया जाता है, तो यदि एक्सचेंज कोई अनुबंध स्थापित नहीं करता है और बाजार की जानकारी सीधे प्राप्त करता है, तो एक त्रुटि की सूचना दी जाएगी।
हमने अनुबंध को MA909 के रूप में निर्धारित किया है, जो वर्तमान में मेथनॉल का मुख्य अनुबंध है।
इस प्रकार, MA909 अनुबंध के वर्तमान टिक बाजार में नवीनतम मूल्य प्राप्त किया जाता है।
निष्पादित आदेश मॉड्यूल में
ऑर्डर की दिशा को निर्दिष्ट करने की आवश्यकता है, क्योंकि वायदा के पास हैः खरीदनाः खुली लंबी पोजीशन बेचनाः खुली छोटी स्थिति closebuy: लंबी पोजीशन बंद करना close-sell: शॉर्ट पोजीशन बंद करना चार दिशाएँ (कमोडिटी वायदा के लिए दो और दिशाएँ हैंः आज लंबी स्थिति बंद करने के लिए closebuy_today और आज छोटी स्थिति बंद करने के लिए closesell_today) ।
उदाहरण के लिए, यदि ऑर्डर मॉड्यूल को
बैकटेस्टिंग डिस्प्लेः
जावास्क्रिप्ट रणनीति कोड की तरहः
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
डिजिटल मुद्रा वायदा का उपयोग मूल रूप से ऊपर [8] में कमोडिटी वायदा के समान है
इसका उपयोग डिजिटल मुद्रा वायदा के लाभ को निर्धारित करने के लिए किया जाता है।
#Note: Backtesting is not supported.
जावास्क्रिप्ट रणनीति की तरहः
function main () {
exchange.SetMarginLevel(10)
}
विज़ुअलाइज़ेशन रणनीतियों के उदाहरण:
https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318अधिक रणनीतियों के लिए, कृपया देखेंःhttps://www.fmz.com/square
इस श्रृंखला के अन्य लेख