Williams
A estratégia utiliza três SMAs de diferentes comprimentos de período - linha rápida sma1, linha média sma2 e linha lenta sma3, onde sma1 tem o período mais curto e sma3 tem o mais longo.
Quando o sma1 cruza acima do sma2 e o sma2 cruza acima do sma3, isso indica que o mercado está em uma tendência ascendente e forma uma boca de jacaré ascendente.
Por outro lado, quando o sma1 cruza abaixo do sma2 e o sma2 cruza abaixo do sma3, indica que o mercado está numa tendência descendente e forma uma boca de jacaré descendente.
A condição de saída é quando as três linhas se realinham, com a linha rápida abaixo da linha média ou a linha média abaixo da linha lenta.
A estratégia também desenha cores de fundo para identificar a direção da tendência - verde para tendência ascendente e vermelho para tendência descendente.
Em resumo, a estratégia utiliza os pontos fortes das médias móveis e padrões de boca de jacaré para determinar a direção da tendência e negociar em conformidade.
Para fazer face aos riscos, podem ser feitas as seguintes melhorias:
Adicione um filtro de tendência para evitar falhas nos mercados variáveis.
Otimizar as condições de saída utilizando indicadores de tendência.
Adicionar estratégia de stop loss para controlar a perda de uma única negociação.
Utilize médias móveis adaptativas para que os períodos se ajustem dinamicamente.
A estratégia pode ser ainda melhorada nos seguintes aspectos:
Adicione o filtro de força da tendência para evitar uma entrada prematura em tendências fracas.
Otimizar os períodos de média móvel para encontrar as melhores combinações através de backtesting.
Usar médias móveis adaptativas para que os períodos se adaptem com base no momento do mercado.
Adicione estratégias de stop loss como trailing stop loss, saldo da conta stop loss para controlar os riscos.
Melhorar as condições de entrada usando volume, Bandas de Bollinger, etc. para aumentar a precisão.
Melhorar as condições de saída julgando a probabilidade de reversão da tendência com indicadores quando as linhas se cruzam.
A estratégia Williams
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=3 strategy(title = "Noro's Alligator Strategy by Bill Williams", shorttitle = "Alligator", 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 = "Lot") len1 = input(50, defval = 50, minval = 1, title = "MA 1 Length") len2 = input(100, defval = 100, minval = 1, title = "MA 2 Length") len3 = input(200, defval = 200, minval = 1, title = "MA 3 Length") src = input(close, title = "Source") showbg = input(false, title = "Show Background") 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") //MAs sma1 = sma(src, len1) sma2 = sma(src, len2) sma3 = sma(src, len3) plot(sma1, color = lime, linewidth = 2) plot(sma2, color = blue, linewidth = 2) plot(sma3, color = red, linewidth = 2) //Signals up = sma1 > sma2 and sma2 > sma3 dn = sma1 < sma2 and sma2 < sma3 //Background trend = 0 trend := up ? 1 : dn ? -1 : trend[1] col = showbg == false ? na : trend == 1 ? lime : red bgcolor(col) //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn strategy.entry("Short", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()