Estratégia de equilíbrio de plataforma única

Autora:Zero., Data: 2014-08-14 20:20:48
Tags:Balanço

Isso requer que você armazene, por exemplo, uma conta com US $ 5.000 e uma moeda, se o valor da moeda for maior do que o saldo da conta com US $ 5.000 e a diferença for maior do que o valor da moeda, por exemplo, a moeda agora vale US $ 6.000, você vende (US $ 6.000 a US $ 5.000) / 6 / 2 moedas, o que significa que a moeda está em alta, você troca o dinheiro de volta, se a moeda está em baixa, por exemplo, US $ 4.000, você compra (US $ 5.000 a US $ 4.000) / 4 / 2 moedas, você compra mais quando a moeda desce, se a moeda desce, você vende novamente, como se fosse o mesmo, uma cobertura diferente em ambos os lados, então eu chamo isso de estratégia de equilíbrio


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

Relacionados

Mais.

interferênciaA estratégia de 50-50, como é lendário, não precisa de alta frequência.

Quantificação de robôsEsta idealização é impossível, a condição é apenas uma ação. Por exemplo, o Bitcoin em relação ao USD, a condição inicial é que o dinheiro na conta seja maior, menos moeda para que possa, se o contrário acontecer, vomitar sangue.

HailanyiyeA ideia é única, aprendida, obrigado por compartilhar.

MomoxO caminho para Jane, a frase não se encaixa mais nesta estratégia, mas o código simples, é realmente a estratégia mais mágica, adorando

O pequeno pau-brasil do sulIsto deveria ser um mercado de ursos, um mercado de touros para ganhar dinheiro.