
Данная стратегия представляет собой торговую систему, основанную на тренде, которая объединяет индикатор Supertrend с адаптивной скользящей средней Кауфмана (KAMA). Стратегия динамически определяет изменения рыночных тенденций, ищет долгосрочные возможности в восходящем тренде и использует гибкий механизм стоп-лосса для контроля рисков. Основная идея стратегии заключается в использовании способности индикатора Supertrend оценивать направление тренда в сочетании с адаптивными характеристиками индикатора KAMA к колебаниям рынка для установления длинных позиций в восходящем тренде рынка.
Стратегия использует систему подтверждения с двумя техническими индикаторами. Сначала индикатор Supertrend рассчитывает направление тренда через ATR и пользовательский коэффициент. Когда линия индикатора находится ниже цены, это указывает на восходящий тренд. Во-вторых, индикатор KAMA регулирует чувствительность скользящей средней с помощью адаптивного механизма, который может лучше адаптироваться к различным рыночным условиям. Сигнал на вход должен соответствовать двум условиям одновременно: Supertrend указывает на восходящий тренд и цена находится выше линии KAMA. Аналогично, сигнал на выход также требует двойного подтверждения: Супертренд превращается в нисходящий тренд, и цена падает ниже линии КАМА. Этот механизм двойного подтверждения эффективно снижает влияние ложных сигналов.
Эта стратегия создает надежную торговую систему, основанную на тренде, путем объединения двух технических индикаторов: Supertrend и KAMA. Основными преимуществами стратегии являются ее адаптивность и возможности контроля рисков, а надежность торговых сигналов повышается за счет механизма двойного подтверждения. Хотя на нестабильном рынке могут возникнуть некоторые проблемы, общую эффективность стратегии можно улучшить за счет разумной настройки параметров и внедрения направлений оптимизации. Эта стратегия особенно подходит для средне- и долгосрочной трендовой торговли и показывает лучшие результаты в рыночной среде с четкими тенденциями.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Supertrend + KAMA Long Strategy", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)
// User-defined inputs for date range
startDate = input(timestamp("2018-01-01 00:00:00"), title="Start Date")
endDate = input(timestamp("2069-12-31 23:59:59"), title="End Date")
inDateRange = true
// Inputs for KAMA and Supertrend
kamaLength = input.int(21, title="KAMA Length", minval=1)
atrPeriod = input.int(10, title="Supertrend ATR Length", minval=1)
factor = input.float(3.0, title="Supertrend Factor", minval=0.01, step=0.01)
//------------------------- Kaufman Moving Average Adaptive (KAMA) -------------------------
xPrice = close
xvnoise = math.abs(xPrice - xPrice[1])
Length = kamaLength
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(xPrice - xPrice[Length])
float nnoise = 0.0
for i = 0 to Length - 1
nnoise := nnoise + xvnoise[i]
nefratio = nnoise != 0.0 ? nsignal / nnoise : 0.0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
var float nAMA = na
nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
plot(nAMA, color=color.blue, linewidth=2, title="Kaufman KAMA")
//------------------------- Supertrend Calculation -------------------------
[stValue, dirValue] = ta.supertrend(factor, atrPeriod)
upTrend = dirValue < 0
downTrend = dirValue >= 0
plot(dirValue < 0 ? stValue : na, "Up Trend", color=color.green, style=plot.style_linebr)
plot(dirValue >= 0 ? stValue : na, "Down Trend", color=color.red, style=plot.style_linebr)
//------------------------- Strategy Logic -------------------------
// Entry condition: Supertrend is in uptrend AND price is above KAMA
canLong = inDateRange and upTrend and close > nAMA
// Exit condition (Take Profit): Supertrend switches to downtrend AND price is below KAMA
stopLoss = inDateRange and downTrend and close < nAMA
if canLong
strategy.entry("Long", strategy.long)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal)
if stopLoss
strategy.close("Long", comment="Stop Loss")
label.new(bar_index, high, "STOP LOSS", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)
//------------------------- Alerts -------------------------
alertcondition(canLong, title="Long Entry", message="Supertrend + KAMA Long Signal")
alertcondition(stopLoss, title="Stop Loss", message="Supertrend switched to Downtrend and Price below KAMA")