Estrategia de seguimiento de tendencia de media móvil dual


Fecha de creación: 2023-09-24 13:14:08 Última modificación: 2023-09-24 13:14:08
Copiar: 0 Número de Visitas: 694
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia utiliza una combinación de medias RMA largas y medias EMA cortas para determinar la tendencia y realizar paros de seguimiento de tendencias con brechas altas y bajas. También se establece un intervalo de no negociación para filtrar brechas falsas.

Principio de estrategia

  1. Utiliza el RMA de largo período y el EMA de corto período para determinar la dirección de la tendencia. El EMA de corto plazo usa el RMA de largo plazo como señal de vista baja y el EMA de largo plazo como señal de vista alta.

  2. Cuando el precio rompe el precio más alto del ciclo más reciente, se detiene siguiendo el precio más alto. Cuando el precio rompe el precio más bajo del ciclo más reciente, se detiene siguiendo el precio más bajo.

  3. Establezca un intervalo de no negociación en el que el precio entre sin abrir posiciones, para evitar ser corregido. El intervalo de intervalo está determinado por una cierta proporción de la línea media RMA.

  4. Una vez ingresado, establece un precio de parada y retira una cierta proporción de ganancias.

Ventajas estratégicas

  1. La combinación de dos líneas equilibradas es muy fiable para determinar la dirección de la tendencia.

  2. El método de seguimiento de la parada hace que la parada siga la tendencia.

  3. Establezca una zona sin transacciones para filtrar las señales falsas de ruptura.

  4. La configuración Stop Stop permite a la estrategia cerrar posiciones activamente una vez que haya acumulado suficientes ganancias.

Riesgo estratégico

  1. El retraso en la generación de la horquilla muerta puede extender las pérdidas.

  2. El punto de parada de seguimiento demasiado cerca del precio puede ser golpeado por el ruido previo.

  3. La configuración de la zona sin transacciones demasiado amplia ha causado la pérdida de oportunidades de negociación.

  4. Si no se detiene a tiempo, las pérdidas pueden aumentar.

Resolución de las mismas:

  1. Optimización de los parámetros de la línea media para reducir la probabilidad de retraso.

  2. La tolerancia de los puntos de parada es adecuada para evitar la hipersensibilidad.

  3. Las pruebas ajustan el rango de las zonas sin transacciones para evitar oportunidades perdidas.

  4. Añadir otras formas de detener la pérdida para limitar la pérdida máxima.

Dirección de optimización de la estrategia

  1. Prueba otras combinaciones de indicadores de igualdad para encontrar una combinación más parecida.

  2. Aumentar la diferencia de precios, MACD y otros indicadores de juicio para mejorar la estabilidad de la estrategia.

  3. La introducción de parámetros de optimización de algoritmos de aprendizaje automático para que las estrategias sean más inteligentes.

  4. La combinación de indicadores de tendencias fuertes y débiles evita el comercio en contra de la tendencia.

  5. Optimizar las estrategias de gestión de fondos y mejorar la tasa de éxito de las mismas.

Resumir

Esta estrategia utiliza una doble línea para determinar la dirección de la tendencia y bloquear la tendencia para obtener ganancias mediante el seguimiento de los puntos altos y bajos de los paros y los filtros de zonas sin transacciones. El marco de la estrategia es simple, claro y extensible, y se puede optimizar mediante el ajuste del rango de parámetros, la optimización de las estrategias de paros y paros y la introducción de otros indicadores de evaluación auxiliares.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PatrickGwynBuckley

//@version=5
//var initialCapital = strategy.equity

strategy("PB Trend Scalper", "PB Trend Scalper", overlay = true)
shortma = input.int(55, title="quick ma's")
longma = input.int(100, title="long ma's")
ema55h = ta.ema(high, shortma)
ema55l = ta.ema(low, shortma)
ema200h = ta.rma(high, longma)
ema200l = ta.rma(low, longma)
stock = ta.stoch(close, high, low, 14)

lev = input.int(3, title="leverage")
hhVal = input.int(170, title="Highest high period")
llVal = input.int(170, title="Lowest low period")

hh = ta.highest(high, hhVal)
ll = ta.lowest(low, llVal)
//plot(stock)

plot(hh, color=color.new(color.green, 50))
plot(ll, color=color.new(color.red, 50))
var float downtrade = 0
p = input.float(3.0, title="no trade zone")
l = 3
emadistlong = ema200h + ((ema200h/100)*p)
emadistshort = ema200l - ((ema200h/100)*p)

plot(ema55h)
plot(ema55l)
ntl = plot(emadistlong, color=color.new(color.red, 10))
nts = plot(emadistshort, color=color.new(color.red, 10))
fill(ntl, nts, color=color.new(color.red, 90))

//position size

EntryPrice = close
//positionValue = initialCapital
positionSize = (strategy.equity*lev) / EntryPrice

//plot(strategy.equity)


//standard short

if ema55h < ema200l and close[2] < ema55l and close[1] > ema55l and high[1] < ema55h and close < ema55h and ema55h < emadistshort and strategy.opentrades == 0// and stock > 85 
    strategy.entry("short", strategy.short, qty=positionSize, comment="short")
    downtrade := 1

//reset count    
if (ta.crossunder(ema55h, ema200l)) and downtrade == 1
    downtrade := 0

//standard long    
if ema55l > ema200h and close[2] > ema55h and close[1] < ema55h and low[1] > ema55l and close > ema55l and ema55l > emadistlong and strategy.opentrades <= 1// and stock < 15 
    strategy.entry("long", strategy.long, qty=positionSize, comment="long")
    downtrade := 0

//RESET COUNT ON MA CROSS
if (ta.crossover(ema55l, ema200h)) and downtrade == 0
    downtrade := 1
    
longclose2 = low < ll[1] or low < emadistshort //close < open and open<open[1] and open[2] < open[3] and open[3] < emadistshort//close < ta.lowest(low, 20)//
shortclose2 = high > hh[1] or high>emadistlong//close > open and open>open[1] and open[2]>open[3] and open[3] > emadistlong//high > emadistlong//close > ta.highest(high, 20)//

sl = 3.5
tp = input.float(6.9, title="take profit %")
tp2 = 10


strategy.exit("long exit", "long", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))
strategy.close("long", when = longclose2, comment = "long exit")
//strategy.close("long", when = (downtrade == 1), comment = "long exit")
//strategy.exit("long exit", "long2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl)))
//strategy.close ("long2", when = longclose2, comment = "long exit")
//strategy.close("long", when = (downtrade == 1), comment = "long exit")

strategy.exit("short exit", "short", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))//, loss = 300)
strategy.close("short", when = shortclose2, comment = "short exit")
//strategy.close("short", when = (downtrade == 0), comment = "short exit")
//strategy.exit("short exit", "short2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl)))
//strategy.close ("short2", when = shortclose2, comment = "short exit")
//strategy.close("short2", when = (downtrade == 0), comment = "short exit")

//if (strategy.exit("long exit", "long"))
    //downtrade := 1
//else 
   // downtrade := 0