क्रिप्टोक्यूरेंसी सर्कल में बहुत सारे दोस्त हैं जिन्हें ऑर्डर पर्यवेक्षण बॉट की आवश्यकता है, लेकिन जब उनके पास शून्य बुनियादी होता है तो वे प्रोग्रामेटिक डिजाइन के साथ शुरू करने के लिए लंबे समय से पीड़ित होते हैं। ऐसी जरूरतों के आधार पर, इस लेख में, हम उन दोस्तों को शून्य बुनियादी के साथ प्रोग्राम ट्रेडिंग सीखने में मदद करने के लिए एक सरल स्पॉट ऑर्डर पर्यवेक्षण बॉट डिजाइन करेंगे।
सबसे पहले, हम आवश्यकता का विश्लेषण करते हैं. इस बॉट का कार्य यह महसूस करना है कि जब एक खाते में एक खरीद या बिक्री ऑपरेशन होता है, तो ऑर्डर पर्यवेक्षण के अन्य खाते भी ऑपरेशन का पालन करेंगे और निष्पादित करेंगे. तो, हम पहले दो विषयों को परिभाषित करते हैंः
इस आवश्यकता को प्रारंभ में स्पष्ट करने के बाद, हम अगले चरण के बारे में सोचना जारी रखते हैं। हम संदर्भ खाते की प्रत्येक क्रिया की पहचान कैसे कर सकते हैं?
संदर्भ खाते की निगरानी करें. यह स्पॉट ट्रेडिंग खातों के लिए बहुत सरल है. हमें केवल नवीनतम खाता सूचना डेटा में प्रतीक राशि की तुलना नवीनतम प्राप्त खाता सूचना डेटा में वर्तमान प्रतीक राशि के साथ करने की आवश्यकता है. यदि वर्तमान में प्राप्त नवीनतम खाता सूचना डेटा में प्रतीक राशि पिछले रिकॉर्ड से अधिक है, तो यह साबित करता है कि संदर्भ खाते ने एक खरीद ऑपरेशन किया है और निष्पादन सफल रहा है। इसके विपरीत, यदि कम प्रतीक हैं, तो संदर्भ खाते के लिए एक बिक्री ऑपरेशन किया जाता है। हम कार्रवाई का पता लगाने के बाद, अन्य प्लेटफॉर्म खातों को एक ही ऑपरेशन करने दें।
जब यह पाया जाता है कि संदर्भ खाते ने एक व्यापार किया है, तो यह निर्धारित करने के लिए कि क्या कोई नई व्यापार कार्रवाई है, इसकी तुलना अगली बार प्राप्त खाता जानकारी के साथ करने के लिए नवीनतम खाता डेटा रिकॉर्ड को अद्यतन किया जाना चाहिए।
उपरोक्त तर्क का रणनीति कोड विवरणः
// detect order supervising
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) // detect the currency amount changes
var func = null
if (amount > 0) { // the amount increased
func = $.Buy // buy
} else if (amount < 0) { // the amount decreased
func = $.Sell // sell
} else {
continue
}
// execute order supervising
Log("Order supervising! Amount:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) { // when i equals 0, it indicates the reference platform, not to be processed; process other order supervising platforms
func(exchanges[i], Math.abs(amount)) // execute the specified trading function, and it could be $.Buy or $.Sell, which needs to be determined by observing whether amount is larger than 0 or less than 0
}
// update the information record of the reference account after order supervising
initAcc = nowAcc // update the latest account information of the reference platform, to compare it with the next one
रणनीति का मुख्य पता लगाने का तर्क उपरोक्त कोड है। डिजाइन को सरल बनाने के लिए, रणनीति आधिकारिक एफएमजेड [डिजिटल मुद्रा व्यापार पुस्तकालय] टेम्पलेट का उपयोग करती है, और$.Buy
और$.Sell
सभी कार्य टेम्पलेट के हैं, कार्य आदेश संचालन को निष्पादित करना है।
प्रत्येक खाते के डेटा की निगरानी करने में सुविधा के लिए रणनीति में कुछ स्थिति पट्टी प्रदर्शित जोड़ें। पूर्ण रणनीति निम्नानुसार हैः
function test() {
// test function
var ts = new Date().getTime()
if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
Sleep(1000 * 60 * 10)
var x = Math.random()
if (x > 0.5) {
$.Buy(exchange, x / 10)
} else {
$.Sell(exchange, x / 10)
}
}
}
function main() {
LogReset(1)
if (exchanges.length < 2) {
throw "no platform of order supervising"
}
var exName = exchange.GetName()
// detect the reference platform
if (exName.includes("Futures_")) {
throw "only support sport order supervising"
}
Log("start monitoring", exName, "platform", "#FF0000")
// detect the order supervising platforms
for (var i = 1 ; i < exchanges.length ; i++) {
if (exchanges[i].GetName().includes("Futures_")) {
throw "Do not support the order supervising of futures platfroms"
}
}
var initAcc = _C(exchange.GetAccount)
while(1) {
if(IsVirtual()) {
// test function
test()
}
Sleep(5000)
// update the current information of the reference account
var nowAcc = _C(exchange.GetAccount)
// the account information of the reference platform
var refTbl = {
type : "table",
title : "reference platform",
cols : ["name", "symbol", "frozen symbol", "assets", "frozen assets"],
rows : []
}
refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
// the account information of the order supervising platform
var followTbl = {
type : "table",
title : "order supervising platform",
cols : ["name", "symbol", "frozen symbol", "assets", "frozen assets"],
rows : []
}
for (var i = 1 ; i < exchanges.length ; i++) {
var acc = _C(exchanges[i].GetAccount)
var name = exchanges[i].GetName()
followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance])
}
// status bar display
LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
// detect order supervising
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)
var func = null
if (amount > 0) {
func = $.Buy
} else if (amount < 0) {
func = $.Sell
} else {
continue
}
// execute order supervising
Log("Order supervising! Amount:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) {
func(exchanges[i], Math.abs(amount))
}
// update the information record of the reference account after order supervising
initAcc = nowAcc
}
}
चलो इसे वास्तविक बॉट पर परीक्षण करते हैं, एफएमजेड wexApp सिमुलेशन प्लेटफॉर्म द्वारा परीक्षण करने के लिए। यहाँ मैंने तीन wexApp खातों को जोड़ा है, जो सभी स्वतंत्र खाते हैं। उनमें से एक संदर्भ मंच के रूप में कार्य करता है, और अन्य दो आदेश पर्यवेक्षण प्लेटफार्मों के रूप में कार्य करते हैं।
फिर, हमने मैन्युअल रूप से एफएमजेड ट्रेडिंग टर्मिनल के माध्यम से एक आदेश रखा यह देखने के लिए कि क्या बॉट स्वचालित रूप से आदेश की देखरेख कर सकता है।
आप देख सकते हैं कि बॉट ने व्यापार का पता लगाया और आदेश पर्यवेक्षण ऑपरेशन किया।
पूर्ण रणनीति:https://www.fmz.com/strategy/255182
यह रणनीति केवल अध्ययन के लिए है। यदि कोई प्रश्न है, तो हम इसके बारे में टिप्पणी छोड़ने के लिए आभारी होंगे।