Esta estrategia se basa en el cálculo único del nuevo precio alto de dos años y la media móvil de las acciones.
La lógica central de esta estrategia se basa en los siguientes cálculos únicos:
Cuando el precio de las acciones alcanza un nuevo máximo en los últimos dos años, forma un pico a corto plazo.
Cuando el precio se retira de este nuevo máximo y vuelve a la media móvil exponencial de 13 días, presenta una buena oportunidad de compra.
Además, cuando se activa la señal de compra, el precio de las acciones debe estar dentro del rango del 10% del máximo de dos años, no demasiado lejos.
Para las posiciones abiertas, si el precio se rompe un 5% por debajo de la línea MA de 21 días o disminuye un 20% desde el máximo de dos años, la posición se detendrá para obtener ganancias.
Esta es una estrategia de fuga a largo plazo con estas ventajas:
El precio único de dos años puede identificar eficazmente las oportunidades potenciales de inversión de tendencia.
La línea EMA de 13 días sirve como el filtro de entrada para evitar los golpes y determinar un impulso más fuerte.
Los cálculos únicos generan señales basadas en la acción del precio, evitando interferencias subjetivas.
Un stop loss razonable permite bloquear la mayoría de las ganancias.
También existen algunos riesgos, principalmente los siguientes:
Los mercados pueden experimentar profundas caídas, incapaces de detenerse a tiempo.
Las grandes brechas de la noche a la mañana pueden impedir una parada perfecta de pérdida, por lo que el porcentaje de pérdida de parada debe ampliarse para adaptarse.
La línea de 13 días puede no filtrar bien las consolidaciones, generando señales falsas excesivas.
Los nuevos precios altos pueden no funcionar bien para determinar los cambios de tendencia.
Hay espacio para una mayor optimización:
Incorporar otras herramientas para juzgar las condiciones generales del mercado, evitando posiciones innecesarias.
Agregue indicadores de impulso para evitar mejor los rangos de la sierra.
Optimizar los parámetros de la media móvil para capturar mejor los patrones de precios.
Utilice el aprendizaje automático para optimizar dinámicamente el parámetro de dos años para mayor flexibilidad.
En resumen, se trata de una estrategia única de ruptura a largo plazo, cuya clave es el nivel de precios alto de dos años y la línea EMA de 13 días que sirve como filtro de entrada.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-25 00:00:00 period: 1h 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/ // © Part Timer //This script accepts from and to date parameter for backtesting. //This script generates white arrow for each buying signal //@version=4 strategy("AMRS_LongOnly_PartTimer", overlay = true) //i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time) StartYear=input(defval = 2000, title ="Start Year", type=input.integer) StartMonth=input(defval = 01, title ="Start Month", type=input.integer) StartDate=input(defval = 01, title ="Start Date", type=input.integer) endYear=input(defval = 2021, title ="End Year", type=input.integer) endMonth=input(defval = 06, title ="End Month", type=input.integer) endDate=input(defval = 03, title ="End Date", type=input.integer) ema11=ema(close,11) ema13=ema(close,13) ema21=ema(close,21) afterStartDate = true //g=bar_index==1 //ath()=> //a=0.0 //a:=g ? high : high>a[1] ? high:a[1] //a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on) newHigh = (high > highest(high,504)[1]) //plot down arrows whenever it's a new high plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny) b=highest(high,504)[1] VarChk=((b-ema13)/b)*100 TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10) plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny) ExitPrice=(ema21 - (ema21*0.05)) DrawPrice=(b - (b*0.20)) stopprice=0.0 if (close <= ExitPrice) stopprice := ExitPrice if (close <= DrawPrice) stopprice := DrawPrice if (TrigLow and afterStartDate) strategy.entry("Long", strategy.long) strategy.exit("exit","Long", stop=stopprice) //beforeEndDate = (time < i_endTime) beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0)) if (beforeEndDate) strategy.close_all()