avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

ڈیجیٹل کرنسی اسپاٹ نئی سکے پکڑنے کی حکمت عملی (تعلیم)

میں تخلیق کیا: 2022-04-20 15:59:01, تازہ کاری: 2023-09-20 10:29:48
comments   0
hits   3060

ڈیجیٹل کرنسی اسپاٹ نئی سکے پکڑنے کی حکمت عملی (تعلیم)

ڈیجیٹل کرنسی اسپاٹ نئی سکے پکڑنے کی حکمت عملی (تعلیم)

گزشتہ دو دنوں میں، ٹیلی گرام گروپ میں ایک صارف نے مجھے ایک نجی پیغام بھیجا جس میں آئی پی او حکمت عملی کے لیے ڈیزائن کی مثال کی امید تھی۔ کبھی کبھی جب ایکسچینج نئے سکوں کی فہرست بناتا ہے، تو آپ ان میں سے کچھ حاصل کرنا چاہتے ہیں، یہ مضمون نئے سکوں کی فہرستوں کے لیے ایک سادہ حکمت عملی تیار کرتا ہے۔

حکمت عملی کے تقاضے

مثال کے طور پر، فی الحال ایک مخصوص ایکسچینج پر، ایک مخصوص تجارتی جوڑا: 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