Parcourez les annonces de Binance pour vendre automatiquement les pièces qui sont sur le point d'être retirées de la liste

Tool Trade-aided
Date de création: 2019-02-15 18:33:28 Dernière modification: 2019-07-03 16:16:39
Copier: 41 Nombre de clics: 3457
3
Suivre
1444
Abonnés

Vous pouvez accéder à la page d’annonces de Binance et voir les informations sur les deux derniers dépôts, le format spécifique étant: Binance dépose CLOAK, MOD, SALT, SUB, WINGS, Binance dépose BCN, CHAT, ICN, TRIG.

Le robot va utiliser les mots-clés “Crawl” et “Crawl” comme mots-clés pour faire une nouvelle annonce d’achat, sans toutefois exclure la possibilité de modifier le format de l’annonce d’achat de la monnaie en utilisant cette stratégie. Comme la tâche du robot est trop simple, il va utiliser un simple JavaScript. Après avoir atteint la monnaie d’achat, il va vérifier les informations de compte et, s’il y a des pièces d’achat, il les vendra toutes au prix le plus bas, et, s’il y a des commandes inachevées, il les retirera jusqu’à ce qu’elles soient entièrement vendues. Le site officiel de l’organisation, le site officiel de l’organisation et le site officiel de l’association sont les suivants: https://zhuanlan.zhihu.com/p/57012933

Code source de la stratégie
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)
    }
}