
A estratégia de Williams é uma estratégia de acompanhamento de tendências que usa a forma de uma caixa de peixes formada por médias móveis de três períodos diferentes para determinar a direção da tendência. Quando a linha rápida é superior à linha média, a linha média é superior à linha lenta, formando uma caixa de peixes de tendência ascendente, faça mais; Quando a linha rápida é inferior à linha média, a linha média é inferior à linha lenta, formando uma caixa de peixes de tendência descendente, faça vazio.
A estratégia usa uma média móvel SMA de três comprimentos de ciclo diferentes, a linha rápida sma1, a linha média sma2 e a linha lenta sma3. Destes, a sma1 é a mais curta e a sma3 a mais longa.
Quando uma SMA1 passa por uma SMA2 e uma SMA2 passa por uma SMA3, o mercado está em uma tendência ascendente, formando uma abertura ascendente. De acordo com a teoria da negociação de tendências, é necessário entrar mais.
Por outro lado, quando o sma1 atravessa o sma2 e o sma2 atravessa o sma3, o mercado está em uma tendência de queda, formando uma boca de peixe de queda, e deve ser fechado.
As condições de saída de over e short são rearranjadas em três linhas de equilíbrio, com a linha rápida abaixo da linha média ou a linha média abaixo da linha lenta.
A estratégia também traça as cores de fundo para identificar a direção da tendência, com o verde representando uma tendência ascendente e o vermelho representando uma tendência descendente.
Em geral, a estratégia usa a vantagem da média móvel para determinar a direção da tendência com a forma de uma cauda de um tubarão e entrar em ação, uma estratégia de acompanhamento de tendência mais típica.
Os riscos acima mencionados podem ser melhorados através das seguintes medidas:
Aumentar as condições de filtragem de tendências para evitar a abertura frequente de posições em mercados de turbulência.
Optimizar as condições de saída, combinando indicadores de tendência para determinar a hora de fechar a posição.
Aumentar as estratégias de stop loss e controlar as perdas individuais.
Utilize as médias móveis adaptáveis para ajustar a dinâmica de energia do ciclo.
A estratégia pode ser melhorada em alguns aspectos:
Aumentar o julgamento de tendências fortes e fracas, evitando a entrada prematura de tendências estáveis ou oscilantes. Pode-se introduzir julgamentos auxiliares, como MACD, KDJ.
Optimizar os parâmetros de média móvel para encontrar a melhor combinação. O parâmetro ótimo pode ser encontrado por meio da retrospecção de parâmetros de múltiplos grupos.
Utilizando as médias móveis adaptáveis, o ciclo pode se adaptar às mudanças de mercado.
Aumentar as estratégias de parada de perdas, como a parada de rastreamento e a parada de saldo, para controlar o risco.
Otimizar as condições de admissão, pode considerar o volume de transações, filtragem de indicadores como a faixa de Brin para melhorar a precisão da admissão.
Otimizar as condições de saída, combinando indicadores de tendência para determinar a probabilidade de reversão da tendência no cruzamento da linha três, reduzindo o risco de saída.
A estratégia de Williams é uma estratégia típica de acompanhamento de tendências. Ela forma a direção da tendência através de três médias móveis rápidas e lentas para determinar a direção da tendência. A estratégia tem como vantagem a lógica de negociação simples e clara, fácil de operar; a desvantagem é a fraca capacidade de precisão de determinação de tendências e controle de risco.
/*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()