پچھلے دنوں میں ، مجھے ٹیلیگرام گروپ کے صارفین سے کچھ نجی پیغامات موصول ہوئے ، انہیں امید ہے کہ ان کے پاس حوالہ کے لئے نئی شیئرز کی حکمت عملی کی خریداری کی ایک ڈیزائن مثال موجود ہے۔ بعض اوقات ، وہ تبادلے میں نئی کرنسیوں کی لینڈنگ کے وقت نئی شیئرز کی خریداری کرنا چاہتے ہیں ، لہذا اس مضمون میں ، ہم نئی شیئرز کی خریداری کے لئے ایک آسان ٹول حکمت عملی ڈیزائن کریں گے۔
مثال کے طور پر ، فی الحال ، ایک ایکسچینج اور ایک تجارتی جوڑی: XXX_USDT ، ابھی تک ایکسچینج میں درج نہیں ہوئی ہے۔ لیکن یہ جلد ہی درج ہو جائے گا۔ ہمیں ایک پروگرام کے ساتھ اس ایکسچینج کے XXX_USDT مارکیٹ کی پیروی کرنے کی ضرورت ہے۔ ایک بار جب تجارتی جوڑی درج ہو جاتی ہے تو ، اس کا کاروبار کیا جاسکتا ہے۔ ہم 10 محدود قیمت خریدنے کے آرڈر جاری کرتے ہیں ، رقم کی وضاحت کرتے ہیں ، اور نئی کرنسیوں کی خریداری کے آرڈر کی فہرست دیتے ہیں۔ اگر آپ انہیں کامیابی کے ساتھ خرید سکتے ہیں تو ، آپ کام کو مکمل کرسکتے ہیں۔ اگر نہیں ، تو آپ اسے اس وقت تک درج کرسکتے ہیں جب تک کہ تمام آرڈر بند نہ ہوجائیں اور آپ کرنسیاں خرید سکتے ہیں۔
ضروریات بہت سادہ ہیں، لیکن ان لوگوں کے لئے جن کے پاس ڈیجیٹل کرنسی مارکیٹ میں پروگرامنگ کی بنیاد نہیں ہے، وہ شروع کرنے کے قابل نہیں ہوسکتے ہیں، لہذا آئیے اسے لاگو کرنے کے لئے شروع کریں.
حکمت عملی پیرامیٹر کی تعریف:
یہاں ہم ان 7 پیرامیٹرز کو ترتیب دینے جیسے آپریشنز کو کنٹرول کرنے کے لئے بیان کرتے ہیں.
کوڈ کا نفاذ:
function pendingOrders(ordersNum, price, amount, deltaPrice, deltaAmount) {
var routineOrders = []
var ordersIDs = []
for (var i = 0 ; i < ordersNum ; i++) {
var routine = exchange.Go("Buy", price + i * deltaPrice, amount + i * deltaAmount)
routineOrders.push(routine)
Sleep(ApiReqInterval)
}
for (var i = 0 ; i < routineOrders.length ; i++) {
var orderId = routineOrders[i].wait()
if (orderId) {
ordersIDs.push(orderId)
Log("placed an order successfully", orderId)
}
}
return ordersIDs
}
function main() {
if (symbol == "null" || pendingPrice == -1 || pendingAmount == -1 || pendingPrice == -1 || deltaPrice == -1 || deltaAmount == -1) {
throw "Parameter setting error"
}
exchange.SetCurrency(symbol)
// Block error messages
SetErrorFilter("GetDepth")
while (true) {
var msg = ""
var depth = exchange.GetDepth()
if (!depth || (depth.Bids.length == 0 && depth.Asks.length == 0)) {
// No depth
msg = "No depth data, wait!"
Sleep(500)
} else {
// Obtain depth
Log("Place orders concurrently!")
var ordersIDs = pendingOrders(ordersNum, pendingPrice, pendingAmount, deltaPrice, deltaAmount)
while (true) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
Log("The current number of pending orders is 0, and the operation is stopped")
return
}
var tbl = {
type: "table",
title: "The current pending orders",
cols: ["id", "price", "amount"],
rows: []
}
_.each(orders, function(order) {
tbl.rows.push([order.Id, order.Price, order.Amount])
})
LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`")
Sleep(500)
}
}
LogStatus(_D(), msg)
}
}
حکمت عملی تبادلہ API اور آرڈر بک انٹرفیس کی جانچ کرتی ہے۔ ایک بار جب آرڈر بک کا ڈیٹا حاصل کیا جاسکتا ہے تو ، حکمت عملی تبادلہ.گو فنکشن کو بیک وقت آرڈر دینے کے لئے استعمال کرے گی۔ آرڈر دینے کے بعد ، موجودہ زیر التواء آرڈر کی حیثیت کو سرکلر طور پر چیک کیا جائے گا۔ حکمت عملی کا اصل میں تجربہ نہیں کیا گیا ہے ، یہاں صرف کوڈ ڈیزائن کا حوالہ ہے۔ اگر آپ دلچسپی رکھتے ہیں تو ، آپ اس میں ترمیم یا افعال شامل کرسکتے ہیں۔
مکمل حکمت عملی:https://www.fmz.com/strategy/358383