Bit-Maker memantau baki kontrak tunai & USDT

Penulis:AutoBitMaker-ABM, Tarikh: 2021-02-20 08:12:06
Tag:

AutoBitMakerPada masa ini, strategi penyelesaian tanpa risiko telah dilancarkan secara rasmi. Pada asasnya, strategi adalah untuk lindung nilai tunai dan kontrak, dan proses ini juga boleh dilakukan secara manual. Tetapi berbanding dengan operasi manual, BOT akan menangkap ruang keuntungan dari semua pasangan dagangan di pasaran, melakukan beratus-ratus transaksi setiap hari; lebih membebaskan tangan anda dan mengurangkan risiko pasaran.

Kami adalahAutoBitMaker, ringkasModal ABMDi sini, anda boleh melihat nama pasukan dengan teliti, tanda mikro, untuk membezakan yang sebenar dan palsu. Untuk sementara, kami hanya berkomunikasi dengan pelanggan domestik melalui WeChat, e-mel, dan tidak menggunakan QQ.

Pasukan ABMTerdapat 3 jenis strategi yang disediakan

  • Perdagangan kontrak
  • Perdagangan segera
  • Perdagangan diskaun

Pada masa ini, kod hanya untuk pemantauan akaun, kod sumber diterbitkan dan boleh diperiksa sendiri, atau digunakan. Memantau nilai USDT untuk kontrak USDT + USDT.

Pada masa ini, kumpulan pelayan strategi pasukan telah mencapai 80 buah dan lebih daripada 50 pelayan sokongan yang memeriksa keadaan berhenti kehilangan akaun dengan purata dua kali sesaat untuk keluar dengan cepat apabila risiko muncul.

Menggunakan awan hibrida heterogen Ali Cloud, Amazon Cloud, Microsoft Cloud Arkitektur, memisahkan nodus pentadbiran dan pelaksanaan, membentuk kluster antara pelbagai nodus untuk jaminan redundansi, operasi lancar dan jaminan kewangan yang selamat dan berkesan untuk mencapai perniagaan

Mengenai percubaan: Bergantung pada jumlah dana anda, kami menawarkan percubaan selama dua minggu. Kami tidak mengenakan bayaran semasa percubaan. Setelah bot mengambil alih akaun anda, jangan lakukan apa-apa tindakan sendiri, dan semua bot akan keluar dengan serta-merta apabila mereka mengesan sebarang kedudukan manual yang lain.

Mengenai komisen: Ini bergantung kepada jumlah dana anda. Kami boleh membincangkannya selepas tahap percubaan. Kami akan mengenakan bayaran yang sangat rendah jika anda membuat akaun menggunakan pautan rujukan kami.

Hubungi:

  1. Perbincangan di seluruh negara
  2. WeChat:DuQi_SEC/autobitmaker/autobitmaker_001/Shawn_gb2312/ABM_DD
  3. E-mel:liuhongyu.louie@autobitmaker.com/autobitmaker_master@autobitmaker.com
  • Petua khas ((Mikrosinyal autobitmaker001 bukan kita!! kita juga tidak dipanggil makebit!! Mikrosinyal autobitmaker_001 adalah kita)

Permohonan percubaan untuk aplikasi WeChat:微信小程序码


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

Lebih lanjut