সম্প্রতি, আমি Binance একটি মুদ্রা স্টোরেজ বাজার খুব অদ্ভুত অজান্তেই যখন আমি বাজার পর্যবেক্ষণ ছিল পাওয়া, ট্রেডিং ভলিউম খুব বড়, এবং ট্রেডিং ফ্রিকোয়েন্সি খুব দ্রুত, নিম্নলিখিত চার্ট নির্দিষ্ট এক মিনিটের কে লাইন, আমরা দেখতে পারেন যে ট্রেডিং ভলিউম প্রতিটি মিনিট সামঞ্জস্যপূর্ণ, এবং মিনিট কে লাইন একটি দীর্ঘ নীচের ছায়া লাইন দেখা যাবে।
Binance 1 সেকেন্ডের K-line এর সাথে পর্যবেক্ষণ করুন, আমি গল্পের শেষটি খুঁজে পেয়েছি, কেউ প্রতি 5-7s এ 10,000-20,000 STORJs বিক্রি করে, খরচ নির্বিশেষে, এবং সরাসরি K-line এ একটি ছোট গর্ত ভেঙে দেয়, যখন দাম স্বল্পমেয়াদে পুনরুদ্ধার হয়। এই অপারেশনটি স্পষ্টতই একটি আইসবার্গ কমিশনের উপর একটি রোবট দ্বারা সৃষ্ট হয়েছিল। এই বিক্রয় অপারেশনটি খুব দীর্ঘ সময় ধরে চলেছিল, মোট আনুমানিক $ 10 মিলিয়ন স্তর, এবং অনেক ক্ষেত্রে 0.1% পর্যন্ত স্লিপিংয়ের কারণ হয়েছিল, যার অর্থ এই কৌশলটির নির্বাহক কেবলমাত্র ট্রেডে স্লিপিংয়ে কয়েক হাজার ডলার হারিয়েছেন। তবে এই জাতীয় যান্ত্রিক অপারেশন এবং সক্রিয় ট্রেডিংয়ের সাথে, বাজারে স্কেলপিংয়ের জন্য একটি স্পষ্ট সুযোগ ছিল।
আসল স্পট এইচএফ কৌশল থেকে একটি সহজ পরিবর্তন, এবং কয়েক মিনিটের মধ্যে আমি এই বট পেয়েছি যা আইসবার্গ কমিশনের এই মস্তিষ্কহীন বিক্রির শোষণে বিশেষজ্ঞ।
যেহেতু বাজার বাজার মূল্যে প্রতি কয়েক সেকেন্ডে বিক্রি করে, তাই আমাদের কেবল ক্রয় অর্ডার বইয়ে 10k গভীরতা খুঁজে বের করতে হবে এবং এর সামনে অর্ডারটি ঝুলতে হবে। যাতে যখন আইসবার্গ বিক্রি হয়, তখন বাজার তৈরির রোবটটি কেবল গ্রহণ করতে পারে এমন উচ্চ সম্ভাবনা থাকে এবং এই সময়ে লেনদেনটি খুব সক্রিয় থাকে, ক্ষণস্থায়ী দামের হ্রাসও কিছু ক্রয় অর্ডারকে ট্রিগার করে। একইভাবে, ঝুলন্ত বিক্রয় অর্ডারগুলি প্রবণতায় ফেলে দেওয়া যেতে পারে, তাই পুনরাবৃত্তি অপারেশন। লেনদেনের ফ্রিকোয়েন্সি খুব বেশি, এমনকি যদি প্রতিবার ফলনটি বেশ বড় না হয়, তবে মোট রিটার্নও যথেষ্ট। অবশ্যই, সমস্ত কিছুর ভিত্তি হ'ল কম ফি অ্যাকাউন্ট থাকা, যদি ক্রয় এবং বিক্রয় উভয় ফি 0.1% হয় তবে ফি প্রদানের জন্য স্থান যথেষ্ট নয়।
কৌশলটি নিম্নরূপ সম্পাদন করছে, প্রথমে, কোনও লাভ মুদ্রণ করা হয়নি, তাই আমি আজ বিকেলে এটি পরিবর্তন করেছি, এবং মুদ্রণ মুদ্রণ করেছি, পাগল বিক্রয় রোবটগুলি একসাথে প্রায় 5000 এ ভলিউম পরিবর্তন করেছে, তাই এটি arbitrage এর জন্য সর্বোত্তম সময় অতিক্রম করেছে। আমি সম্ভবত শুরুতে প্রতি ঘন্টায় 100-200U উপার্জন করছি, মূলত ঝুঁকি মুক্ত এবং কম খরচে। ফ্লিপ সাইডে, আইসবার্গ কমিশন আসলে অনেক দক্ষতা আছে, যদি আপনি একটি কৌশল লিখতে জানেন, আপনি এফএমজেডে আইসবার্গ কমিশন কৌশল লিখতে দশ মিনিট ব্যয় করতে পারেন যা অর্ডারের আকার এবং মূল্য নির্ধারণের জন্য ক্রয়ের আদেশের গভীরতা পর্যবেক্ষণ করে, অপেক্ষমান অর্ডারের আকার সামঞ্জস্য করতে সক্রিয় ক্রয়ের আদেশের আকার পর্যবেক্ষণ করে এবং বাজারের আকার এবং অন্যান্য বৈশিষ্ট্যগুলি গ্রহণ করে, সহজে কয়েক হাজার ডলার পর্যবেক্ষণ করে।
কৌশল কোড খুব সহজ, শুধুমাত্র 80 লাইন, যা নতুনদের জন্য উপযুক্ত, এখানে কিছু পরামিতি যেমন অর্ডার যথার্থতা এবং তাই প্রোগ্রাম লিখিত স্থায়ী হয়, আপনি নিম্নরূপ পরামিতি পরিবর্তন করতে পারেন. এটি সংরক্ষণ করার পরামর্শ দেওয়া হয়, কোন বিনিময় ট্রেডিং জোড়া বা ব্যবসায়ীদের ক্ষেত্রে নিয়ন্ত্রণের বাইরে, আপনি যে কোন সময় তাদের কিছু সুদ চার্জ করার জন্য বিনামূল্যে পড়ে যেতে পারে.
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()
}
}