Klicken Sie auf die Binance-Nachrichtenseite und sehen Sie die Informationen zu den letzten zwei Verkäufen, die in den Formaten CLOAK, MOD, SALT, SUB, WINGS und BCN, CHAT, ICN und TRIG enthalten sind.
Der Reptilianer wird die neue Ausstiegsbekanntmachung durch das Klick auf die Ausstiegsbekanntmachung als Schlüsselwort durchsuchen, wobei das Format der Ausstiegsbekanntmachung von Binance-Änderungen nicht ausgeschlossen wird. Diese Strategie kann weiterentwickelt werden. Da die Aufgabe des Reptilianers zu einfach ist, wird in einfacher JavaScript geschrieben. Die Analyse und Referenz: https://zhuanlan.zhihu.com/p/57012933
var exchangeInfo = JSON.parse(HttpQuery('https://api.binance.com/api/v1/exchangeInfo'))
var pairInfo = {}
var downList = []
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('fail to get exchangeInfo')
}
function sellAll(coin, free){
var symbol = coin + 'BTC'
exchange.IO("currency", coin+'_BTC')
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){
var id = exchange.Sell(sellPrice, sellAmount, symbol)
exchange.CancelOrder(order.orderId)
}
}
function cancellOrder(){
var openOrders = exchange.IO('api', 'GET', '/api/v3/openOrders')
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('delist coin exist, cancel all orders first', currency)
exchange.IO("currency", currency)
exchange.CancelOrder(order.orderId)
}
}
}
}
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('this coin will be dumped', account.Info.balances[i].asset)
sellAll(account.Info.balances[i].asset, parseFloat(account.Info.balances[i].free))
done = false
}
}
Sleep(1000)
}
Log('sell done')
}
function main() {
var title = ''
while(true){
var html = HttpQuery('https://support.binance.com/hc/en-us/sections/115000202591-Latest-News')
html = html.slice(html.indexOf('Delist '),html.length)
if(html){
if(html.slice(7,html.indexOf('</a>')) != title){
title = html.slice(7,html.indexOf('</a>'))
downList = html.slice(7,html.indexOf('</a>')).replace(' and ', ',').split(',')
Log('new announcement,will delist:', downList)
cancellOrder()
checkAccount()
}else{
Log('new announcement was not found')
}
}else{
Log('web spider wrong')
}
Sleep(60*1000)
}
}