
दृश्य मॉड्यूल निर्माण की ट्रेडिंग रणनीति सीखें - परिचय अध्याय, और दृश्य मॉड्यूल के निर्माण और स्प्लिसिंग की वैचारिक समझ प्राप्त करें। फिर अन्य मॉड्यूल का उपयोग करना सीखना आसान हो जाता है। कुछ अधिक जटिल कार्यों को संयोजित किया जा सकता है।
पिछले अध्ययनों और परीक्षणों में, हम कई “लेनदेन श्रेणी” मॉड्यूल के संपर्क में आए हैं। उदाहरण के लिए: “एक्सचेंज कोट्स” मॉड्यूल “एक्सचेंज ऑबटेन के-लाइन” मॉड्यूल …
मैं उन चीजों के बारे में विस्तार से नहीं बताऊंगा जो पहले से इस्तेमाल हो चुकी हैं।

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

वास्तव में, यह निम्नलिखित जावास्क्रिप्ट नीति कोड को कॉल करने जैसा है:
function main () {
Log(exchanges.length)
}
आइये इस संयुक्त मॉड्यूल को चलाने के परिणामों पर नज़र डालें:

आप देख सकते हैं कि हमने 3 एक्सचेंज ऑब्जेक्ट जोड़े हैं, जो तीन अलग-अलग एक्सचेंज खातों का प्रतिनिधित्व करते हैं, और बैकटेस्ट लॉग आउटपुट परिणाम 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 युआन के मूल्य घटाव में बदल देते हैं। आदेश का निष्पादन तुरंत नहीं किया जाएगा, बल्कि खरीद और बिक्री की गहराई में लंबित रहेगा (अर्थात, खरीद 1, खरीद 2 और खरीद एन के बीच एक निश्चित स्तर पर), ताकि आदेश निष्पादन के लिए प्रतीक्षारत एक लंबित आदेश में रहे। फिर हम लंबित स्थिति (निष्पादन की प्रतीक्षा में) में ऑर्डरों की सूची प्राप्त करने के लिए “वर्तमान ट्रेडिंग जोड़ी के सौंपे गए ऑर्डर प्राप्त करें” मॉड्यूल का उपयोग करते हैं। आगामी बाजार स्थितियों में आदेशों के निष्पादन से बचने और बैकटेस्ट के अंतिम अवलोकन को प्रभावित करने के लिए, “वर्तमान ट्रेडिंग जोड़ी के सौंपे गए आदेश प्राप्त करें” मॉड्यूल के निष्पादित होने और ऑर्डर सूची के प्रिंट आउट होने के बाद, हम तुरंत “अपवाद फेंको” का उपयोग करते हैं “ मॉड्यूल का उपयोग कर प्रोग्राम को रोक सकते हैं।

बैकटेस्टिंग से पता चलता है:

खरीद आदेश मूल्य उस समय की नवीनतम कीमत से 10 युआन कम है, इसलिए लेनदेन तुरंत पूरा नहीं होगा। फिर उन आदेशों को प्राप्त करें जो निष्पादन के लिए प्रतीक्षारत हैं और उन्हें प्रिंट करें। अंत में, प्रोग्राम को रोकने के लिए एक अपवाद फेंका जाता है।
संपूर्ण संयोजित मॉड्यूल एक जावास्क्रिप्ट रणनीति को कॉल करने जैसा है:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}

इस मॉड्यूल का उपयोग किसी ऑर्डर को रद्द करने के लिए किया जाता है।
ऐसे कई परिदृश्य हैं जहां नीतियां लिखते समय इसकी आवश्यकता होती है:
वर्तमान में लंबित सभी ऑर्डर रद्द करें।
निस्संदेह, इसके लिए “ऑर्डर कैंसलेशन मॉड्यूल” के उपयोग की आवश्यकता होगी। ऑर्डर कैंसलेशन मॉड्यूल सीखते समय, हम वर्तमान ट्रेडिंग जोड़ी के सौंपे गए ऑर्डर के लिए मॉड्यूल प्राप्त करने के लिए [5] का उपयोग कर सकते हैं और इस फ़ंक्शन को प्राप्त करने के लिए उन्हें संयोजित कर सकते हैं।
सबसे पहले, सभी ऑर्डर रद्द करने का परीक्षण करने के लिए, ऑर्डर देना बहुत स्पष्ट नहीं है, हम दो ऑर्डर को अलग-अलग कीमतों और मात्राओं के साथ रखकर शुरू करते हैं ताकि दो ऑर्डर को अलग किया जा सके।

वर्तमान लंबित ऑर्डर सूची में ऑर्डर को पार करने के लिए लूप प्रकार मॉड्यूल में “सूची में प्रत्येक तत्व को पार करें” मॉड्यूल का उपयोग करें।
ट्रैवर्सल के दौरान, प्रत्येक प्राप्त ऑर्डर को वेरिएबल मॉड्यूल ऑर्डर (वेरिएबल मॉड्यूल प्रकार में बनाया गया, जैसा कि नीचे दिखाया गया है:) को सौंपा जाता है।
उपकरण प्रकार मॉड्यूल का उपयोग करें:
ऑर्डर आईडी निकालें और इसे कैंसल ऑर्डर मॉड्यूल की टेनन (अवतल) स्थिति में पास करें, और कैंसल ऑर्डर मॉड्यूल कैंसल ऑर्डर को निष्पादित करता है।
बैकटेस्ट रन:

जावास्क्रिप्ट नीति विवरण का उपयोग करना:
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_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("未连接商品期货前置机")
}
Sleep(1000)
}
}
डिजिटल मुद्रा वायदा का उपयोग मूल रूप से ऊपर [8] में कमोडिटी वायदा के उपयोग के समान है।
OKEX को उदाहरण के रूप में लेते हुए, अनुबंध कोड हो सकता है:
BitMEX :
लीवरेज मॉड्यूल सेट करना

डिजिटल मुद्रा वायदा के लिए उत्तोलन निर्धारित करने के लिए उपयोग किया जाता है।
# 注意 : 回测不支持。
जावास्क्रिप्ट रणनीति के अनुसार:
function main () {
exchange.SetMarginLevel(10)
}
विज़ुअलाइज़ेशन उदाहरण रणनीति:
अधिक रणनीतियाँ यहां उपलब्ध हैं: https://www.fmz.com/square
इस श्रृंखला के अन्य लेख