آئس برگ کمیشن کی حکمت عملی

مصنف:نیکی, تخلیق: 2018-08-29 10:37:14, تازہ کاری: 2019-12-03 17:29:30

آئس برگ کمیشن کی حکمت عملیwww.fmz.comآئس برگ کمیشن سے مراد سرمایہ کار کا بڑے پیمانے پر لین دین ہے ، تاکہ مارکیٹ پر حد سے زیادہ اثرات سے بچنے کے لئے ، ایک بڑا واحد کمیشن خود بخود ایک بڑے آرڈر کو متعدد چھوٹے آرڈرز میں تقسیم کیا جاتا ہے ، موجودہ تازہ ترین خرید / فروخت کی قیمت اور کسٹمر کی ترتیب کی قیمت کے مطابق۔ یہ حکمت عملی خود بخود چھوٹے آرڈر کے تفویض کو انجام دیتی ہے ، اور جب پچھلے آرڈر کو مکمل طور پر فروخت کردیا جاتا ہے یا حالیہ قیمت موجودہ جگہ کی قیمت سے نمایاں طور پر انحراف کرتی ہے تو خود بخود احکامات کو دوبارہ ترتیب دیتی ہے۔

مثال: اگر واحد اوسط کے لئے فلوٹنگ پوائنٹ 10 پر مقرر کیا جاتا ہے تو:

ہر جگہ کی تعداد ایک جگہ کی اوسط قیمت کا 90٪ ~ 110٪ ہے ، اور جگہ کی قیمت آخری خریداری کی قیمت ہے آئیے کہتے ہیں 1 بار (مائنس 1 تفویض کی گہرائی) ، اور آخری جگہ مکمل ہونے کے بعد ایک نئی جگہ بنائی جاتی ہے۔ خود بخود آرڈر واپس لیں اور دوبارہ جگہ بنائیں جب آخری ٹرانزیکشن کی قیمت جگہ کی گہرائی سے زیادہ ہو * 2.

جب حکمت عملی کا کل حجم اس کے احکامات کی کل تعداد کے برابر ہوتا ہے تو اس کی جگہ بند کردی جاتی ہے۔ جب مارکیٹ کی آخری ٹرانزیکشن کی قیمت اس کی زیادہ سے زیادہ خریداری کی قیمت سے زیادہ ہوتی ہے تو ، کمیشن کو روک دیا جاتا ہے ، اور آخری ٹرانزیکشن کی قیمت سب سے زیادہ خریداری کی قیمت سے کم ہونے کے بعد کمیشن دوبارہ شروع ہوتا ہے۔

function CancelPendingOrders() {
    while (true) {
        var orders = _C(exchange.GetOrders);
        if (orders.length == 0) {
            return;
        }

        for (var j = 0; j < orders.length; j++) {
            exchange.CancelOrder(orders[j].Id);
            if (j < (orders.length-1)) {
                Sleep(Interval);
            }
        }
    }
}

var LastBuyPrice = 0;
var InitAccount = null;

function dispatch() {
    var account = null;
    var ticker = _C(exchange.GetTicker);
    if (LastBuyPrice > 0) {
        if (_C(exchange.GetOrders).length > 0) {
            if (ticker.Last > LastBuyPrice && ((ticker.Last - LastBuyPrice) / LastBuyPrice) > (2*(EntrustDepth/100))) {
                Log('deviate to much, newest last price:', ticker.Last, 'order buy price', LastBuyPrice);
                CancelPendingOrders();
            } else {
                return true;
            }
        } else {
            account = _C(exchange.GetAccount);
            Log("order finised, total cost:", _N(InitAccount.Balance - account.Balance), "avg buy price:", _N((InitAccount.Balance - account.Balance) / (account.Stocks - InitAccount.Stocks)));
        }
        LastBuyPrice = 0;
    }
    
    var BuyPrice = _N(ticker.Buy * (1 - EntrustDepth/100),PricePerision);
    if (BuyPrice > MaxBuyPrice) {
        return true;
    }
    
    if (!account) {
        account = _C(exchange.GetAccount);
    }


    if ((InitAccount.Balance - account.Balance) >= TotalBuyNet) {
        return false;
    }
    
    var RandomAvgBuyOnce = (AvgBuyOnce * ((100 - FloatPoint) / 100)) + (((FloatPoint * 2) / 100) * AvgBuyOnce * Math.random());
    var UsedMoney = Math.min(account.Balance, RandomAvgBuyOnce, TotalBuyNet - (InitAccount.Balance - account.Balance));
    
    var BuyAmount = _N(UsedMoney / BuyPrice, 3);
    if (BuyAmount < MinStock) {
        return false;
    }
    LastBuyPrice = BuyPrice;
    exchange.Buy(BuyPrice, BuyAmount, 'Cost: ', _N(UsedMoney), 'last price', ticker.Last);
    return true;
}

function main() {
    CancelPendingOrders();
    InitAccount = _C(exchange.GetAccount);
    Log(InitAccount);
    if (InitAccount.Balance < TotalBuyNet) {
        throw "balance not enough";
    }
    LoopInterval = Math.max(LoopInterval, 1);
    while (dispatch()) {
        Sleep(LoopInterval * 1000);
    }
    Log("All Done", _C(exchange.GetAccount));
}

مزید

چھوٹا سا خواببہت اچھا!