Esta estratégia é uma estratégia de ruptura de tendência baseada no indicador ATR. Sua ideia principal é tomar negociações de ruptura de tendência quando o preço excede um certo múltiplo de ATR. A estratégia também inclui confirmação de tendência e limitação de negociações dentro de intervalos de datas.
A estratégia usa o indicador ATR para medir a volatilidade dos preços. ATR significa Average True Range e mede a volatilidade média ao longo de um período. O parâmetro de comprimento na estratégia calcula o período ATR e numATRs representa o multiplicador ATR para a quebra.
Quando o preço ultrapassa o múltiplo numATRs superior do ATR, é tomada uma posição longa.
Além disso, a estratégia inclui as variáveis bool needlong e needshort para controlar apenas as transações longas ou apenas curtas.
A estratégia utiliza uma variável de tamanho para determinar o tamanho da posição e calcula o tamanho da ordem com base na percentagem do capital da conta.
Utiliza o ATR para se adaptar automaticamente à volatilidade do mercado sem a necessidade de ajustes manuais de lucro/perda.
Flexível para escolher longo, curto ou apenas longo/curto.
Pode definir intervalos de datas para evitar negociações em eventos importantes.
A classificação flexível das posições baseia-se na percentagem do capital próprio da conta.
O ATR considera apenas a volatilidade dos preços. Pode ter stop loss insuficiente durante grandes oscilações de mercado. Outros indicadores podem ser combinados.
Os limites de intervalo de datas podem perder oportunidades se não houver uma boa configuração antes/depois.
A redução da percentagem de participação corre o risco de grandes perdas em transacções individuais.
Adicionar médias móveis para o filtro de tendência para reduzir o ruído falso das negociações de ruptura.
Teste os períodos de ATR para encontrar parâmetros ideais.
Combinar com outras estratégias para utilizar os pontos fortes e melhorar a estabilidade.
Esta é uma tendência compreensível após a estratégia usando ATR para se adaptar à volatilidade. A otimização de parâmetros e a combinação com outras estratégias podem melhorar ainda mais o desempenho e a estabilidade.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") length = input(5) numATRs = input(0.75) 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") //Indicator atrs = sma(tr, length) * numATRs //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[length])) and needlong strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needlong == false strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort == false strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))