Estrategia de negociación BIAS de tasa de desviación

El autor:La bondad, Creado: 2020-06-30 09:58:26, Actualizado: 2023-10-28 15:29:08

[TOC] ¿Qué quieres decir?

img

Resumen de las actividades

Como dice el refrán, este mundo se separará después de un largo tiempo unido. También hará lo contrario después de un largo tiempo dividido. Y este fenómeno también existe en el mercado de futuros. No hay variedad que solo suba pero no baje. Pero cuándo subir y cuándo caer, depende de la tasa de desviación. En este artículo, usaremos la tasa de desviación para construir una estrategia de negociación simple.

Breve introducción

img

La tasa de desviación BIAS es un indicador técnico derivado de la media móvil. Es principalmente en forma de porcentaje para medir el grado de desviación de los precios de la media móvil en las fluctuaciones. Si la media móvil es el costo promedio de un comerciante, la tasa de desviación es la tasa promedio de retorno del comerciante.

Principio de la tasa de desviación

La base teórica de la tasa de desviación es un análisis del corazón del operador. Cuando el precio es mayor que el costo promedio del mercado, significa que los operadores de posición larga tendrán la idea de cobrar las ganancias, lo que hará que el precio baje. Cuando el precio es menor que el costo promedio del mercado, significa que los vendedores en corto son rentables, y la idea de cobrar la ganancia hará que el precio suba.

  • Cuando el precio se desvía hacia arriba del promedio móvil, la tasa de desviación es demasiado grande, y existe una alta probabilidad de que el precio caiga en el futuro.

  • Cuando el precio se desvía del promedio móvil a la baja, la tasa de desviación es demasiado pequeña y existe una alta probabilidad de que el precio suba en el futuro.

Aunque el promedio móvil se calcula a partir del precio, en términos de forma externa, el precio definitivamente se moverá más cerca del promedio móvil, o el precio siempre fluctuará alrededor del promedio móvil.

Fórmula para el cálculo de la tasa de desviación

El precio de cierre del día - precio medio de N días / precio medio de N días

Entre ellos, N es el parámetro promedio móvil, porque el período de N es diferente, el resultado de cálculo de la tasa de desviación también es diferente. En general, los valores de N son: 6, 12, 24, 36, etc. En el uso real, también se puede ajustar dinámicamente de acuerdo con diferentes variedades. Sin embargo, la selección de parámetros es muy importante. Si el parámetro es demasiado pequeño, la tasa de desviación será demasiado sensible, si el parámetro es demasiado grande, la tasa de desviación será demasiado lenta. Los resultados de cálculo de la tasa de desviación son positivos y negativos. Cuanto mayor sea la tasa de desviación positiva, mayor será la ganancia de los toros y mayor la probabilidad de corrección del precio.

La lógica de la estrategia

Dado que la tasa de desviación es otra forma de media móvil, también podemos adaptar una estrategia de tasa de doble desviación basada en la estrategia de media móvil doble. A juzgar por la relación posicional entre la tasa de desviación a corto plazo y la tasa de desviación a largo plazo, se juzga el estado actual del mercado. Si la tasa de desviación a largo plazo es mayor que la tasa de desviación a corto plazo, en realidad representa la media móvil a corto plazo a través de la media móvil a largo plazo, y viceversa.

  • Posiciones en el mercado de divisas: las posiciones en el mercado de divisas que no se encuentran en el mercado de divisas.
  • Posición corta abierta: si no existe una posición de tenencia actual y la tasa de desviación a largo plazo es inferior a la tasa de desviación a corto plazo
  • Cierre de posición larga: si existe una posición larga de retención y la tasa de desviación a largo plazo es inferior a la tasa de desviación a corto plazo
  • Cierre de posición corta: si existe una posición corta de retención y la tasa de desviación a largo plazo es mayor que la tasa de desviación a corto plazo

Escribir estrategias

Paso 1: redactar un marco estratégico

# Strategy main function
def onTick():
     pass


# Program entry
def main():
     while True: # Enter infinite loop mode
         onTick() # execution strategy main function
         Sleep(1000) # sleep for 1 second

