پچھلے دو دنوں میں ، ٹیلیگرام گروپ کے صارفین نے مجھے ایک نئی حکمت عملی بنانے کے ڈیزائن کی مثال کے طور پر حوالہ دیا ہے۔ کبھی کبھی تبادلے میں ایک نئی کرنسی لینا چاہتے ہیں ، اس مضمون میں ایک سادہ نئی حکمت عملی بنانے کا آلہ تیار کیا گیا ہے۔
مثال کے طور پر ، فی الحال ایک تبادلے ، ایک تجارتی جوڑی: XXX_USDT ، تبادلے پر ابھی تک درج نہیں ہے۔ لیکن جلد ہی آن لائن ہوگا۔ اس تبادلے کے XXX_USDT مارکیٹ کو دیکھنے کے لئے پروگرام کی ضرورت ہے۔ یہ تجارت ایک بار جب حد سے زیادہ ہوجائے تو تجارت کی جاسکتی ہے۔ اور 10 محدود قیمت خریدنے کے احکامات جاری کریں ، تعداد کی وضاحت کریں ، سکے لینے کے لئے آرڈر دیں۔ خریدنے کے بعد ٹاسک مکمل کریں۔ خریدنے کے لئے ہمیشہ انتظار کریں ، جب تک کہ آرڈر کی تجارت نہ ہو ، سکے خریدیں۔
یہ ضروریات بہت سادہ ہیں، لیکن ہمارے چھوٹے ساتھیوں کے لئے جو پروگرامنگ کی بنیاد نہیں رکھتے ہیں، ان کے لئے یہ ممکن نہیں ہے، اور ہم اس کی ضرورت کو پورا کرنے کے لئے آگے بڑھ رہے ہیں.
حکمت عملی کے پیرامیٹرز کی تعریف:
یہاں ہم اس طرح کے کئی پیرامیٹرز کی وضاحت کرتے ہیں جو ذیل میں دیئے گئے عمل کو کنٹرول کرنے کے لئے استعمال ہوتے ہیں۔
کوڈ کا نفاذ:
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("成功挂单", orderId)
}
}
return ordersIDs
}
function main() {
if (symbol == "null" || pendingPrice == -1 || pendingAmount == -1 || pendingPrice == -1 || deltaPrice == -1 || deltaAmount == -1) {
throw "参数设置错误"
}
exchange.SetCurrency(symbol)
// 屏蔽错误信息
SetErrorFilter("GetDepth")
while (true) {
var msg = ""
var depth = exchange.GetDepth()
if (!depth || (depth.Bids.length == 0 && depth.Asks.length == 0)) {
// 没有深度
msg = "没有深度数据,等待!"
Sleep(500)
} else {
// 获取到深度
Log("并发下单!")
var ordersIDs = pendingOrders(ordersNum, pendingPrice, pendingAmount, deltaPrice, deltaAmount)
while (true) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
Log("当前挂单个数0,停止运行")
return
}
var tbl = {
type: "table",
title: "当前挂单",
cols: ["id", "价格", "数量"],
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,检测订单薄接口,一旦能获取到订单薄数据,策略就使用exchange.Go函数并发下单。下单之后就循环检测当前挂单的状态。策略没有经过实际测试,这里只是给出一个代码设计参考,有兴趣的可以修改、添加功能使用。
مکمل حکمت عملی:https://www.fmz.com/strategy/358383