
Описание: Стратегия определяет направление тренда путем определения направления ценовых сбоев на последовательных N-корневых K-линиях, и генерирует торговый сигнал, когда соответствуют требованиям ценовых сбоев на последовательных N-корневых K-линиях. Размер N определяется вводом параметров confirmBars. Стратегия использует в основном направление ценовых сбоев на последовательных N-корневых K-линиях для определения интенсивности тренда.
Принцип: Стратегия определяет силу роста или падения цены, отслеживая соотношение величины цены закрытия последней K-линии к цене закрытия предыдущей K-линии. В частности, она определяет два переменных bcount и scount, которые записывают последовательные росты цены закрытия и последовательные падения цены закрытия.
Когда bcount достигает значения, установленного для confirmBars, это означает, что цена заканчивается на линии K, основанной на последовательном confirmBars, и это вызывает сигнал покупки. Когда scount достигает значения, установленного для confirmBars, это означает, что цена заканчивается на линии K, основанной на последовательном confirmBars, и это вызывает сигнал продажи.
Таким образом, можно эффективно отфильтровывать шум от краткосрочных колебаний рынка, определяя направление ценовых закрытий на нескольких последовательных корнях K-линий, и создавать торговые сигналы только при более сильных тенденциях.
Анализ силы:
Эффективная фильтрация шума, подтверждающая тенденцию Стратегия требует, чтобы торговый сигнал был получен только при условии, что последовательные N-корневые и K-корневые цены закрытия соответствуют условиям, и может отфильтровывать влияние на торговлю обычных рыночных колебаний, гарантируя открытие позиций только при более сильных тенденциях.
Параметры регулируют фильтрацию Изменение параметров confirmBars позволяет контролировать силу фильтрации ценовых колебаний. Чем больше параметры, тем лучше фильтрация шума, но также легче упустить первые шансы на тренд.
Анализ рисков:
Возможно, мы упустили возможность в начале тренда Стратегия требует, чтобы последовательное множество K-линейных закрытий соответствовали для получения сигнала, поэтому часто пропускается первоначальный шанс на тренд и невозможно вовремя отследить тренд.
Легко преодолеть потери При установке слишком большого количества ConfirmBars в начале тренда они легко могут быть введены в заблуждение обратной короткой линией, что приводит к тому, что стоп-потери могут быть нарушены.
Направление оптимизации:
В сочетании с другими показателями фильтрация ложных прорывов В сочетании с другими техническими показателями, такими как Brinband, RSI и т. д., можно проводить вторичную фильтрацию сигналов о покупке и продаже, чтобы уменьшить вероятность ложного прорыва.
Динамические параметры настройки Также можно попытаться изменить параметры ConfirmBars в зависимости от динамики рынка, увеличивая параметры при рыночных колебаниях, отфильтровывая шум; а уменьшая параметры, когда тенденция очевидна, отслеживая тенденцию.
В заключение: Эта стратегия эффективно снижает ошибочные сделки, вызванные краткосрочными рыночными колебаниями, и выдает торговые сигналы только тогда, когда тенденция очевидна. Настраивая размер параметров ConfirmBars, пользователь может самостоятельно сбалансировать связь между эффектом фильтрации и возможностью захвата тренда. Однако эта стратегия легко останавливается в начале тренда и не может постоянно отслеживать тренд.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Confirm Bars Strategy [TS Trader]", overlay=true)
confirmBars = input(1)
// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)
startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)
inBacktestRange = true
// === STRATEGY LOGIC ===
bcount = 0
bcount := close[1] < close ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
strategy.entry("Buy", strategy.long, comment="Long")
scount = 0
scount := close[1] > close ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
strategy.entry("Sell", strategy.short, comment="Short")