Стратегия захвата тройного резонанса

WT CRSI LSDD
Дата создания: 2025-10-09 14:09:21 Последнее изменение: 2025-10-09 14:09:21
Копировать: 0 Количество просмотров: 212
2
Подписаться
319
Подписчики

Стратегия захвата тройного резонанса Стратегия захвата тройного резонанса

Три индикатора должны сигнализировать одновременно в пределах двух K-линий, в противном случае не будет никаких переговоров.

Это не обычная мультииндикаторная стратегия. Комбинация WaveTrend + Connors RSI + линейный отклонение от отклонения заключается в синхронизации окон: все сигналы покупки должны появляться в пределах 2 K-линий, а отдельные сигналы игнорируются.

Традиционные стратегии либо создают шум, когда каждый показатель рассматривается отдельно, либо требуют одновременного запуска большого количества пропущенных возможностей. Эта стратегия находит баланс: допустимое окно K-линий гарантирует релевантность сигнала и избегает слишком строгих требований к синхронизации.

WaveTrend настраивается на линию сверхпродажи -48, более чувствительную, чем стандартный RSI

Длина WT устанавливается на 10 циклов, сверхпродажная линия - 48, сверхпокупаемая линия - 48. Эта комбинация параметров более радикальна, чем традиционная RSI 3070, и может быстрее улавливать сигналы об обратном движении цены. Преимущество WT заключается в том, что он сочетает в себе положение цены и волатильность, и более надежен, чем просто RSI, в условиях колебаний.

Ключевой момент в том, как WT рассчитывает:*Эта формула имеет естественную функцию корректировки волатильности. Когда рыночная волатильность усиливается, дифференциал увеличивается, и значение WT остается относительно стабильным, избегая искажения обычного RSI во время высокой волатильности.

Connors RSI тройной проверки, 2080 отклонения настроены на глубокое намерение

CRSI отличается от обычного RSI, который сочетает в себе RSI цены, RSI последовательности падений и процентный рейтинг изменения цены. Низкий предел 20 является более радикальным, чем традиционный 30, но механизм тройной проверки CRSI снижает вероятность ложных сигналов.

6 циклов RSI настроены на короткую длину, чтобы повысить чувствительность сигнала. На 15-минутном уровне 6 циклов эквивалентны 1,5 часам ценной памяти, чтобы не задерживаться и не задерживать краткосрочные перепродажи. Этот параметр особенно эффективен для 24-часовой торговли BTC.

Линейное регрессивное отклонение LSDD, 20 циклов поймания трендовых поворотов

LSDD = текущая цена - линейная регрессия, показывающая, что цена начинает отклоняться от нисходящей трендовой линии, когда LSDD проходит по 0-й оси. Настройка на 20 циклов, которая охватывает 5 часов на 15-минутном графике, позволяет эффективно идентифицировать изменения в краткосрочной тенденции.

Индикатор отличается тем, что он не просто следит за тенденцией, а измеряет отклонение от тенденции. Когда цена после длительного падения начинает отклоняться от обратной линии вверх, это часто предвещает начало отскока. В сочетании с сигналом перепродажи WT и CRSI образуется двойное подтверждение “перепродажи + трендовый поворот”.

Только сделайте больше головы, 30% позиции, 1 двойная пирамида

Стратегия разработана как чисто многоголовая, с 30% капитала за каждое открытие позиции, позволяющая 1 пополнение позиции. Такая настройка подходит для долгосрочной восходящей тенденции криптовалюты, одновременно управляя риском с помощью контроля позиции. Одиночные позиции в 30% позволяют получить достаточную прибыль и избежать чрезмерного риска от одной сделки.

