Bit-Maker 3.0 套利 スマート学習 USDT 本位 (Binance 単一プラットフォーム-アービトラージ USDT 標準)

作者: リン・ハーンAutoBitMaker-ABM をインストールする, 日付: 2019-12-17 23:46:42
タグ:

自学格子:

自学網は伝統的な網戦略の考えに基づいているが,長期間の実盘+復習データにより,開場論理,加仓時間,止盤位置,止盤比率,格子間隔など数十のパラメータ配置を最適化した.スマートなダイナミック・ハザリングモデルと止盤位置を実現し,従来の網が一方的な状況に直面する際に負うなければならない高リスクを回避し,非常に低のポジションリターンを利用し,良い利益引き上げ比率を実現した.

戦略配置パラメータは非常に豊富で,チームは専門人を割り当て,お客様のリスクと収益ニーズに応じて,あなたのアカウントに独自のパラメータの組み合わせをカスタマイズし,24時間人工+自動市場モニタリングがあります.

我々は独自の指数取引セットを開発し,それぞれの指数取引セットには複数の高品質の単一取引ペアがあり,それぞれの取引ペアにはユニークな重量比率がある. 内蔵ステティックインデックスに加えて,インデックスセットのために複数のオプションコインモデルのダイナミックインデックスを定義し,各ブロックのリードコインを選択し,インデックスレベルを構成し,リスクをさらに減らす.

単一アカウントは,複数の単一通貨取引ペアと指数取引ペアを同時に操作するように設定され,リスクのリスクを分散させ,さまざまな複雑な市場で利益を得ることができます.

優化+風制御について: 履歴回顧サーバーは年中無休で,すべての最新のデータを自動的に回顧し,最適なパラメータをリアルタイムで計算します. 私たちの戦略は,50以上の補助サーバーを構成するクラスタで,アカウントの停止状態を毎秒2回平均で確認し,リスクが発生した場合に迅速に退場できるようにすることです.

異构混合クラウドを使用するアリクラウド,アマゾンクラウド,マイクロソフトクラウドアーキテクチャ,管理と実行を分離したノード,多ノード間を集約して冗長性保証,安全かつ効率的な事業のスムーズな運用と資金保証

実験について: 試乗は2週間程度で,資金の大きさに応じて提供します.試乗期間中は,手数料を徴収しません. ボットがあなたのアカウントを引き継いだ後,自分で何もしないで下さい. 他の手動のポジションが検出されたら,すべてのボットが即座に退会します.

報酬について: 試用段階の後で詳細を話します. 推薦リンクでアカウントを作成できれば,非常に低い手数料を請求します.

連絡先は: WeChat:DuQi_SEC/autobitmaker/Shawn_gb2312/ABM_DD ツイッター:Shawn_gb2312/ABM_DD メール:liuhongyu.louie@autobitmaker.com/autobitmaker_master@ はコメントを受け付けていません.autobitmaker.com

微信小程序は試用申請を提出しました.微信小程序码


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

もっと

ジョーカー 。。