Esta estrategia utiliza la media móvil y el rango medio verdadero para determinar la dirección de la tendencia del mercado para el seguimiento de tendencias.
Para determinar la tendencia del mercado, esta estrategia utiliza la media móvil de los períodos y dos veces el intervalo real medio de los períodos.
Cuando el mínimo es mayor que el promedio móvil más el rango medio verdadero (bajo > ma + atr), se juzga como una tendencia al alza. Cuando el máximo es menor que el promedio móvil menos el rango medio verdadero (alto < ma - atr), se juzga como una tendencia a la baja.
En otros casos, se mantiene la sentencia anterior.
Cuando se determina una tendencia al alza, ir largo en un cierto porcentaje cuando se permite ir largo. Cuando se determine una tendencia a la baja, vaya corto en un cierto porcentaje cuando se le permita ir corto.
La condición de cierre es alcanzar la fecha de finalización de las operaciones especificada.
Las ventajas de esta estrategia son:
Los principales riesgos a los que se enfrenta esta estrategia son:
Soluciones:
La estrategia se puede optimizar a partir de los siguientes aspectos:
La idea general de esta estrategia es clara y fácil de entender. Utiliza promedios móviles para determinar la dirección de la tendencia y utiliza el rango verdadero promedio para establecer paradas. Puede rastrear efectivamente las tendencias. Pero hay ciertos riesgos, y se necesita una mayor optimización de la configuración de parámetros y la adición de otros indicadores de juicio. En general, esta estrategia proporciona un enfoque viable para el seguimiento de tendencias.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //2019 //Noro //@version=4 strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") len = input(30, minval = 2, title = "MA Length") src = input(ohlc4, title = "MA Source") limitmode = input(false) 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 + BG atr = sma(tr, len) * 2 ma = sma(src, len) plot(ma, color = color.blue, linewidth = 4) trend = 0 trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1] col = trend == 1 ? color.lime : color.red bgcolor(col, transp = 70) //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if trend == 1 and limitmode == false strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if trend == -1 and limitmode == false strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if trend == 1 and limitmode strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if trend == -1 and limitmode strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) // if time > timestamp(toyear, tomonth, today, 23, 59) // strategy.close_all()