Williams
Стратегия использует три SMA различной длины периода - быструю линию sma1, среднюю линию sma2 и медленную линию sma3, где sma1 имеет самый короткий период и sma3 имеет самый длинный.
Когда SMA1 пересекает SMA2 и SMA2 пересекает SMA3, это указывает на то, что рынок находится в восходящей тенденции и образует восходящий аллигаторов рот.
И наоборот, когда SMA1 пересекает ниже SMA2 и SMA2 пересекает ниже SMA3, это указывает на то, что рынок находится в нисходящей тенденции и образует нисходящий аллигаторов рот.
Условие выхода заключается в том, когда три линии перестраиваются, причем быстрая линия находится ниже средней линии или средняя линия ниже медленной линии.
Стратегия также наносит цвета фона для определения направления тренда - зеленый для восходящего и красный для нисходящего.
Подводя итог, стратегия использует сильные стороны скользящих средних и паттернов
Для устранения рисков можно сделать следующие улучшения:
Добавьте трендовый фильтр, чтобы избежать сбоев на рыночных рынках.
Оптимизировать условия выхода с использованием индикаторов тренда.
Добавьте стратегию стоп-лосса для контроля потери на одной сделке.
Используйте адаптивные скользящие средние, чтобы периоды регулировались динамически.
Стратегия может быть дополнительно оптимизирована в следующих аспектах:
Добавьте фильтр силы тренда, чтобы избежать преждевременного входа в слабые тренды.
Оптимизируйте периоды скользящих средних, чтобы найти лучшие комбинации с помощью обратного тестирования.
Используйте адаптивные скользящие средние, чтобы периоды адаптировались в зависимости от динамики рынка.
Добавьте стратегии стоп-лосса, такие как отслеживание стоп-лосса, остаток счета, чтобы контролировать риски.
Улучшить условия входа с использованием объема, полос Боллинджера и т. д. для повышения точности.
Улучшить условия выхода, оценивая вероятность изменения тренда с помощью индикаторов, когда линии пересекаются.
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()