Bit-Maker 3.0 arbitrage L'apprentissage intelligent USDT en ligne (Binance Platforme unique - arbitrage USDT Standard)

Auteur:AutobitMaker-ABM, Date: le 17 décembre 2019 à 23h46h42
Les étiquettes:

Le réseau d'auto-apprentissage:

Les grilles d'apprentissage automatique sont basées sur l'idée de stratégie de grille traditionnelle, mais après une longue période de données de réévaluation réelles, des dizaines de paramètres de configuration ont été optimisés pour la logique d'ouverture de position, le temps de mise en position, la position de suspension, le rapport de position, l'intervalle de grille. Un modèle de mise en position dynamique intelligent et la position de suspension ont été réalisés, ce qui permet d'éviter les risques élevés que les grilles traditionnelles doivent prendre en cas de situation unilatérale, en utilisant des rendements de position extrêmement bas, pour obtenir un bon rapport de retrait de bénéfices.

Les paramètres de configuration de la stratégie sont extrêmement riches, les équipes allouent des spécialistes pour personnaliser une combinaison de paramètres unique pour votre compte en fonction des besoins de risque et de rendement de vos clients, et il y a une surveillance de marché artificielle + automatisée 24 heures sur 24.

Nous avons développé des ensembles de transactions d'indices exclusifs, chaque ensemble d'échanges d'indices contenant plusieurs paires de transactions uniques de qualité, chaque paire ayant un rapport de poids unique. Les robots fonctionnent sur les ensembles d'indices en apprenant une stratégie de grille pour éviter les risques unilatéraux d'une seule transaction. En plus de l'indice statique intégré, nous avons défini un indice dynamique de plusieurs modèles de devises pour le jeu d'indices, sélectionnant les principales devises de chaque bloc pour constituer un niveau d'indice, réduisant ainsi davantage le risque.

Un seul compte peut être configuré pour exécuter plusieurs paires de transactions monétaires et indices simultanément, ce qui vous permet de répartir les risques et de profiter de divers marchés complexes.

Pour ce qui est de l'optimisation + contrôle du vent: Le serveur de retouche historique fonctionne toute l'année, retouche automatiquement toutes les données les plus récentes et calcule les paramètres optimaux en temps réel. Notre stratégie est de créer un cluster de plus de 50 serveurs auxiliaires pour vérifier les conditions de suspension des comptes à une vitesse moyenne de 2 fois par seconde, afin de se retirer rapidement en cas de risque.

Ali Cloud, Amazon Cloud, Microsoft Cloud architecture utilisant des nuages hybrides hétérogènes, séparant les nœuds administrés et exécutés, formant des clusters entre plusieurs nœuds pour assurer la redondance, assurer la sécurité et la sécurité de l'exploitation et la sécurité financière de l'entreprise

À propos de l'essai: Nous offrons un essai de 2 semaines ou plus en fonction de votre budget. Une fois que le bot a pris possession de votre compte, n'effectuez aucune action vous-même et tous les bots se retireront immédiatement s'ils détectent d'autres positions manuelles.

Pour les commissions: Cela dépend du montant de vos fonds. Nous pourrons discuter plus en détail après la phase d'essai. Si vous pouvez créer un compte avec notre lien de recommandation, nous facturerons une commission très faible.

Vous pouvez nous contacter ici: Il est également possible de télécharger des vidéos sur les réseaux sociaux, les réseaux sociaux et les réseaux sociaux. Vous pouvez nous contacter ici.liuhongyu.louie@autobitmaker.comJe suis désolée.autobitmaker.com

Le programme WeChat a été lancé en tant qu'application de test:微信小程序码


var chart = {
    __isStock: false,
    extension: {
        layout: 'single',
        col: 8,
        height: '300px'
    },
    tooltip: {
        xDateFormat: '%Y-%m-%d %H:%M:%S, %A'
    },
    title: {
        text: 'Account_Balance_Detail'
    },
    xAxis: {
        type: 'datetime'
    },
    yAxis: {
        title: {
            text: 'USDT'
        },
        opposite: false
    },
    series: []
};

function initChart() {
    chart.series.push({
        name: "Account_" + (Number(0)) + "_Detail",
        id: "Account_" + (Number(0)) + "_Detail",
        data: []
    });
}

function getChartPosition(avaliableMargin) {
    return {
        __isStock: false,
        extension: {
            layout: 'single',
            col: 4,
            height: '300px'
        },
        title: {
            text: '保证金占比(%)'
        },
        series: [{
            type: 'pie',
            name: 'one',
            data: [{
                name: '可用保证金(%)',
                y: avaliableMargin,
                color: '#dff0d8',
                sliced: true,
                selected: true
            }, {
                name: '保证金占用(%)',
                y: 100 - avaliableMargin,
                color: 'rgb(217, 237, 247)',
                sliced: true,
                selected: true
            }]
        }]
    };
}

