Mục đích của chiến lược:
Vào ngày 15 tháng 2, Binance đã thông báo về việc đưa ra thông báo về CLOAK, MOD, SALT, SUB, WINGS. Sau khi thông báo, đồng tiền liên quan ngay lập tức bắt đầu giảm, nói chung giảm 15% trong một giờ, với ngày càng nhiều người dùng biết tin tức, sự sụt giảm tiếp tục và không có sự phục hồi, và nó đã giảm một nửa cho đến nay. Nếu bạn có thể bán các đồng tiền nắm giữ lần đầu tiên sau khi thông báo, bạn có thể phục hồi rất nhiều tổn thất.
Chiến lược này chạy trên nền tảng giao dịch định lượng FMZ (trước đây là BotVS).
Ý tưởng:
Lướt qua các trang thông báo bảo mật của Binance và quan sát thông tin của hai thời điểm thông báo gần nhất.
Chiến lược sẽ sử dụng
Mã thu thập dữ liệu:
var html = HttpQuery('https://support.binance.com/hc/zh-cn/sections/115000202591-%E6%9C%80%E6%96%B0%E5%85%AC%E5%91%8A')//Announcement page
html = html.slice(html.indexOf('article-list'),html.indexOf('pagination')) // Article list section
if(html.indexOf('will delist')>0){
if(html.slice(html.indexOf('will delist')+3,html.indexOf('</a>')) != title){ //crawl only the first delist information
var title = html.slice(html.indexOf('delist')+3,html.indexOf('</a>'))
var downList = title.split('、')
Log('New announcement is detected, the currency will be delist:', title, '@')//WeChat push release announcement
}
}
Thu hồi mã lệnh:
function cancellOrder(){
var openOrders = exchange.IO('api', 'GET', '/api/v3/openOrders')//Get all unexecuted orders
for (var i=0; i<openOrders.length; i++){
var order = openOrders[i];
for (var j=0;j<downList.length;j++){
if(order.symbol.startsWith(downList[j])){
var currency = downList[j] + '_' + order.symbol.slice(downList[j].length);
Log('There is a delist currency order exist, revoked', currency)
exchange.IO("currency", currency)//To revoke a order, you need the trading pair information, so you must first switch to the trading pair.
exchange.CancelOrder(order.orderId)
}
}
}
}
Mã tài khoản:
function checkAccount(){
var done = false
while(!done){
account = _C(exchange.GetAccount)
done = true
for (var i=0; i<account.Info.balances.length; i++){
if(downList.indexOf(account.Info.balances[i].asset)>-1 && parseFloat(account.Info.balances[i].free)>pairInfo[account.Info.balances[i].asset+'BTC'].minQty){
Log('delist currency will be emptied', account.Info.balances[i].asset)
sellAll(account.Info.balances[i].asset, parseFloat(account.Info.balances[i].free))
done = false
}
}
Sleep(1000)
}
Log('Sale completed')
}
Mã đặt hàng:
var exchangeInfo = JSON.parse(HttpQuery('https://api.binance.com/api/v1/exchangeInfo'))
var pairInfo = {} //Trading pair information, storing transaction progress, minimum trading volume and other related information, placing order will needed
if(exchangeInfo){
for (var i=0; i<exchangeInfo.symbols.length; i++){
var info = exchangeInfo.symbols[i];
pairInfo[info.symbol] = {minQty:parseFloat(info.filters[2].minQty),tickerSize:parseFloat(info.filters[0].tickSize),
stepSize:parseFloat(info.filters[2].stepSize), minNotional:parseFloat(info.filters[3].minNotional)}
}
}else{
Log('Failed to get transaction information')
}
function sellAll(coin, free){
var symbol = coin + 'BTC'
exchange.IO("currency", coin+'_BTC') //switching trading pair
var ticker = _C(exchange.GetTicker)
var sellPrice = _N(ticker.Buy*0.7, parseInt((Math.log10(1.1/pairInfo[symbol].tickerSize))))
var sellAmount = _N(free, parseInt((Math.log10(1.1/pairInfo[symbol].stepSize))))
if (sellAmount > pairInfo[symbol].minQty && sellPrice*sellAmount > pairInfo[symbol].minNotional){
exchange.Sell(sellPrice, sellAmount, symbol)
}
}
Tóm lại:
Mã trên chỉ để chứng minh, mã đầy đủ có thể được tìm thấy tạiFMZ.COM. Trang thông báo có thể được thu thập dữ liệu một lần trong một phút, mà sẽ có đủ thời gian để bán trước khi người dùng bình thường.
Nhưng có thể có một số vấn đề, chẳng hạn như việc thu thập thông tin bị chặn, thay đổi định dạng thông báo, v.v. Nếu tiền tệ không có trên Binance, bạn cũng có thể tham khảo chiến lược này đến các sàn giao dịch khác.