Estrategia para comprar los ganadores de la versión de Python

El autor:- ¿ Por qué?, Creado: 2022-12-22 22:04:41, Actualizado: 2023-09-20 09:22:41

img

Estrategia para comprar los ganadores de la versión de Python

La estrategia de tendencia generalmente utiliza varios indicadores para juzgar la dirección del mercado, y utiliza los resultados de comparación de varios indicadores como señales comerciales. De esta manera, es inevitable usar parámetros y calcular indicadores. Ahora que se usan los parámetros, habrá una situación adecuada. En algunos mercados, la estrategia funciona muy bien, pero si no tienes suerte y la tendencia del mercado es muy hostil a los parámetros actuales, la estrategia puede funcionar muy mal. Por lo tanto, considero que cuanto más simple sea el diseño de la estrategia, mejor. Esta estrategia será más robusta. Hoy compartiremos una estrategia de tendencia sin indicadores. El código de estrategia es muy simple, solo 40 líneas.

Código de estrategia:

import time

basePrice = -1
ratio = 0.05
acc = _C(exchange.GetAccount)
lastCancelAll = 0
minStocks = 0.01

def CancelAll():
    while True : 
        orders = _C(exchange.GetOrders)
        for i in range(len(orders)) :
            exchange.CancelOrder(orders[i]["Id"], orders[i])
        if len(orders) == 0 :
            break
        Sleep(1000)

def main():
    global basePrice, acc, lastCancelAll
    exchange.SetPrecision(2, 3)
    while True:
        ticker = _C(exchange.GetTicker)
        if basePrice == -1 :
            basePrice = ticker.Last
        if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
            acc = _C(exchange.GetAccount)
            if acc.Balance * ratio / ticker.Last > minStocks :
                exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
                basePrice = ticker.Last
        if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : 
            acc = _C(exchange.GetAccount)
            if acc.Stocks * ratio > minStocks :
                exchange.Sell(ticker.Last, acc.Stocks * ratio)
                basePrice = ticker.Last
        ts = time.time()
        if ts - lastCancelAll > 60 * 5 :
            CancelAll()
            lastCancelAll = ts 
        LogStatus(_D(), "\n", "Ticker:", ticker, "\n", "Account information:", acc)
        Sleep(500)

Análisis sencillo de la estrategia

El principio de la estrategia es muy simple. No utiliza ningún indicador, sólo utiliza el precio actual como la base de activación de la transacción.ratiopara controlar el disparador de la posición de apertura.

El gatillo está encendido.

if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

Cuando el precio actual es mayor que el precio de base y el precio excede el precio de base, el precio de base es igual al precio de base.ratio * 100%, desencadenar una orden y esperar órdenes largas. Después de realizar la orden, el precio base se actualiza al precio actual.

Activador de la orden corta:

if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

El principio de la dirección corta es el mismo. El precio actual se utiliza para comparar el precio base. Cuando el precio actual es menor que el precio base y el precio excede el ratio * 100%', se activa la orden pendiente y se muestra la orden vacía. Después de realizar la orden, el precio base se actualiza al precio actual.

La cantidad de pedido de cada pedido esratio * 100%del valor del fondo disponible. Poner una orden a menos que la cantidad calculada de la orden sea inferior a la cantidad mínima de negociaciónminStocksestablecido por el parámetro.

De esta manera, la estrategia sigue los cambios de precio para comprar a los ganadores.

Prueba de retroceso

El intervalo de tiempo de backtesting es de aproximadamente un año.

img

Resultados de ejecución:

img img img

Recientemente, algunos usuarios dijeron que hay pocas estrategias de Python. Más tarde, compartiré más estrategias escritas en Python. El código de estrategia también es muy simple, lo que es muy adecuado para que los principiantes cuantitativos aprendan. Dirección estratégica:https://www.fmz.com/strategy/181185

La estrategia es para referencia, aprendizaje y backtesting sólo. Si usted está interesado, puede optimizar y actualizar.


Relacionados

Más.