La estrategia de equilibrio de la plataforma de Python

El autor:Un sueño pequeño., Creado: 2020-02-05 10:02:03, Actualizado: 2023-10-12 21:20:47

img

La estrategia de equilibrio de la plataforma de Python

Versión de JavaScript

La dirección de la estrategia:https://www.fmz.com/strategy/345

En este artículo, vamos a practicar una simple política de JavaScript. A través de la política de puesta en práctica, los inventores se familiarizan más con las llamadas de las interfaces de la plataforma de negociación cuantitativa y entienden las ligeras diferencias entre los diferentes idiomas en la política de desarrollo de la plataforma, en realidad, las políticas de la versión de JavaScript y las políticas de la versión de Python son muy pequeñas, ya que las llamadas de la interfaz son básicamente las mismas.

Las estrategias

En la versión de JavaScript, se dice:

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.

La estrategia es muy simple, la versión de JavaScript del código no es larga, sólo más de 70 líneas. La estrategia del lenguaje Python, más breve, muy adecuada para el aprendizaje de los principiantes, tiene un gran número de desarrolladores de código compartido en la plataforma de comercio cuantitativo de los inventores, el lenguaje de apoyo.JavaScript/C++/PythonPor lo tanto, tener un mayor dominio de un lenguaje de desarrollo es útil no solo para aprender, investigar y desarrollar estrategias, sino también para familiarizarse con las interfaces de las API de la plataforma.

Código de la estrategia

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

InitAccount = None

def CancelPendingOrders():
    ret = False
    while True:
        orders = _C(exchange.GetOrders)
        if len(orders) == 0 :
            return ret

        for j in range(len(orders)):
            exchange.CancelOrder(orders[j].Id)
            ret = True
            if j < len(orders) - 1:
                Sleep(Interval)
    return ret 

def onTick():
    acc = _C(exchange.GetAccount)
    ticker = _C(exchange.GetTicker)
    spread = ticker.Sell - ticker.Buy
    diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
    ratio = diffAsset / acc.Balance
    LogStatus("ratio:", ratio, _D())
    if abs(ratio) < threshold:
        return False
    if ratio > 0 :
        buyPrice = _N(ticker.Sell + spread, ZPrecision)
        buyAmount = _N(diffAsset / buyPrice, XPrecision)
        if buyAmount < MinStock:
            return False
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
    else :
        sellPrice = _N(ticker.Buy - spread, ZPrecision)
        sellAmount = _N(-diffAsset / sellPrice, XPrecision)
        if sellAmount < MinStock:
            return False 
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
    return True

def main():
    global InitAccount, LoopInterval
    InitAccount = _C(exchange.GetAccount)
    LoopInterval = max(LoopInterval, 1)
    while True:
        if onTick():
            Sleep(1000)
            CancelPendingOrders()
            Log(_C(exchange.GetAccount))
        Sleep(LoopInterval * 1000)

El código se inicia

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

Es la configuración de la revisión, lo que significa que la configuración de la revisión (configuración) se guarda en forma de código, y se configura automáticamente de acuerdo con esta configuración cuando se revisa. Fuente de información:https://www.fmz.com/bbs-topic/859

Los parámetros de esta política son perfectamente idénticos a los de la versión de JavaScript, el código de la política también se ha portado por oración, la estructura del programa no ha cambiado y se puede comparar por oración, observando las diferencias entre las políticas escritas en diferentes idiomas.

Las pruebas

Configuración de parámetrosimg

Las estadísticasimg

img

La dirección de la estrategia:https://www.fmz.com/strategy/183374

Las estrategias son solo para aprendizaje de referencia, pruebas de retrospección y interés para optimizar la actualización.


Relacionados

Más.

Las riquezas del cieloQué buena vaca.