Ziel der Strategie:
Am 15. Februar kündigte Binance die Ankündigung der CLOAK, MOD, SALT, SUB, WINGS an. Nach der Ankündigung begann die beteiligte Währung sofort zu fallen, im Allgemeinen um 15% in einer Stunde, wobei immer mehr Benutzer die Nachricht erfahren, der Rückgang setzte sich fort und es gab keinen Aufschwung, und es ist bisher um die Hälfte gefallen.
Diese Strategie läuft auf der quantitativen Handelsplattform FMZ (ehemals BotVS).
Eine Idee:
Das spezifische Format ist
Die Strategie wird das
Durchsuchungscode:
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
}
}
Widerrufscode:
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)
}
}
}
}
Code des Scheckkontos:
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')
}
Bestellcode:
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)
}
}
Zusammenfassend:
Der oben genannte Code dient nur der Demonstration, der vollständige Code ist unterFMZ.COM. Die Ankündigungsseite kann einmal in einer Minute durchsucht werden, was genug Zeit hat, um vor dem gewöhnlichen Benutzer zu verkaufen.
Wenn die Währung nicht auf der Binance ist, können Sie diese Strategie auch an andere Börsen verweisen. Schließlich wird die De-Listing-Währung alle Plattformen betreffen.