Chiến lược của Ủy ban núi băng

Tác giả:Tốt, Tạo: 2018-08-29 10:37:14, Cập nhật: 2019-12-03 17:29:30

Chiến lược của Ủy ban núi băngwww.fmz.comCác khoản hoa hồng băng núi đề cập đến các nhà đầu tư giao dịch quy mô lớn, để tránh tác động quá mức trên thị trường, các khoản hoa hồng lớn đơn được tự động chia một lệnh lớn thành nhiều đơn đặt hàng nhỏ, theo giá mua / bán gần nhất hiện tại và giá đặt khách hàng. Chiến lược tự động thực hiện ủy quyền đơn đặt hàng nhỏ, và tự động đặt lại các đơn đặt hàng khi lệnh trước đó được bán hoàn toàn hoặc giá mới nhất lệch đáng kể từ giá đặt hiện tại.

Ví dụ: Nếu điểm biến động trung bình đơn được đặt là 10 thì:

Số lượng mỗi vị trí là 90% ~ 110% giá trị trung bình của vị trí duy nhất, và giá đặt là giá mua mới nhất hãy nói 1 lần (trừ độ sâu ủy quyền 1), và một vị trí mới được thực hiện sau khi vị trí cuối cùng được hoàn thành. tự động rút lại lệnh và đặt lại khi giá giao dịch mới nhất vượt quá độ sâu đặt * 2.

Việc đặt được dừng lại khi tổng khối lượng của chiến lược bằng với tổng số lệnh của nó. Khi giá giao dịch mới nhất của thị trường cao hơn giá mua tối đa của nó, hoa hồng được dừng lại và hoa hồng được tiếp tục sau khi giá giao dịch mới nhất thấp hơn giá mua cao nhất.

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

Thêm nữa

Giấc mơ nhỏTốt lắm!