আইসবার্গ কমিশনের কৌশল

লেখক:ভাল, নির্মিতঃ 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));
}

আরো

ছোট্ট স্বপ্নদারুণ!