وسائل لوڈ ہو رہے ہیں... لوڈنگ...

انڈیکس توازن کی حکمت عملی

مصنف:گھاس، تاریخ: 2018-09-11 10:06:23
ٹیگز:کثیر اقسامتوازن

یہ روبوٹ ہر اثاثہ کی قیمت کا ایک مخصوص تناسب برقرار رکھے گا جیسا کہ آپ نے مقرر کیا ہے۔ اگر آپ ETH کی قیمت کو پورٹ فولیو کے 25٪ ((0.25) پر مقرر کرتے ہیں تو ، انحراف 0.1 پر ہوتا ہے ، جب قیمت کا تناسب 0.9 * 0.25 سے کم ہوتا ہے تو بوٹ 0.25 پر خریدے گا اور جب یہ 1.1 * 0.25 سے زیادہ ہوتا ہے تو فروخت کرے گا ، اس طرح ، ETH کی قیمت کو ایک خاص تناسب پر رکھا جاتا ہے۔ ایک سے زیادہ اثاثہ توازن، آپ کو علیحدہ علیحدہ ٹریڈنگ جوڑے شامل کرنے کے لئے ہے، اور تناسب 0.25 کے لئے 0.2 کے لئے 0.3 کی طرح ان پٹ ہے. یاد رکھیں، مجموعی تناسب 1 سے کم ہونا ضروری ہے اور خریدنے کے لئے ایک اضافی کمرہ ہے.

اشاریہ توازن کی حکمت عملی۔ اثاثوں کو پیشگی تناسب کے مطابق توازن میں لایا جاسکتا ہے ، جس سے کراس ایکسچینج توازن کی حمایت ہوتی ہے۔ اس بات کا یقین کرنے کے لئے نوٹ کریں کہ ایک ایکسچینج کو ملحقہ طور پر شامل کیا جائے۔

فلیش کریش بوٹ ایک مخصوص بیس قیمت سے اوپر اور نیچے پری آرڈرز مرتب کرتا ہے۔ خرید آرڈرز پہلے سے طے شدہ قیمتوں پر رکھے جاتے ہیں جو مقررہ بیس قیمت سے نیچے ہوتے ہیں۔ اس کے برعکس ، فروخت کے آرڈرز اس بیس قیمت سے اوپر رکھے جاتے ہیں۔ یہ بوٹ اتار چڑھاؤ والی مارکیٹ میں سب سے زیادہ موثر ہے۔


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

متعلقہ مواد

مزید معلومات

پھانسیہیلو، کیا یہ ایک حقیقی ڈسک پر کام کرتا ہے؟