Estrategia de equilibrio de una sola plataforma

El autor:No hay nada, Fecha: 2014-08-14 20:20:48
Las etiquetas:Saldo de las cuentas

Esto requiere un almacenamiento, por ejemplo, si la cuenta tiene $ 5,000, y una moneda, si el valor de la moneda es mayor que el saldo de la cuenta de $ 5,000 y la diferencia es mayor que el valor de la moneda, por ejemplo, la moneda ahora vale $ 6,000, se vende, por ejemplo, $ 6,000-5000 / $ 6,000 / 2, lo que significa que la moneda ha subido de valor, cambiar el dinero de nuevo, si la moneda se devalúa, por ejemplo, $ 4,000, comprar $ 5,000-4000 / $ 4,000 / $ 2,000, comprar algo más cuando la moneda cae, si la moneda se desploma, volver a vender, como si fuera un punto de inflexión, una cobertura diferente en ambos lados, así que lo llamo estrategia de equilibrio.


/*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

Más.

el bloqueoEsta es la estrategia de 50-50, de la leyenda, sin necesidad de alta frecuencia.

Los robots cuantificadosEsta idealización, no es posible, la condición sólo puede ser una transacción. Por ejemplo, Bitcoin contra el dólar estadounidense, la condición inicial es que el dinero en la cuenta sea más, el dinero en la cuenta sea menos, si al contrario, vomitará sangre.

¡Qué bien!La idea es única, aprendida, gracias por compartirla.

el momoxAvenida a Jane, la frase no se ajusta en esta estrategia, pero el código simple, en realidad, es la estrategia más mágica,

Las palmeras del surEsto debería ser para sacar dinero en los mercados bajistas y ganar dinero en los mercados de toros.