Williams
La estrategia utiliza tres SMAs de diferentes longitudes de período: línea rápida sma1, línea media sma2 y línea lenta sma3, donde sma1 tiene el período más corto y sma3 tiene el más largo.
Cuando sma1 cruza encima de sma2 y sma2 cruza encima de sma3, indica que el mercado está en una tendencia al alza y forma una boca de caiman al alza.
Por el contrario, cuando sma1 cruza por debajo de sma2 y sma2 cruza por debajo de sma3, indica que el mercado está en una tendencia a la baja y forma una boca de caimán a la baja.
La condición de salida es cuando las tres líneas se vuelven a alinear, con la línea rápida por debajo de la línea media o la línea media por debajo de la línea lenta.
La estrategia también dibuja colores de fondo para identificar la dirección de la tendencia: verde para tendencia alcista y rojo para tendencia bajista.
En resumen, la estrategia utiliza las fortalezas de las medias móviles y los patrones de boca de caimán para determinar la dirección de la tendencia y el comercio en consecuencia.
Para hacer frente a los riesgos, se pueden realizar las siguientes mejoras:
Añadir un filtro de tendencia para evitar los golpes en los mercados variados.
Optimizar las condiciones de salida utilizando indicadores de tendencia.
Añadir una estrategia de stop loss para controlar la pérdida de una sola operación.
Utilice promedios móviles adaptativos para que los períodos se ajusten dinámicamente.
La estrategia se puede optimizar aún más en los siguientes aspectos:
Añadir un filtro de fuerza de tendencia para evitar una entrada prematura en tendencias débiles.
Optimizar los períodos de promedio móvil para encontrar las mejores combinaciones mediante backtesting.
Utilice promedios móviles adaptativos para que los períodos se adapten en función del impulso del mercado.
Agregue estrategias de stop loss como el trailing stop loss, el balance de cuenta stop loss para controlar los riesgos.
Mejorar las condiciones de entrada utilizando volumen, bandas de Bollinger, etc. para aumentar la precisión.
Mejorar las condiciones de salida al juzgar la probabilidad de reversión de tendencia con indicadores cuando las líneas se cruzan.
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()