Сила тренда Подтвердите стратегию бар

Автор:Чао Чжан, Дата: 2024-01-16 15:22:53
Тэги:

img

Обзор: Эта стратегия определяет направление тренда на основе направления ценового закрытия N последовательных свечей. Торговые сигналы генерируются, когда цены закрытия N последовательных свечей соответствуют условию. Размер N устанавливается параметром ввода confirmBars. Эта стратегия в основном использует направление ценового закрытия N последовательных свечей для определения силы тренда. Больший N требует большего количества свечей для подтверждения тренда, что может фильтровать ложные прорывы, но также может пропустить раннюю стадию тренда.

Принцип:
Стратегия отслеживает взаимосвязь между ценой закрытия последней свечи и предыдущей, чтобы судить о силе роста и падения цен. В частности, она определяет две переменные bcount и scount для записи числа последовательных цен закрытия свечи, которые растут и падают.

Когда bcount достигает значения, установленного confirmBars, это означает, что цены закрытия последовательных свечей confirmBars выросли, генерируя сигнал покупки. Когда scount достигает значения, установленного confirmBars, это означает, что цены закрытия последовательных свечей confirmBars упали, генерируя сигнал продажи.

Судя по направлению цен закрытия нескольких последовательных свечей, краткосрочные колебания рынка могут быть эффективно отфильтрованы, и торговые сигналы генерируются только при тенденциях относительно большой силы.

Анализ преимуществ:

  1. Эффективно фильтруйте шум и подтверждайте тенденции
    Эта стратегия требует, чтобы последовательные N свечей закрывали цены, чтобы соответствовать условиям перед генерацией торговых сигналов. Это отфильтровывает влияние нормальных колебаний рынка на торговлю и гарантирует, что позиции открываются только при сильных тенденциях.

  2. Параметры регулируемой прочности фильтрации С помощью регулирования размера параметра confirmBars можно контролировать силу фильтрации колебаний цен. Более крупные параметры имеют лучший эффект фильтрации шума, но также могут упустить возможности раннего тренда.

Анализ рисков:

  1. Может упустить первые возможности для развития Стратегия требует, чтобы несколько последовательных свечей закрывали цены, чтобы удовлетворить условия, прежде чем генерировать сигналы, поэтому она часто упускает ранние трендовые возможности и не может своевременно отслеживать тенденции.

  2. Склонность к прекращению потерь Когда количество подтверждений confirmBars установлено слишком большим, легко быть введены в заблуждение обратными краткосрочными линиями на ранней стадии тренда, что приводит к прорывам стоп-лосса.

Направления оптимизации:

  1. Профильтруйте поддельные прорывы с помощью других показателей
    Другие технические индикаторы, такие как полосы Боллинджера и RSI, могут быть использованы для выполнения вторичной фильтрации сигналов купли и продажи, чтобы уменьшить вероятность поддельных прорывов.

  2. Динамическое регулирование параметров Попробуйте динамически регулировать параметр 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")

Больше