function updateAccountDetailChart(ObjChart) {
    var nowTime = new Date().getTime();
    var account = exchanges[0].GetAccount();
    try {
        if (account !== null && account.Info !== null && account.Info.totalMarginBalance > 0) {
            ObjChart.add([0, [nowTime, Number(account.Info.totalMarginBalance)]]);
        }
    } catch (err) {
        Log('ERROR ' + account + ',' + err)
    }
}

function getBalance() {
    var currentBalance = 0;
    var account = exchanges[0].GetAccount();
    try {
        if (account !== null && account.Info !== null && account.Info.totalWalletBalance > 0) {
            currentBalance += Number(account.Info.totalWalletBalance);
        }
    } catch (err) {
        Log('ERROR ' + account + ',' + err)
    }
    Sleep(666);
    return Number(currentBalance).toFixed(6);
}

function getMarginBalance() {
    var currentBalance = 0;
    var account = exchanges[0].GetAccount();
    try {
        if (account !== null && account.Info !== null && account.Info.totalMarginBalance > 0) {
            currentBalance += Number(account.Info.totalMarginBalance);
        }
    } catch (err) {
        Log('ERROR ' + account + ',' + err)
    }
    Sleep(666);
    return Number(currentBalance).toFixed(6);
}

function printProfitInfo(currentBalance) {
    var profit = Number((currentBalance) - baseOriginalBalance).toFixed(5);
    var profitRate = Number((((currentBalance) - baseOriginalBalance) / baseOriginalBalance) * 100).toFixed(4);
    LogProfit(Number(profitRate), '&');
    Log('The current balance is ' + currentBalance + ', the profit is ' + profit + ', the profit rate is ' + profitRate + '%');
}

function printPositionInfo(exchangeInnerArray, totalProfitUSDT, totalProfitRate) {
    var totalProfit = 0.0
    var table = {
        type: 'table',
        title: 'POSITIONS',
        cols: ['Symbol', 'Type', 'AvgPrice', 'Position', 'Profit'],
        rows: []
    }
    if (showInfo) {
        table.rows.push([{
            body: '* 2020-09-07 之前一直人民币100万实盘运行,现策略更新,自动将合约闲置资金转入币安宝,即提高资金安全性,也可以双边获利,当合约所需保证金上涨或下降时,将自动调整两边余额。因当前FMZ无法监控币安宝余额,所以剥离10W人民币继续运行原策略以做展示。',
            colspan: 5
        }]);
    }
    table.rows.push([{
        body: '本策略是 USDT 本位,基于均值回归的币安合约套利策略,并以低风险辅助网格并行(BitMEX支持BTC本位)',
        colspan: 5
    }]);
    table.rows.push([{
        body: '套利主要币种是 BTC/USDT 和 ETH/USDT,网格覆盖币安永续合约全部币种交易对',
        colspan: 5
    }]);
    for (var index in exchangeInnerArray) {
        var position = exchangeInnerArray[index].GetPosition()
        for (var indexInner in position) {
            var profit = Number(position[indexInner].Info.unRealizedProfit);
            totalProfit = totalProfit + profit
            table.rows.push([position[indexInner].Info.symbol, (position[indexInner].Type == 1 ? 'SHORT #da1b1bab' : 'LONG #1eda1bab'), position[indexInner].Price, position[indexInner].Amount, profit.toFixed(5)]);
        }
        Sleep(168);
    }
    table.rows.push([{
        body: 'TOTAL PROFIT OF CURRENT POSITION',
        colspan: 4
    }, totalProfit.toFixed(6) + ' USDT']);
    table.rows.push([{
        body: 'TOTAL PROFIT',
        colspan: 4
    }, totalProfitUSDT + ' USDT']);
    table.rows.push([{
        body: 'TOTAL PROFIT RATE',
        colspan: 4
    }, totalProfitRate + ' %']);
    LogStatus('`' + JSON.stringify(table) + '`');
}

function main() {
    initChart();
    var ObjChart = Chart([chart, getChartPosition(100)]);
    while (true) {
        try {
            var currentBalance = getBalance();
            printProfitInfo(currentBalance);
            updateAccountDetailChart(ObjChart);
            for (var i = 0; i < 120; i++) {
                try {
                    var avaliableMargin = ((getMarginBalance()) / (getBalance())) * 100;
                    ObjChart.update([chart, getChartPosition(avaliableMargin)]);
                    var profit = Number((currentBalance) - baseOriginalBalance).toFixed(5);
                    var profitRate = Number((((currentBalance) - baseOriginalBalance) / baseOriginalBalance) * 100).toFixed(4);
                    printPositionInfo(exchanges, profit, profitRate);
                    Sleep(1000 * 120);
                } catch (errInner) {
                    throw errInner;
                }
            }
        } catch (err) {
            throw err;
        }
    }
}

Plus de

le clown 。。