Bit-Maker 3.0 Arbitrage Pembelajaran Pintar USDT Standar Binance

Penulis:AutoBitMaker-ABM, Tarikh: 2019-12-17 23:46:42
Tag:

Rangkaian pembelajaran sendiri:

Grid pembelajaran sendiri berdasarkan pemikiran strategi grid tradisional, tetapi selepas data ujian semula jangka panjang telah dioptimumkan untuk beberapa lusin konfigurasi parameter seperti logik pembukaan, masa kenaikan, kedudukan stop, nisbah kedudukan, selang grid. Memahami model kenaikan dinamik pintar dan kedudukan stop, dapat mengelakkan risiko tinggi yang diperlukan oleh grid tradisional untuk menghadapi situasi satu sisi, menggunakan kedudukan kembali yang sangat rendah, mencapai nisbah pengeluaran pulangan yang baik.

Parameter konfigurasi strategi yang sangat kaya, pasukan akan memperuntukkan pakar untuk menyesuaikan kombinasi parameter unik untuk akaun anda berdasarkan keperluan risiko dan pendapatan pelanggan, dengan pemantauan pasaran buatan + automatik sepanjang hari.

Kami mengembangkan kumpulan perdagangan indeks yang eksklusif, setiap kumpulan perdagangan indeks mengandungi beberapa pasangan perdagangan tunggal yang berkualiti tinggi, dan setiap pasangan perdagangan mempunyai peratusan berat yang unik. Robot menjalankan kumpulan indeks dengan menggunakan strategi grid pembelajaran sendiri, mengelakkan risiko satu transaksi terhadap risiko satu pihak. Di samping indeks statik terbina dalam, kami mentakrifkan indeks dinamik untuk pelbagai model mata wang pilihan untuk kumpulan indeks, dan memilih semua jenis mata wang teratas yang membentuk peringkat indeks, mengurangkan risiko lebih lanjut.

Akaun tunggal boleh dikonfigurasikan untuk menjalankan beberapa pasangan dagangan mata wang tunggal dan pasangan dagangan indeks pada masa yang sama, untuk membahagikan risiko risiko dan membantu anda memperoleh keuntungan dalam pelbagai pasaran yang kompleks.

Mengenai pengoptimuman + kawalan angin: Pelayan mengulang sejarah sepanjang tahun, mengulang semua data terkini secara automatik, parameter optimum dikira secara langsung. Strategi kami adalah untuk mengumpul lebih 50 pelayan tambahan untuk memeriksa keadaan penghentian akaun dengan purata dua kali sesaat untuk keluar dengan cepat apabila risiko berlaku.

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: WeChat: DuQi_SEC/autobitmaker/Shawn_gb2312/ABM_DD E-mel:liuhongyu.louie@autobitmaker.com/autobitmaker_master@autobitmaker.com

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


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

Lebih lanjut

pelawak 。。