Esta estrategia es una estrategia de negociación que utiliza una media móvil simple para determinar la dirección de la tendencia del mercado y colocar órdenes de límite a lo largo de la línea de media móvil para seguir la tendencia.
Calcular la media móvil simple (SMA) y la tendencia de la dirección de la tendencia.
Si el filtro Anti-Saw está habilitado, la tendencia alcista se identifica cuando los mínimos están por encima de SMA, la tendencia bajista se identifica cuando los máximos están por debajo de SMA. Si el filtro Anti-Saw está deshabilitado, la tendencia alcista se identifica cuando el cierre está por encima de SMA, la tendencia bajista se identifica cuando el cierre está por debajo de SMA.
Poner órdenes límite al precio SMA de acuerdo con la tendencia de la dirección de la tendencia y las direcciones de negociación habilitadas needlong y needshort:
Si se necesita una operación larga (needlong es cierto) y en tendencia alcista, coloque una orden de límite larga al precio SMA
Si se necesita una operación corta (needshort es cierto) y en tendencia bajista, colocar una orden de límite corto al precio SMA
Establecer la lógica de stop loss para salir de las posiciones si la dirección de la posición no coincide con la dirección de la tendencia.
Solo se negocian dentro del intervalo de fechas especificado basado en los parámetros del intervalo de fechas.
El uso de SMA para determinar la tendencia puede filtrar eficazmente el ruido del mercado y bloquear la tendencia a más largo plazo.
Poner órdenes límite al precio SMA puede obtener buenos puntos de entrada cuando comienza la tendencia.
Flexibilidad para solo ir largo o corto de acuerdo con el estilo personal de negociación.
Poner fin a las pérdidas en su lugar para evitar que las pérdidas aumenten.
El rango de tiempo de negociación se establece para evitar la volatilidad en torno a eventos importantes.
La SMA como indicador de tendencia tiene un efecto de retraso, puede perder los puntos de inflexión de la tendencia y causar pérdidas.
Las órdenes límite carecen de flexibilidad, pueden no entrar en posiciones debido a ajustes de tendencia a corto plazo.
El parámetro de período SMA necesita una configuración adecuada, las configuraciones inadecuadas conducen a una determinación de tendencia incorrecta.
Los parámetros de las sesiones de negociación deben ser razonables para evitar oportunidades perdidas o operaciones en períodos de riesgo.
Considere la posibilidad de añadir otros indicadores para la confirmación de múltiples indicadores, evitando los problemas de retraso de la SMA.
Cambiar al seguimiento de órdenes de mercado cuando el precio rompe la SMA, mejorando la flexibilidad de seguimiento.
Optimizar dinámicamente el período SMA para adaptarse a los diferentes ciclos del mercado.
Establezca el stop loss para oscilar bajo/alto en lugar de estrictamente al precio SMA para paradas más flexibles.
Aumentar los elementos algorítmicos para sesiones de negociación dinámicas más inteligentes y evitar eventos de riesgo mayor.
En general, esta es una estrategia de seguimiento de tendencias relativamente simple, con la idea central de determinar la dirección de la tendencia con SMA y colocar órdenes límite al precio SMA para seguir la tendencia. Con ciertas optimizaciones, puede mejorar la flexibilidad, la adaptabilidad y la inteligencia. La estrategia es fácil de entender e implementar, adecuada para principiantes en el comercio algorítmico, pero requiere conciencia de riesgo, una evaluación de backtest cuidadosa, un estricto monitoreo y optimización para el comercio en vivo.
/*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")