Estrategia de negociación bidireccional de período cruzado con órdenes de límite cruzado


Fecha de creación: 2023-11-03 17:11:34 Última modificación: 2023-11-03 17:11:34
Copiar: 1 Número de Visitas: 564
1
Seguir
1617
Seguidores

Estrategia de negociación bidireccional de período cruzado con órdenes de límite cruzado

Descripción general

La estrategia es una estrategia de negociación de seguimiento de tendencias, que utiliza un simple promedio móvil para determinar la dirección de la tendencia del mercado y coloca un precio límite en la dirección de la tendencia en el promedio móvil para realizar operaciones de seguimiento de tendencias.

Principio de estrategia

  1. Calcula el SMA de un promedio móvil simple y la dirección de la tendencia.

  2. Si el filtro de retroalimentación está activado, el uso de un punto bajo por encima de la SMA se juzgará como una tendencia al alza, y el uso de un punto alto por debajo de la SMA se juzgará como una tendencia a la baja. Si el filtro de retroalimentación no está activado, el uso de un precio de cierre por encima de la SMA se juzgará como una tendencia al alza y un precio de cierre por debajo de la SMA se juzgará como una tendencia a la baja.

  3. De acuerdo con la dirección de la tendencia y los parámetros de dirección de la operación activados, se coloca una orden de límite en el precio SMA, con la lógica siguiente:

    • Si necesita hacer más (needlong es verdadero) y está en una tendencia alcista, coloque una orden de límite en el precio SMA

    • Si se necesita un short (needshort es verdadero) y se encuentra en una tendencia a la baja, coloque una orden de límite de short en el precio SMA

  4. Configuración de la lógica de stop loss, si la dirección de la posición no coincide con la dirección de la tendencia, el stop loss se retira.

  5. Según el parámetro de rango de fechas, solo se negocian en el rango de fechas especificado.

Análisis de las ventajas

  1. El uso de SMA para determinar tendencias puede filtrar eficazmente el ruido del mercado y bloquear tendencias de líneas más largas.

  2. La colocación de una oferta limitada en el precio SMA permite obtener mejores puntos de entrada en la fase inicial de la tendencia.

  3. Se puede optar por hacer solo más o solo menos, con la flexibilidad de adaptarse a los estilos de negociación personales.

  4. Se puede configurar un mecanismo de suspensión de pérdidas para evitar la expansión de las pérdidas.

  5. Apoyo a la configuración de un rango de tiempo de negociación para evitar la gran volatilidad causada por eventos importantes

Análisis de riesgos

  1. El SMA, como indicador de tendencia, tiene problemas de retraso y puede perder el punto de cambio de tendencia, lo que genera pérdidas.

  2. El problema es que la entrada limitada no es lo suficientemente flexible, y puede no ser posible entrar en el campo debido a un ajuste a corto plazo de las tendencias.

  3. Se necesita un ajuste razonable de los parámetros del ciclo SMA, si no se establece correctamente, se obtendrá un juicio de tendencia erróneo.

  4. Se debe considerar la racionalidad de los parámetros de tiempo de negociación para evitar perder oportunidades de negociación o períodos de riesgo.

Dirección de optimización

  1. Se puede considerar la inclusión de otros indicadores de juicio, la verificación de múltiples indicadores, para evitar problemas de retraso en la SMA.

  2. Se puede configurar el modo de seguimiento de la lista de precios de finalización, cambiando a seguimiento de la lista de precios de mercado cuando el precio rompe la SMA, para mejorar la flexibilidad de seguimiento.

  3. Optimización dinámica de los parámetros de los ciclos SMA para adaptarlos al entorno de mercado de diferentes ciclos.

  4. La configuración de la posición de stop loss como el precio más bajo / más alto en la tendencia, en lugar de una posición SMA estricta, permite una mayor flexibilidad para el stop loss.

  5. La introducción de elementos de negociación algorítmica para una mayor inteligencia y flexibilidad en las horas de negociación, evitando las horas de mayor riesgo.

Resumir

La estrategia en su conjunto es una estrategia de seguimiento de tendencias más simple, la idea central es usar el SMA para determinar la dirección de la tendencia y colocar el precio límite en el SMA para seguir las transacciones. Se puede mejorar la flexibilidad, adaptabilidad e inteligencia de la estrategia mediante una cierta optimización. La estrategia es fácil de entender y adaptarse al aprendizaje inicial del comercio de algoritmos, pero en el entorno físico se debe tener en cuenta los riesgos, evaluar cuidadosamente los resultados de la retroalimentación y realizar una estricta supervisión y optimización.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MA
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
    strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
    strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
    strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
    strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")