Chiến lược cân bằng một nền tảng

Tác giả:Không, Ngày: 2014-08-14 20:20:48
Tags:Số dư

Điều này đòi hỏi phải xây dựng kho, ví dụ như tài khoản có 5.000 đô la, và một đồng xu, nếu giá trị của đồng xu lớn hơn số dư trong tài khoản là 5.000 và chênh lệch giá trị vượt quá mức định giá, ví dụ như đồng xu bây giờ có giá trị 6.000 đô la, bạn sẽ bán nó.


/*backtest
start: 2018-03-01 00:00:00
end: 2018-08-01 11:00:00
period: 15m
exchanges: [{"eid":"OKCoin_EN","currency":"BTC"}]
*/

function CancelPendingOrders() {
    var ret = false;
    while (true) {
        var orders = null;
        while (!(orders = exchange.GetOrders())) {
            Sleep(Interval);
        }

        if (orders.length == 0) {
            return ret;
        }

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

var InitAccount = null;

function onTick() {
    var acc = _C(exchange.GetAccount);
    var ticker = _C(exchange.GetTicker);
    var spread = ticker.Sell - ticker.Buy;
    var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
    var ratio = diffAsset / acc.Balance;
    LogStatus('ratio:', ratio, _D());
    if (Math.abs(ratio) < threshold) {
        return false;
    }
    if (ratio > 0) {
        var buyPrice = _N(ticker.Sell + spread, ZPrecision);
        var buyAmount = _N(diffAsset / buyPrice, XPrecision);
        if (buyAmount < MinStock) {
            return false;
        }
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio);
    } else {
        var sellPrice = _N(ticker.Buy - spread, ZPrecision);
        var sellAmount = _N(-diffAsset / sellPrice, XPrecision);
        if (sellAmount < MinStock) {
            return false;
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio);
    }
    return true;
}

function main() {
    InitAccount = _C(exchange.GetAccount);
    LoopInterval = Math.max(LoopInterval, 1);
    while (1) {
        if (onTick()) {
            Sleep(1000);
            CancelPendingOrders();
            Log(_C(exchange.GetAccount));
        }
        Sleep(LoopInterval * 1000);
    }
}

Có liên quan

Thêm nữa

gây nhiễuĐây là chiến lược 50-50, theo truyền thuyết, không cần tần số cao.

Máy tính robot định lượngVí dụ, Bitcoin so với USD, điều kiện ban đầu là có nhiều tiền trong tài khoản, ít tiền có thể, nếu ngược lại, sẽ chảy máu.

hailanyiyeÝ tưởng này rất độc đáo, tôi đã học được, cảm ơn vì đã chia sẻ.

momoxĐường đến Jane, câu nói được sử dụng trong chiến thuật này không phù hợp hơn nhưng, mã đơn giản, thực sự là một trong những chiến thuật kỳ diệu nhất, thờ phượng

Bạch tuộc miền NamĐiều này nên được thực hiện trong thị trường gấu và thị trường bò.