وسائل لوڈ ہو رہے ہیں... لوڈنگ...

80 لائنوں کے کوڈ میں ہائی فریکوئینسی حکمت عملی کے ساتھ دماغ کے بغیر سیلز بوٹس کا استحصال کیسے کریں

مصنف:FMZ~Lydia, تخلیق: 2023-12-25 13:12:00, تازہ کاری: 2024-01-02 21:23:26

img

مواقع کا مشاہدہ

حال ہی میں، میں نے پایا کہ بائننس ایک کرنسی اسٹورج مارکیٹ ہے کہ بہت عجیب ہے غیر ارادی طور پر جب میں مارکیٹ دیکھ رہا تھا، ٹریڈنگ کے حجم بہت بڑا ہے، اور ٹریڈنگ کی تعدد بہت تیز ہے، مندرجہ ذیل چارٹ کی مخصوص ایک منٹ کے K لائن، ہم دیکھ سکتے ہیں کہ ٹریڈنگ کے حجم ہر منٹ کے مسلسل ہیں، اور منٹ کے K لائن ایک طویل نیچے سایہ لائن میں دیکھا جا سکتا ہے.

img

بائننس 1 سیکنڈ کی لائن کے ساتھ مشاہدہ کریں ، مجھے کہانی کا اختتام معلوم ہوا ، کسی کو ہر 5-7s میں 10،000-20،000 اسٹورج مارکیٹ کیا جاتا ہے ، قیمت سے قطع نظر ، اور براہ راست K لائن میں ایک چھوٹا سا سوراخ توڑ دیتا ہے ، جبکہ قیمت مختصر مدت میں ٹھیک ہوجاتی ہے۔ یہ آپریشن واضح طور پر ایک آئس برگ کمیشن پر روبوٹ کی وجہ سے ہوا تھا۔ یہ فروخت کا آپریشن بہت طویل عرصے تک جاری رہا ، جس کا تخمینہ 10 ملین ڈالر کی سطح پر لگایا گیا ، اور بہت سے معاملات میں اس کی وجہ سے 0.1٪ تک کی کمی واقع ہوئی ، جس کا مطلب یہ ہے کہ اس حکمت عملی کے انجام دینے والے نے صرف تجارت پر دسیوں ہزار ڈالر کی کمی کا سامنا کرنا پڑا۔ لیکن اس طرح کے مکینیکل آپریشن اور فعال تجارت کے ساتھ ، مارکیٹ بنانے کے لئے ایک واضح موقع موجود تھا اسکیلپنگ.

img

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

حکمت عملی کا خیال

چونکہ مارکیٹ ہر چند سیکنڈ میں مارکیٹ کی قیمت میں فروخت کرتی ہے ، لہذا ہمیں صرف خرید آرڈر بک میں 10k کی گہرائی تلاش کرنے کی ضرورت ہے اور اس کے سامنے آرڈر لٹکانا ہے۔ تاکہ جب برف کا پہاڑ فروخت ہوتا ہے تو ، اس کا امکان زیادہ ہوتا ہے کہ مارکیٹ بنانے والا روبوٹ صرف وصول کرسکتا ہے ، اور اس وقت لین دین بہت فعال ہے ، اس لمحے کی قیمت میں کمی نے کچھ خرید آرڈرز کو بھی متحرک کردیا۔ اسی وجہ سے ، پھانسی فروخت کے احکامات کو رجحان میں پھینک دیا جاسکتا ہے ، لہذا بار بار آپریشنز۔ لین دین کی تعدد بہت زیادہ ہے ، یہاں تک کہ اگر ہر بار پیداوار کافی بڑی نہیں ہوتی ہے تو ، کل واپسی بھی کافی ہے۔ یقینا ، ہر چیز کا محور کم فیس اکاؤنٹ رکھنا ہے ، اگر خرید و فروخت دونوں فیس 0.1٪ ہیں تو ، پھر فیس ادا کرنے کے لئے جگہ کافی نہیں ہے۔

حکمت عملی کی کارکردگی

