Type/to search
3
Follow
1505
Followers
کوڈ کی 80 لائنوں میں اعلی تعدد کی حکمت عملی کے ساتھ بے عقل فروخت کرنے والے روبوٹ کا استحصال کیسے کریں
HFT
Created 2023-12-24 21:37:45  Updated 2023-12-26 15:40:23
 7
 5969

img

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

حال ہی میں، جب میں مارکیٹ کو دیکھ رہا تھا، مجھے اتفاق سے معلوم ہوا کہ Binance پر ایک سکہ STORJ بہت عجیب تھا اور ٹریڈنگ فریکوئنسی بہت تیز تھی ایک منٹ کی مخصوص مندرجہ ذیل ہے آپ دیکھ سکتے ہیں کہ ٹریڈنگ والیوم فی منٹ ہے یہ کافی مستقل ہے، اور منٹ لائن پر ایک لمبا نچلا سایہ دیکھا جا سکتا ہے۔
img
Binance کی 1-سیکنڈ K-line کا مشاہدہ کرنے سے، ہمیں ایک اشارہ ملا کہ کوئی شخص ہر 5-7 سیکنڈ میں 10,000 سے 20,000 STORJ فروخت کرے گا، اور K-لائن میں براہ راست ایک چھوٹا سا سوراخ کر دے گا۔ یہ آپریشن واضح طور پر ایک روبوٹ کی وجہ سے ہوا تھا جسے آئس برگ نے بنایا تھا۔ یہ فروخت کا عمل بہت طویل عرصے تک جاری رہا، اور کل رقم کا تخمینہ دسیوں ملین ڈالر لگایا گیا تھا، بہت سے معاملات میں پھسلن 1/1000 تک پہنچ گئی تھی، جس کا مطلب ہے کہ اس حکمت عملی کو انجام دینے والے کو دسیوں ہزار ڈالر کا نقصان ہوا۔ صرف ڈالر کے لین دین کی وجہ سے۔ تاہم، اس طرح کے مکینیکل آپریشنز اور فعال لین دین مارکیٹ بنانے اور اسکیلپنگ کے لیے واضح مواقع پیدا کرتے ہیں۔
img

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

اسٹریٹجک سوچ

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

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

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

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 //这里要减去自己的挂单 }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) //保证在盘口 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 function main() { CancelPendingOrders() while (true) { OnTick() } }
Comment
All comments (7)

    复刻出来了,测试中,感觉还是能赚的都

    10 months ago

    期货能用这个策略吗

    a year ago

    草神,跑的这个策略手续费是多少

    2 years ago

    这个是0手续费

    2 years ago

    小草老师请教一下,这个策略生效的情况下,是不是每个轮训开始,经常能看到撤销之前的两个订单失败的消息(也就是说明买卖单都生效了),才说明策略是有效的

    2 years ago

    撤销失败是成交了,赚钱了才能说明有效

    2 years ago

    哦哦谢谢,另外就是还想向您请教下参数的问题。像这种高频策略如何优化参数。例如我看您分享的2014年的策略,默认的轮训间隔达到了3500ms,如果是高频的话,轮训间隔是不是应该短一点比较好。但是太短的话成交也挺难的,如果太长的话,收市场波动的影响就很大了,如果持仓后没有能够在利润点卖出去,就可能亏损。这块我不是太明白。。

    2 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)