Условия выхода также строгие: WT перекупа ((>48) AND CRSI перекупа ((>80) AND LSDD переутомление, три условия должны быть удовлетворены одновременно. Такая конструкция обеспечивает целостность трендовых сделок, избегая преждевременного выхода из игры.

15 минут BTC оптимизирует обратный отсчет, но следует обратить внимание на рыночные условия

Стратегия хорошо работает в 15-минутных отзывах на BTC, но это не означает, что она работает во всех рыночных условиях. В поперечных рыночных колебаниях, даже тройное подтверждение может привести к большему количеству ложных сигналов.

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

Исходный код стратегии
/*backtest
start: 2024-10-09 00:00:00
end: 2025-10-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":500000}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alescha13
// WT + CRSI + Linear Regression Long-only Strategy
// Description: 
// This long-only trading strategy combines WaveTrend (WT), 
// Connors RSI (CRSI), and a Linear Regression Slope (LSDD) trend filter.
// Signals are generated only when all three indicators align within a defined window.
// Exits occur when all indicators turn bearish.
// Backtested on BTC with 15-minute timeframe.

strategy("WT + CRSI + Linear Regression Long-only © alescha13", 
     overlay=true, 
     initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=30, 
     pyramiding=1, 
     calc_on_every_tick=false, 
     process_orders_on_close=true)

// =====================
// Inputs
// =====================
wtLength        = input.int(10, "WT Length")
wtOversold      = input.int(-48, "WT Oversold Level")
wtOverbought    = input.int(48, "WT Overbought Level")

crsiRSILength   = input.int(6,  "CRSI RSI Length")
crsiOversold    = input.int(20, "CRSI Oversold Level")
crsiOverbought  = input.int(80, "CRSI Overbought Level")

lsddLen         = input.int(20, "Linear Regression Length")

windowSize      = input.int(2, "Window size (bars) for all signals", minval=1)

// =====================
// Helper: CRSI Function
// =====================
updown(s) =>
    isEqual = s == s[1]
    isGrowing = s > s[1]
    ud = 0.0
    ud := isEqual ? 0 : isGrowing ? (nz(ud[1]) <= 0 ? 1 : nz(ud[1]) + 1) : (nz(ud[1]) >= 0 ? -1 : nz(ud[1]) - 1)
    ud

crsiFunc(src, lenrsi) =>
    lenupdown = 2
    lenroc = 100
    rsi = ta.rsi(src, lenrsi)
    updownrsi = ta.rsi(updown(src), lenupdown)
    percentrank = ta.percentrank(ta.roc(src, 1), lenroc)
    math.avg(rsi, updownrsi, percentrank)

// =====================
// WaveTrend (WT) Calculation
// =====================
ap  = (high + low + close) / 3.0
esa = ta.ema(ap, wtLength)
d   = ta.ema(math.abs(ap - esa), wtLength)
ci  = (ap - esa) / (0.015 * d)
wt  = ta.ema(ci, 3)

wtBull = ta.crossover(wt, wtOversold)
wtBear = wt > wtOverbought

// =====================
// CRSI Calculation
// =====================
crsiValue = crsiFunc(close, crsiRSILength)
crsiBull  = crsiValue < crsiOversold
crsiBear  = crsiValue > crsiOverbought

// =====================
// Linear Regression LSDD Calculation
// =====================
slope = ta.linreg(close, lsddLen, 0)
lsdd = close - slope
lsddBull = ta.crossover(lsdd, 0)
lsddBear = lsdd < 0

// =====================
// Window Logic (Synchronize Signals)
// =====================
var int wtBarIndex   = na
var int crsiBarIndex = na
var int lsddBarIndex = na

if wtBull
    wtBarIndex := bar_index
if crsiBull
    crsiBarIndex := bar_index
if lsddBull
    lsddBarIndex := bar_index

buySignal = false
if not na(wtBarIndex) and not na(crsiBarIndex) and not na(lsddBarIndex)
    maxBar = math.max(wtBarIndex, crsiBarIndex, lsddBarIndex)
    minBar = math.min(wtBarIndex, crsiBarIndex, lsddBarIndex)
    if (maxBar - minBar) <= windowSize
        buySignal := true
        wtBarIndex := na
        crsiBarIndex := na
        lsddBarIndex := na

finalLong = buySignal

// =====================
// Exit Logic
// =====================
sellSignal = wtBear and crsiBear and lsddBear

// =====================
// Entries / Exits
// =====================
if finalLong
    strategy.entry("Long", strategy.long, comment="Long Entry")

if sellSignal
    strategy.close("Long", comment="Long Exit")

// =====================
// Background Color for Signals
// =====================
bgcolor(finalLong ? color.new(color.green, 85) : na)
bgcolor(sellSignal ? color.new(color.red, 85) : na)

// =====================
// Plots
// =====================
plot(wt, color=color.new(color.blue, 0), title="WT")
plot(crsiValue, color=color.new(color.purple, 0), title="CRSI")
plot(lsdd, color=color.new(color.orange, 0), title="LSDD")

plotshape(finalLong, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// =====================
// Alerts
// =====================
alertcondition(finalLong, title="Long Alert", message="WT + CRSI + LSDD Long Signal")
alertcondition(sellSignal, title="Exit Alert", message="WT + CRSI + LSDD Exit Signal")