Estrategias de captura de tendencias

MA SMA
Fecha de creación: 2024-04-26 11:48:28 Última modificación: 2024-04-26 11:48:28
Copiar: 5 Número de Visitas: 753
1
Seguir
1617
Seguidores

Estrategias de captura de tendencias

Descripción general

La estrategia de captura de tendencias es una estrategia que utiliza un método único para detectar la formación de tendencias y abrir posiciones en la dirección de la tendencia. Se obtiene un porcentaje llamado “limite” mediante el cálculo de la diferencia entre el precio más alto y el precio más bajo en un rango determinado y la suma de todas las longitudes de la línea K en ese rango.

Principio de estrategia

  1. Calcula la diferencia entre el precio más alto y el precio más bajo en un rango determinado, y la suma de todas las longitudes de la línea K en ese rango.
  2. Divide la diferencia por la suma de la longitud de la línea K y luego multiplica por 100 para obtener un valor porcentual, llamado “límite”.
  3. Cuando el límite excede el valor establecido y el promedio móvil se mueve hacia arriba, abre una carta más; cuando el límite excede el valor establecido y el promedio móvil se mueve hacia abajo, abre una carta en blanco.
  4. Después de abrir una posición, cuando el precio alcanza el punto de parada, se elimina parte de la posición y la posición restante se mueve al punto de parada.
  5. Cuando el promedio móvil cruza hacia abajo, aplanar las cartas; cuando el promedio móvil cruza hacia arriba, aplanar las cartas en blanco.

Ventajas estratégicas

  1. La estrategia utiliza un método único para detectar la formación de una tendencia y para determinar la intensidad de la tendencia mediante el cálculo de los valores límite, lo que ayuda a abrir posiciones al comienzo de la tendencia.
  2. Estrategia para controlar el riesgo después de abrir una posición, eliminando parte de la posición y moviendo el punto de parada de la posición restante.
  3. La estrategia utiliza el movimiento de la media hacia arriba y hacia abajo para determinar el final de la tendencia, lo que ayuda a cerrar las posiciones a tiempo.

Riesgo estratégico

  1. La estrategia consiste en tomar posiciones al inicio de la tendencia, lo que puede provocar pérdidas si la tendencia no se mantiene.
  2. Las estrategias utilizan paradas fijas y paradas de pérdidas, que en algunos casos pueden no ser lo suficientemente flexibles.
  3. La estrategia utiliza sólo las medias móviles para juzgar la tendencia y puede perderse algunas oportunidades de tendencia.

Dirección de optimización de la estrategia

  1. Se puede considerar el uso de otros indicadores para ayudar a juzgar la tendencia, como el MACD, el RSI, etc., para mejorar la precisión de la apertura de posiciones.
  2. Se puede ajustar dinámicamente el stop y el stop loss en función de la volatilidad del mercado para controlar mejor el riesgo.
  3. Se puede considerar la posibilidad de abrir una posición después de la confirmación de la tendencia para reducir el riesgo inicial de la tendencia.

Resumir

La estrategia de captura de tendencias utiliza un método único para detectar la formación de tendencias y abrir posiciones en la dirección de la tendencia. Se determina la intensidad de la tendencia mediante el cálculo de los valores límite y el cruce de las medias móviles para determinar el final de la tendencia. La estrategia controla el riesgo mediante la eliminación de parte de la posición y el movimiento de los puntos de parada después de la apertura de la posición.

Código Fuente de la Estrategia
/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
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/
// © faytterro

//@version=5
strategy("Trend Catcher Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input.int(10)
tp = input.float(2.5, step = 0.1)
sl = input.float(2.5, step = 0.1)
malen = input.int(5)
limit = input.int(50)
ma = ta.sma(close,malen)
sum = 0.0
for i = 0 to len-1
    sum := sum + high[i]-low[i]
frs = 100*(ta.highest(high,len)-ta.lowest(low,len))/sum
//hline(50)
//plot(frs, color = color.white)
l = ta.crossover(frs,limit) and ma>ma[1]
s = ta.crossover(frs,limit) and ma<ma[1]
cl = ma<ma[1]
cs = ma>ma[1]
qty_balance=input.int(50, maxval = 100)
if (l)
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("exit long", "My Long Entry Id", qty_percent = qty_balance, limit = close*(100+tp)/100, stop = close*(100-sl)/100)

if (s)
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("exit short", "My Short Entry Id", qty_percent = qty_balance, limit = close*(100-tp)/100, stop = close*(100+sl)/100)

if (cl)
    strategy.close("My Long Entry Id")
if (cs)
    strategy.close("My Short Entry Id")

l:= l and strategy.opentrades<1
s:= s and strategy.opentrades<1
transp = strategy.opentrades>0? 0 : 100
pma=plot(ma, color = ma<ma[1]? color.rgb(255, 82, 82, transp) : color.rgb(76, 175, 79, transp))
price = open/2+close/2
pprice = plot(price, display = display.none)
fill(pma,pprice, color = ma<ma[1]? color.rgb(255, 82, 82, transp+90) : color.rgb(76, 175, 79, transp+90))

spm=plot(ta.valuewhen(s,close,0), color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.white : color.rgb(1,1,1,100), offset=1)
lpm=plot(ta.valuewhen(l,close,0), color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.white : color.rgb(1,1,1,100), offset=1)

ltp=plot(ta.valuewhen(l,close,0)*(100+ta.valuewhen(l,tp,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
lsl=plot(ta.valuewhen(l,close,0)*(100-ta.valuewhen(l,sl,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.red : color.rgb(1,1,1,100), offset=1)

stp=plot(ta.valuewhen(s,close,0)*(100-ta.valuewhen(s,tp,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
ssl=plot(ta.valuewhen(s,close,0)*(100+ta.valuewhen(s,sl,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.red : color.rgb(1,1,1,100), offset=1)
fill(stp,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(ssl,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))
fill(ltp,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(lsl,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))