آئس برگ خریدنے کا حکم

مصنف:گھاس، تاریخ: 2018-07-04 15:07:54
ٹیگز:تجارتی امداد

برفانی پہاڑ کا حوالہ دیتا ہے کہ سرمایہ کار بڑے پیمانے پر تجارت کرتے وقت ، مارکیٹ میں زیادہ سے زیادہ جھٹکے سے بچنے کے لئے ، بڑے آرڈر کو خود بخود متعدد آرڈرز میں تقسیم کرنے کے لئے ، موجودہ تازہ ترین خرید / فروخت کی قیمت اور کسٹمر کی مقرر کردہ قیمت کی حکمت عملی کے مطابق خود بخود چھوٹے آرڈر کو خود بخود دوبارہ ترتیب دینے کے لئے ، جب پچھلے آرڈر کو مکمل طور پر پورا کیا گیا ہو یا تازہ ترین قیمت موجودہ آرڈر کی قیمت سے نمایاں طور پر انحراف کرے۔ مثال: اگر ایک بار کا اوسط فلوٹنگ پوائنٹ نمبر 10 پر مقرر کیا گیا ہے تو: ہر آرڈر کی تعداد اس کی ایک بار کی اوسط آرڈر کی 90٪ سے 110٪ تک ہوتی ہے ، آرڈر کی قیمت تازہ ترین خریداری کی قیمت 1 * ((1-آرڈر کی گہرائی) ہے ، پچھلے آرڈر کے بعد ایک نیا آرڈر مکمل طور پر مکمل ہوجاتا ہے ، جب تازہ ترین ٹرانزیکشن کی قیمت اس آرڈر سے زیادہ ہوتی ہے تو یہ خود بخود منسوخ ہوجاتا ہے اور دوبارہ آرڈر کیا جاتا ہے۔ جب اسٹریٹجک مجموعی ٹرانزیکشن کی تعداد اس کی مجموعی آرڈر کی تعداد کے برابر ہوتی ہے تو آرڈر کو روک دیا جاتا ہے۔ جب مارکیٹ میں تازہ ترین ٹرانزیکشن کی قیمت اس کی سب سے زیادہ خریداری کی قیمت سے زیادہ ہوتی ہے تو آرڈر کو روک دیا جاتا ہے ، اور جب تازہ ترین ٹرانزیکشن کی قیمت سب سے زیادہ خریداری کی قیمت سے کم ہوجاتی ہے تو دوبارہ آرڈر شروع ہوتا ہے۔


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


متعلقہ

مزید