সূচক ব্যালেন্স বট

লেখক:ঘাস, তারিখ: ২০১৮-০৯-১১ ১০:০৬ঃ২৩
ট্যাগঃপোর্টফোলিওব্যালেন্স

এই বট প্রতিটি সম্পদের মূল্যের একটি নির্দিষ্ট অনুপাত বজায় রাখবে যেমন আপনি সেট করেছেন। যদি আপনি ETH মান সেট 25% ((0.25) পোর্টফোলিও, বিচ্যুতি 0.1, বট 0.25 কিনতে হবে যখন মান অনুপাত 0.9 এর নিচে০.২৫ এবং ১.১ এর উপরে বিক্রি করুন0.25, সুতরাং, ETH মান একটি নির্দিষ্ট অনুপাত রাখা হয়। একাধিক সম্পদ ভারসাম্য, আপনি পৃথকভাবে ট্রেডিং জোড়া যোগ করতে হবে, এবং অনুপাত ইনপুট হয় "0.25


var account = _C(exchanges[0].GetAccount);
var coinValue = {};
var totalValue = 0;
function updateValue(){
    var logString = 'Time: '+ _D() + '\n';
    totalValue = 0;
    coinValue[BaseAsset] = 0;
    logString += BaseAsset + ': ' + _N(coinValue[BaseAsset].value,5) + '\n';
    for(var i=0;i<exchanges.length;i++){
        var account = _C(exchanges[i].GetAccount);
        if(i > 0 && exchanges[i].GetLabel != exchanges[i-1].GetLabel){
            coinValue[BaseAsset] += {amount:account.Balance + account.FrozenBalance, value:account.Balance + account.FrozenBalance};
        }
        var ticker = _C(exchanges[i].GetTicker);
        var symbol = exchanges[i].GetCurrency().split('_')[0];
        coinValue[symbol].amount = account.Stocks + account.FrozenStocks;
        coinValue[symbol].value = coinValue[symbol].amount * ticker.Last;
        totalValue += coinValue[symbol].value;
        coinValue[symbol].buyPrice = ticker.Buy;
        coinValue[symbol].sellPrice = ticker.Sell;
        logString += symbol + ': ' + _N(coinValue[symbol].value,5) + '\n'
    }
    totalValue += coinValue[BaseAsset].value;
    LogStatus(logString);
}
var keepPercent = Ratio.split('|').map(Number);
if(math.sum(keepPercent) > 1){
    throw 'sum of keep percent should be lower than 1';
}
var buyPercent = ToBuy.split('|').map(Number);
var sellPercent = ToSell.split('|').map(Number);
for(var i=0;i<exchanges.length;i++){
    var symbol = exchanges[i].GetCurrency().split('_')[0];
    coinValue[symbol] = {amount:0, value:0, buyPrice:0, sellPrice:0, keepPercent:0, buyPercent:0, sellPercent:0};
    coinValue[symbol].keepPercent = keepPercent[i];
    coinValue[symbol].buyPercent = buyPercent[i];
    coinValue[symbol].sellPercent = sellPercent[i];
}
function CancelPendingOrders(e) {
    var orders = _C(e.GetOrders);
    for (var j = 0; j < orders.length; j++) {
        exchange.CancelOrder(orders[j].Id, orders[j]);
        Sleep(300);
    }
}
function onTick(){
    updateValue();
    for(var i=0;i<exchanges.length;i++){
        var symbol = exchanges[i].GetCurrency().split('_')[0];
        if(coinValue[symbol].value > (1+coinValue[symbol].sellPercent)*totalValue*coinValue[symbol].keepPercent){
           var sellAmount = (coinValue[symbol].value - totalValue*coinValue[symbol].keepPercent)/coinValue[symbol].buyPrice
           exchanges[i].Sell(coinValue[symbol].buyPrice, sellAmount)
           CancelPendingOrders(exchanges[i]);
        }
        else if(coinValue[symbol].value < (1-coinValue[symbol].buyPercent)*totalValue*coinValue[symbol].keepPercent){
            var buyAmount = (totalValue*coinValue[symbol].keepPercent - coinValue[symbol].value)/coinValue[symbol].sellPrice
            exchanges[i].Buy(coinValue[symbol].sellPrice, buyAmount);
            CancelPendingOrders(exchanges[i]);
        }        
    }
}
function main() {
    while(true){
        onTick();
        Sleep(Interval*1000);
    }
}

সম্পর্কিত

আরো

প্যানমিংহ্যালো, এটা কি ডিস্কের সাথে কাজ করে?