Recorriendo el anuncio de Binance de borrar monedas

El autor:La bondad, Creado: 2019-02-20 11:28:46, Actualizado:

Objetivo de la estrategia:

El 15 de febrero, Binance anunció el anuncio del despegue de las monedas CLOAK, MOD, SALT, SUB, WINGS. Después del anuncio, la moneda involucrada comenzó a caer inmediatamente, generalmente un 15% en una hora, con más y más usuarios conociendo la noticia, el declive continuó y no hubo rebote, y ha caído a la mitad hasta ahora.

Esta estrategia se ejecuta en la plataforma de negociación cuantitativa FMZ (anteriormente BotVS).

- ¿ Qué?

Descargar las páginas de anuncios de seguridad de Binance y observar la información de los dos tiempos de anuncio más cercanos. El formato específico es Binance eliminará CLOAK, MOD, SALT, SUB, WINGS, Binance eliminará BCN, CHAT, ICN, TRIG.

La estrategia utilizará el deslistará como palabra clave para rastrear el nuevo anuncio de lanzamiento, por supuesto, no descarta el formato de notificación de cambio de Binance, puede consultar esta estrategia para mejorar. Dado que la tarea del rastreador es demasiado simple, se escribirá en JavaScript simple. Después de rastrear la moneda de deslistado, se comprobará la información de la cuenta. Si hay una moneda de deslistado, se venderá a un precio más bajo. Si hay un pedido incompleto, se revocará primero. Hasta que la venta de las monedas restantes se venda por completo.

Código de rastreo:

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
    }
}

Revocar el código de orden:

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)
            }
        }
    }
}

Código de la cuenta de cheques:

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')
}

Código de la orden:

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)
    }
}

En resumen:

El código anterior es sólo de demostración, el código completo se puede encontrar enFMZ.COMLa página de anuncios se puede rastrear una vez por minuto, que tendrá tiempo suficiente para vender antes que el usuario común.

Sin embargo, puede haber algunos problemas, como el rastreo bloqueado, cambios en el formato de anuncio, etc. Si la moneda no está en Binance, también puede referirse a esta estrategia a otros intercambios. Después de todo, la moneda de la lista afectará a todas las plataformas.


Más.