Esta estratégia utiliza a média móvel e o intervalo verdadeiro médio para determinar a direção da tendência do mercado para a negociação de rastreamento de tendências.
Esta estratégia utiliza a média móvel m de períodos e 2 vezes a média do intervalo real atr de períodos para determinar a tendência do mercado.
Quando a baixa é maior que a média móvel mais a faixa média verdadeira (baixa > ma + atr), é julgada como uma tendência ascendente. Quando o máximo é inferior à média móvel menos a média do intervalo verdadeiro (alto < ma - atr), é julgado como uma tendência descendente.
Em outros casos, o acórdão anterior é mantido.
Quando uma tendência ascendente for determinada, vá longos em uma certa porcentagem quando for permitido ir longos. Quando for determinada uma tendência descendente, vá curto em uma certa percentagem quando for permitido.
A condição final é atingir a data de encerramento da negociação especificada.
As vantagens desta estratégia são as seguintes:
Os principais riscos que esta estratégia enfrenta são os seguintes:
Soluções:
A estratégia pode ser otimizada a partir dos seguintes aspectos:
A ideia geral desta estratégia é clara e fácil de entender. Ela usa médias móveis para determinar a direção da tendência e usa a faixa média verdadeira para definir paradas. Ela pode efetivamente rastrear tendências. Mas há certos riscos, e é necessária uma otimização adicional das configurações de parâmetros e adição de outros indicadores de julgamento. Em geral, esta estratégia fornece uma abordagem viável para a negociação de rastreamento de tendências.
/*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()