حکمت عملی مندرجہ ذیل طور پر کام کر رہی ہے ، پہلے ، منافع میں سے کوئی بھی پرنٹ نہیں ہو رہا تھا ، لہذا میں نے آج سہ پہر اسے تبدیل کیا ، اور منافع کو پرنٹ کیا ، پاگل فروخت کرنے والے روبوٹ نے حجم کو ایک وقت میں تقریبا 5000 میں تبدیل کردیا ہے ، لہذا یہ arbitrage کے لئے بہترین وقت سے گزر چکا ہے۔ میں شاید پہلے ہی 100-200U فی گھنٹہ بنا رہا ہوں ، کلید خطرہ سے پاک اور کم لاگت ہے۔ دوسری طرف ، آئس برگ کمیشن میں دراصل بہت ساری مہارتیں ہیں ، اگر آپ حکمت عملی لکھنا جانتے ہیں تو ، آپ ایف ایم زیڈ پر آئس برگ کمیشن کی حکمت عملی لکھنے کے لئے دس منٹ گزار سکتے ہیں جو آرڈر کے سائز اور قیمت کا فیصلہ کرنے کے لئے خرید آرڈر کی گہرائی کا مشاہدہ کرتا ہے ، زیر التواء آرڈر کے سائز کو ایڈجسٹ کرنے اور مارکیٹ اور دیگر خصوصیات کی نگرانی کرنے کے لئے فعال خرید آرڈر کے سائز کا مشاہدہ کرتا ہے ، جس سے آپ آسانی سے ہزاروں ڈالر کی بچت کرسکتے ہیں۔

img

حکمت عملی کا ماخذ کوڈ

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

img

function CancelPendingOrders() {
    var orders = _C(exchange.GetOrders)
    for (var j = 0; j < orders.length; j++) {
        exchange.CancelOrder(orders[j].Id, orders[j])
    }
}

function onexit(){
    CancelPendingOrders()
}

function GetPrice(Type, Depth) {
    var sumAmount = 0
    var checkAmount = Type == "Buy" ? CheckBuyAmount : CheckSellAmount
    var deep = Type == "Buy" ? Depth.Bids : Depth.Asks
    for(var i = 0; i < Math.min(20, deep.length); i++) {
        if(Type == "Buy"  && deep[i].Price == lastBuyPrice && buyId){
            sumAmount += deep[i].Amount - amountBuy //Subtract your own pending orders here
        }else if(Type == "Sell"  && deep[i].Price == lastSellPrice && sellId){
            sumAmount += deep[i].Amount - amountSell
        }else{
            sumAmount += deep[i].Amount
        }
        if(sumAmount >= checkAmount){
            return deep[i].Price
        }
    }
    return deep[19].Price
}

function OnTick() {
    var depth = _C(exchange.GetDepth)
    var buyPrice = _N(Math.min(GetPrice("Buy", depth) + 0.0001, depth.Asks[0].Price-0.0001) , 4) //Guaranteed at the market
    var sellPrice = _N(Math.max(GetPrice("Sell", depth) - 0.0001, depth.Bids[0].Price+0.0001), 4)
    LogStatus('buy_price:'+buyPrice, '  sell price: '+sellPrice)
    if ((sellPrice - buyPrice) < DiffPrice) {
        buyPrice = 0
    }
    if(sellPrice != lastSellPrice && sellId){
        exchange.CancelOrder(sellId);
        sellId = 0
        lastSellPrice = 0
    }
    if(buyPrice != lastBuyPrice && buyId){
        exchange.CancelOrder(buyId);
        buyId = 0
        lastBuyPrice = 0
    }   
    var acc = _C(exchange.GetAccount)
    if(account.Stocks+account.FrozenStocks != acc.Stocks+acc.FrozenStocks){
        LogProfit((acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance - 2000)
        Log('free '+acc.Stocks, ' lock: '+ acc.FrozenStocks, ' total: ' , (acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance)
    }
    account = acc
    amountBuy = _N(Math.min(account.Balance / buyPrice - 0.1, Amount), 0)
    amountSell = _N(account.Stocks, 0)
    if (sellPrice > 0 && amountSell > 40 && sellId == 0) {
        sellId = exchange.Sell(_N(sellPrice,4), amountSell)
        lastSellPrice = sellPrice
    }
    if (buyPrice>0 && amountBuy > 40 && buyId == 0) {
        buyId = exchange.Buy(_N(buyPrice,4), amountBuy)
        lastBuyPrice = buyPrice
    }
    Sleep(Interval)
}
var account = {Stocks:0, FrozenStocks:0, Balance:0, FrozenBalance:0}
var buyId = 0
var sellId = 0
var lastBuyPrice = 0
var lastSellPrice = 0
var amountSell = 0
var amountBuy = 0
var log_account_time = 0
function main() {
    CancelPendingOrders()
    while (true) {
        OnTick()
    }
}

مزید