Bit-Maker surveille le solde total des contrats sur le marché et USDT

Auteur:AutobitMaker-ABM, Date: 2021-02-20 08:12:06
Les étiquettes:

Je vais essayer.La stratégie de l'option sans risque a été officiellement lancée. Le principe stratégique est de couvrir les produits actuels et les contrats, ce processus peut également être effectué manuellement. Cependant, par rapport à l'opération manuelle, le BOT capture l'espace de profit de toutes les paires de transactions du marché, effectuant des centaines de transactions par jour; il libère davantage vos mains et réduit les risques du marché.

Nous sommesJe vais essayer.Pour faire court,Le capital ABMNous vous invitons à identifier soigneusement le nom de l'équipe, les micro-signaux, pour distinguer le vrai et le faux. Pour l'instant, nous ne communiquons avec nos clients sur WeChat et par e-mail, et nous n'utilisons pas QQ ou d'autres moyens.

L'équipe ABMTrois types de stratégies sont actuellement disponibles:

  • Les contrats
  • Traitements au comptant
  • Les négociations à dividendes

Le code actuel est réservé à la surveillance des comptes, le code source est publié et peut être vérifié ou utilisé par les utilisateurs. Surveiller la valeur en USDT des contrats en USDT + en USDT.

Aujourd'hui, le groupe de serveurs de stratégie de l'équipe compte 80 serveurs et plus de 50 serveurs de support, qui vérifient les conditions de stop-loss des comptes à une vitesse moyenne de 2 fois par seconde et peuvent rapidement se retirer 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:

  1. Le pays entier est libre d'interview
  2. Nous avons été informés par le président de la Commission de la sécurité et de la sécurité de l'OTAN, le président de la Commission de la sécurité et de la sécurité de l'OTAN, le président de la Commission de la sécurité et de la sécurité de l'OTAN, le président du Conseil de sécurité de l'OTAN et le président du Conseil de sécurité de l'OTAN.
  3. Votre adresse électronique:liuhongyu.louie@autobitmaker.comJe suis désolée.autobitmaker.com
  • Une astuce spéciale (le micro-signal autobitmaker001 n'est pas nous!! nous ne sommes pas non plus appelés makebit!!

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


//exchanges[0] is contract
//exchanges[1] is spot

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, totalBalance) {
    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(totalBalance)]]);
        }
    } 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 getSpotBalanceInUSDT() {
    var ticker = JSON.parse(HttpQuery('https://api.binance.com/api/v1/ticker/24hr'));
    var currentBalance = 0;
    var account = exchanges[1].GetAccount();
    var priceMap = {};
    try {
        if (ticker !== null) {
            for (var index in ticker) {
                priceMap[ticker[index].symbol] = ticker[index].lastPrice;
            }
        }
        if (account !== null && account.Info !== null) {
            for (var index in account.Info.balances) {
                var obj = account.Info.balances[index];
                if (obj.asset !== 'USDT' && priceMap[obj.asset + 'USDT']) {
                    currentBalance += Number(Number(priceMap[obj.asset + 'USDT']) * Number((Number(obj.free) + Number(obj.locked))));
                }
                if (obj.asset === 'USDT') {
                    currentBalance += Number((Number(obj.free) + Number(obj.locked)));
                }
            }
        }
    } 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: []
    }
    table.rows.push([{
        body: '本策略是 USDT 本位,基于均值回归的币安现货-合约无风险套利策略',
        colspan: 5
    }]);
    table.rows.push([{
        body: '套利覆盖币安永续合约全部币种交易对',
        colspan: 5
    }]);
    var position = exchangeInnerArray[0].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();
            var currentSpotBalance = getSpotBalanceInUSDT();
            var totalBalance = Number(Number(currentBalance) + Number(currentSpotBalance)).toFixed(4);
            printProfitInfo(totalBalance);
            updateAccountDetailChart(ObjChart, totalBalance);
            for (var i = 0; i < 120; i++) {
                try {
                    var avaliableMargin = 100;
                    ObjChart.update([chart, getChartPosition(avaliableMargin)]);
                    var profit = Number((totalBalance) - baseOriginalBalance).toFixed(5);
                    var profitRate = Number((((totalBalance) - baseOriginalBalance) / baseOriginalBalance) * 100).toFixed(4);
                    printPositionInfo(exchanges, profit, profitRate);
                    Sleep(1000 * 120);
                } catch (errInner) {
                    throw errInner;
                }
            }
        } catch (err) {
            throw err;
        }
    }
}

Plus de