La plataforma FMZ adopta el modo de formación por rotación.mainFunción yonTickLa función principal es la función de entrada de la estrategia, y el programa ejecutará el código línea por línea a partir de la función principal.whileel bucle y ejecutar repetidamente elonTickTodo el código básico de la estrategia está escrito en elonTick function.

Paso 2: Definir las posiciones virtuales

mp = 0

La ventaja de las posiciones virtuales es que es simple de escribir, y la operación iterativa es rápida. Se usa generalmente en el entorno de backtest. Se asume que cada orden está completamente llena, pero la posición real se usa generalmente en el comercio real.

Paso 3: Obtener la línea K

exchange.SetContractType('rb000') # Subscribe to futures varieties
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <long + 1: # If the number of K lines is too small
     return

Utilizando la función FMZSetContractType, puede suscribirse al contrato de índice de rebar pasando en rb000, pero en el backtest y la situación real del mercado, el índice de rebar se utiliza como los datos, y el contrato principal específico se utiliza para realizar el pedido.GetRecordsComo se necesita un cierto período para calcular la tasa de desviación, con el fin de evitar errores de programa, si no hay suficientes líneas K, utilizariflas instrucciones a filtrar.

Paso 4: Calcular la tasa de desviación

close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average value of the previous K line
bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

Según la fórmula para calcular la tasa de desviación, primero obtenemos el precio de cierre. En esta estrategia, utilizamos el precio de cierre anterior de la línea K, lo que significa que se establece la señal de la línea K actual y la siguiente línea K es para colocar órdenes.talibPor ejemplo, el promedio móvil es:TA.MAEsta función recibe 2 parámetros, a saber: K línea de matriz y el período promedio móvil.

Paso 5: Posicionamiento de órdenes

global mp # global variables
current_price = bars_arr[-1]['Close'] # latest price
if mp> 0: # If you are holding long positions
    if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
        exchange.SetDirection("closebuy") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # Closing long positions
        mp = 0 # reset virtual holding positions
if mp <0: # If you are holding short positions
    if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
        exchange.SetDirection("closesell") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # closing short positions
        mp = 0 # reset virtual holding positions
if mp == 0: # If there is no holding position
    if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
        exchange.SetDirection("buy") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # open long positions
        mp = 1 # reset virtual holding position
    if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
        exchange.SetDirection("sell") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # open short positions
        mp = -1 # reset virtual holding position

Estrategia completa

# Backtest configuration
'''backtest
start: 2018-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

# External parameters
short = 10
long = 50


# Global variables
mp = 0


# Strategy main function
def onTick():
    # retrieve data
    exchange.SetContractType('rb000') # Subscribe to futures varieties
    bars_arr = exchange.GetRecords() # Get K-line array
    if len(bars_arr) <long + 1: # If the number of K lines is too small
        return

    # Calculate BIAS
    close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
    ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average of the previous K line
    bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
    ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
    bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

    # Placing Orders
    global mp # global variables
    current_price = bars_arr[-1]['Close'] # latest price
    if mp> 0: # If you are holding long positions
        if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
            exchange.SetDirection("closebuy") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # closing long positions
            mp = 0 # reset virtual holding position
    if mp <0: # If you are holding short positions
        if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
            exchange.SetDirection("closesell") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # closing short positions
            mp = 0 # reset virtual holding position
    if mp == 0: # If there is no holding position
        if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
            exchange.SetDirection("buy") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # opening long positions
            mp = 1 # reset virtual holding position
        if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
            exchange.SetDirection("sell") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # open short positions
            mp = -1 # reset virtual holding position
        

# Program entry function
def main():
    while True: # loop
        onTick() # execution strategy main function
        Sleep(1000) # sleep for 1 second

La estrategia completa se ha publicado en el sitio web de la FMZ:https://www.fmz.com/strategy/215129

Prueba posterior de la estrategia

Configuración de pruebas de retroceso

img

Informe sobre el rendimiento

img img

Curva de los fondos

img

En resumen

La tasa de desviación es una herramienta de negociación simple y efectiva que puede proporcionar una referencia efectiva para los operadores.


Relacionados

Más.