Je suis en train de parcourir l'annonce de Binance de la suppression des monnaies

Auteur:La bonté, Créé: 2019-02-20 11:28:46, mis à jour:

Objectif de la stratégie:

Le 15 février, Binance a annoncé le décollage de l'annonce de CLOAK, MOD, SALT, SUB, WINGS. Après l'annonce, la monnaie impliquée a immédiatement commencé à chuter, en général en baisse de 15% en une heure, avec de plus en plus d'utilisateurs qui ont appris la nouvelle, le déclin s'est poursuivi et il n'y a pas eu de rebond, et il a chuté de moitié jusqu'à présent.

Cette stratégie fonctionne sur la plateforme de négociation quantitative FMZ (anciennement BotVS).

Une idée:

Faites défiler les pages d'annonces de sécurité de Binance et observez les informations des deux dates d'annonce les plus proches. Le format spécifique est Binance supprimera la liste CLOAK, MOD, SALT, SUB, WINGS, Binance supprimera BCN, CHAT, ICN, TRIG.

La stratégie utilisera le will delist comme mot clé pour explorer l'annonce de la nouvelle version, bien sûr, cela n'exclut pas le format de notification de changement de Binance, vous pouvez vous référer à cette stratégie pour l'améliorer. Comme la tâche du robot d'exploration est trop simple, elle sera écrite en JavaScript simple. Après avoir exploré la devise de la liste, les informations du compte seront vérifiées. S'il y a une devise de la liste, elle sera vendue à un prix inférieur. S'il y a une commande inachevée, elle sera révoquée en premier. Jusqu'à ce que la vente des pièces restantes soit complètement vendue.

Code d'exploration:

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

Code d' ordre de révocation:

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 du compte:

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

Code de commande:

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

Pour résumer:

Le code ci-dessus est uniquement à titre de démonstration, le code complet est disponible à l'adresse suivante:FMZ.COM. La page d'annonce peut être explorée une fois par minute, ce qui aura suffisamment de temps pour vendre avant l'utilisateur ordinaire.

Mais il peut y avoir des problèmes, tels que le crawl bloqué, les changements de format d'annonce, etc. Si la monnaie n'est pas sur Binance, vous pouvez également vous référer à cette stratégie pour d'autres échanges. Après tout, la monnaie de la liste affectera toutes les plateformes.


Plus de