
Стратегия Вильямса-Коркера - это стратегия отслеживания тенденций, которая использует форму рыбьего паука, сформированную с помощью движущихся средних трех различных периодов, для определения направления тенденции. Когда быстрая линия выше средней, средняя линия выше медленной, образуется рыбьего паука в восходящем тренде, делая больше; когда быстрая линия ниже средней, средняя линия ниже медленной, образуется рыбьего паука в нисходящем тренде, делая пустоту.
Эта стратегия использует SMA с тремя различными длинами циклов, а именно быстрый sma1, средний sma2 и медленный sma3. Из них sma1 имеет самый короткий период, а sma3 - самый длинный.
Когда sma1 наносит sma2, а sma2 наносит sma3, это указывает на то, что рынок находится в восходящей тенденции, формируя восходящие рыбные норы, в соответствии с теорией трендового трейдинга, в это время следует сделать больше.
Наоборот, когда sma1 попадает под sma2, а sma2 попадает под sma3, это указывает на то, что рынок находится в нисходящей тенденции, образуя нисходящий рыбный рот, в который следует входить в свободное место.
Выходные условия с опережающим и пустым выходом перестраиваются в три равномерных линии, где быстрая линия ниже средней или средняя линия ниже медленной, в этом случае следует уравнять позиции.
Стратегия также отображает фоновые цвета, чтобы обозначить направление тренда, зеленый - восходящий тренд, красный - нисходящий.
В целом, эта стратегия использует преимущества движущихся средних, чтобы определить направление тренда в форме рыбьего рта, и вступает в строй, что является более типичной стратегией отслеживания тренда.
В связи с вышеуказанными рисками можно принять следующие меры для дальнейшей оптимизации:
Повышение условий для фильтрации тенденций, чтобы избежать частого открытия позиций на рынке во время колебаний.
Оптимизируйте условия выхода из игры, используя трендовые индикаторы, чтобы определить, когда пора закрыть позицию.
Добавление стратегий по сдерживанию убытков и борьба с единичными потерями.
Использование адаптивных скользящих средних для динамической корректировки цикла.
Эта стратегия может быть улучшена в следующих аспектах:
Увеличение сильных и слабых суждений о тенденции, избегание преждевременного входа в устойчивую или колебательную тенденцию. Могут быть введены вспомогательные суждения, такие как MACD, KDJ и т. Д.
Оптимизируйте циклические параметры скользящих средних, чтобы найти оптимальные комбинации. Оптимальные параметры можно найти, отслеживая множественные параметры.
Использование адаптивных скользящих средних, чтобы циклы могли адаптироваться к изменениям в соответствии с динамикой рынка.
Добавление стратегий по прекращению убытков, таких как отслеживание убытков, остаточные убытки и т. д., для контроля риска.
Оптимизация условий поступления, фильтрация показателей, таких как количество поступлений, брин-пояса, повышение точности поступления.
Оптимизация условий выхода, в сочетании с индикатором тренда при перекрестке трех линий, чтобы определить вероятность обратного тренда и снизить риск выхода.
Стратегия Вильямса-Коркера является типичной стратегией отслеживания тенденций. Она формирует направление для определения тенденции через три скользящих средних скорости и медленности. Преимущества этой стратегии заключаются в том, что логика торговли проста и понятна, и ее легко использовать.
/*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()