Código de 60 líneas realizando un pensamiento - Pesca de fondo de contrato

El autor:No lo sé., Creado: 2022-04-02 18:27:54, Actualizado: 2022-04-02 18:29:47

Código de 60 líneas realizando un pensamiento - Pesca de fondo de contrato

La estrategia de cuadrícula y la estrategia Martingale, que le gusta oscilar las cotizaciones del mercado, tienen desventajas inherentes, y estrategias similares se han probado en el mercado de contratos ETH durante un período de tiempo.FMZ.COMHay una cosa que realmente estoy de acuerdo con un amigo acerca de este tipo de estrategia. Es hacer contratos en el círculo de divisas, y el riesgo de hacer largo es menor que el de hacer corto. O simplemente hablando, la peor caída es volver a cero, pero el aumento es infinito.

Así que, ¿las estrategias como Martingale y Grid sólo hacen largo, pero no corto? ¿Es mejor para extender el riesgo de pesca de fondo en un largo rango que hacer bilateral? Esta idea suena muy bien, pero nadie sabe si puede resistir el combate real. Pero al menos podemos simplemente backtest esta idea. Por lo tanto, tenemos el tema del artículo de hoy - Diseñar una estrategia de pesca de fondo de contrato.

Desarrollo rápido basado enFMZ.COM

El código para implementar esta idea es muy simple, gracias a la flexibilidad, encapsulación de la interfaz y el poderoso sistema de backtest de la plataforma FMZ, etc. El código completo es de solo 60 líneas (para las especificaciones de escritura de código, muchas líneas que se pueden abreviar, no se abreviaron).

El diseño de la idea de la estrategia es muy simple. De acuerdo con el precio inicial al comienzo de la lógica, coloca una orden de compra, si la distancia del intervalo se está reduciendo. Si el precio continúa disminuyendo, continúa colocando una orden de compra y mantén la pesca de fondo. Luego espera la orden de posición cerrada después del precio de la posición agregando un cierto margen de ganancia y espera para cerrar. Si la posición está cerrada, la lógica anterior se repite con el precio actual como el precio inicial. La estrategia no es corta, solo larga.

Código fuente de la estrategia:

function cancelAll() {
    while (true) {
        var orders = _C(exchange.GetOrders)
        if (orders.length == 0) { 
            break 
        }
        for (var i = 0 ; i < orders.length ; i++) {
            exchange.CancelOrder(orders[i].Id, orders[i])
            Sleep(interval)
        }
    }
}

function getLong(arr, kind) {
    var ret = null 
    for (var i = 0 ; i < arr.length ; i++) {
        if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) {
            ret = arr[i]
        }
    }
    return ret
}

function pendingBidOrders(firstPrice) {
    var index = 0
    var amount = baseAmount
    while (true) {
        var pos = _C(exchange.GetPosition)
        var price = firstPrice - index * baseSpacing
        amount *= ratio
        index++
        exchange.SetDirection("buy")
        exchange.Buy(price, amount)        
        if (pos.length != 0) {
            var longPos = getLong(pos, "pos")
            if (longPos) {
                exchange.SetDirection("closebuy")
                exchange.Sell(longPos.Price + profitTarget, longPos.Amount)
            }
        }
        while (true) {
            Sleep(interval)
            if (!getLong(_C(exchange.GetOrders), "orders")) {
                cancelAll()
                break
            }
            if (!getLong(_C(exchange.GetPosition), "pos")) {
                cancelAll()
                return 
            }
        }
    }
}

function main() {
    exchange.SetContractType(symbol)
    while (true) {
        pendingBidOrders(_C(exchange.GetTicker).Last)
    }
}

El diseño de los parámetros es también muy simple:

img

Sólo hay varios parámetros.

Veamos el resultado de las pruebas de decenas de líneas de código.

Establezca el rango de tiempo de backtest aleatoriamente:

img

Prueba posterior:

img

img

Se parece a una estrategia de tipo cuadrícula o Martingale. ¿Los nuevos aprendices que acaban de comenzar tienen mucho miedo de este tipo de estrategias largas y se ven fácilmente persuadidos de dejar de hacerlo?

Los códigos de estrategia anteriores se utilizan únicamente para estudios e investigaciones.


Más.