کریپٹوکرنسی حلقے میں بہت سارے دوست ہیں جنھیں آرڈر سپروائزنگ بوٹ کی ضرورت ہے ، لیکن جب ان کے پاس صفر بیسک ہوتا ہے تو وہ پروگرامٹک ڈیزائن کے ساتھ شروع کرنے میں طویل وقت سے دوچار ہوتے ہیں۔ اس طرح کی ضروریات کی بنیاد پر ، اس مضمون میں ، ہم ایک سادہ اسپاٹ آرڈر سپروائزنگ بوٹ ڈیزائن کریں گے تاکہ ان دوستوں کی مدد کی جاسکے جن کے پاس صفر بیسک ہے پروگرام ٹریڈنگ سیکھنے کے لئے۔
سب سے پہلے ، آئیے اس کی ضرورت کا تجزیہ کریں۔ اس بوٹ کا کام یہ سمجھنا ہے کہ جب کسی اکاؤنٹ میں خریداری یا فروخت کا عمل ہوتا ہے تو ، آرڈر کی نگرانی کرنے والے دوسرے اکاؤنٹس بھی اس عمل کی پیروی کریں گے اور اسے انجام دیں گے۔ تو، ہم سب سے پہلے 2 مضامین کی وضاحت:
اس شرط کو ابتدائی طور پر واضح کرنے کے بعد ، ہم اگلے مرحلے کے بارے میں سوچتے رہتے ہیں۔ ہم حوالہ اکاؤنٹ کی ہر کارروائی کی شناخت کیسے کرسکتے ہیں؟
حوالہ اکاؤنٹ کی نگرانی کریں۔ اسپاٹ ٹریڈنگ اکاؤنٹس کے لئے یہ بہت آسان ہے۔ ہمیں صرف تازہ ترین اکاؤنٹ کی معلومات کے اعداد و شمار میں علامت کی رقم کا حالیہ اکاؤنٹ کی معلومات کے اعداد و شمار میں موجودہ علامت کی رقم سے موازنہ کرنے کی ضرورت ہے۔ اگر موجودہ حاصل کردہ تازہ ترین اکاؤنٹ کی معلومات کے اعداد و شمار میں علامت کی رقم پچھلے ریکارڈ سے زیادہ ہے تو ، اس سے یہ ثابت ہوتا ہے کہ حوالہ اکاؤنٹ نے خریداری کا آپریشن انجام دیا ہے اور عملدرآمد کامیاب رہا ہے۔ اس کے برعکس ، اگر کم علامتیں ہیں تو ، حوالہ اکاؤنٹ کے لئے فروخت کا آپریشن انجام دیا جاتا ہے۔ جب ہم اس کارروائی کا پتہ لگاتے ہیں تو ، دوسرے پلیٹ فارم اکاؤنٹس کو وہی آپریشن انجام دینے دیں۔
جب یہ معلوم ہوتا ہے کہ ریفرنس اکاؤنٹ نے تجارت کی ہے تو ، اکاؤنٹ کے تازہ ترین ڈیٹا ریکارڈ کو اپ ڈیٹ کیا جانا چاہئے تاکہ اس کا موازنہ اگلی بار حاصل کردہ اکاؤنٹ کی معلومات سے کیا جاسکے تاکہ یہ معلوم کیا جاسکے کہ آیا کوئی نئی تجارتی کارروائی ہوئی ہے۔
مندرجہ بالا منطق کی حکمت عملی کوڈ کی وضاحت:
// 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
حکمت عملی کا بنیادی پتہ لگانے کا منطق مندرجہ بالا کوڈ ہے۔ ڈیزائن کو آسان بنانے کے ل the ، حکمت عملی سرکاری ایف ایم زیڈ [ڈیجیٹل کرنسی ٹریڈنگ لائبریری] ٹیمپلیٹ کا استعمال کرتی ہے ، اور$.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
}
}
آئیے اسے حقیقی بوٹ پر آزمائیں ، ایف ایم زیڈ ویکس ایپ سمیلیشن پلیٹ فارم کے ذریعہ ٹیسٹ کرنے کے لئے۔ یہاں میں نے تین ویکس ایپ اکاؤنٹس شامل کیے ہیں ، جن میں سے سب آزاد اکاؤنٹس ہیں۔ ان میں سے ایک حوالہ پلیٹ فارم کے طور پر کام کرتا ہے ، اور دوسرے دو آرڈر سپروائزنگ پلیٹ فارم کے طور پر کام کرتے ہیں۔
پھر، ہم نے دستی طور پر ایف ایم زیڈ ٹریڈنگ ٹرمینل کے ذریعے ایک آرڈر دیا تاکہ یہ دیکھیں کہ کیا روبوٹ خود بخود آرڈر کی نگرانی کرسکتا ہے۔
آپ دیکھ سکتے ہیں کہ بوٹ نے تجارت کا پتہ لگایا اور آرڈر سپروائزنگ آپریشن انجام دیا۔
مکمل حکمت عملی:https://www.fmz.com/strategy/255182
یہ حکمت عملی صرف مطالعہ کے لیے ہے۔ اگر کوئی سوال ہے تو ہم اس کی تعریف کریں گے اگر آپ اس پر تبصرے چھوڑیں۔