
Стратегия представляет собой торговую систему, основанную на тренде, которая объединяет индикатор Coral Trend с каналом Дончиана. Благодаря точному учету динамики рынка и многократным подтверждениям прорывов тренда ложные сигналы на волатильном рынке эффективно отфильтровываются, что повышает точность торговли. Стратегия использует технологию адаптивной скользящей средней, которая может динамически корректировать параметры в соответствии с рыночными условиями, что позволяет поддерживать стабильную эффективность в различных рыночных условиях.
Основная логика стратегии основана на синергии двух основных показателей:
Когда оба индикатора подтверждают восходящий тренд (coralTrendVal == 1 и donchianTrendVal == 1), система генерирует длинный сигнал; когда оба индикатора подтверждают нисходящий тренд (coralTrendVal == -1 и donchianTrendVal == -1), система генерирует короткий сигнал. Стратегия использует конечный автомат (trendState) для отслеживания текущего состояния тренда и предотвращения дублирования сигналов.
Эта стратегия реализует надежную систему отслеживания тенденций с помощью нескольких механизмов подтверждения тенденций и гибких настроек параметров. Его адаптивный характер и четкая логика сигналов делают его пригодным для различных торговых циклов и рыночных сред. Благодаря рекомендуемым направлениям оптимизации можно еще больше повысить эффективность стратегии. При применении в реальной торговле рекомендуется комбинировать меры по управлению рисками и оптимизировать параметры в соответствии с особенностями конкретных торговых продуктов.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Coral Tides Strategy", shorttitle="CoralTidesStrat", overlay=true)
// === Inputs ===
dlen = input.int(defval=20, title="Donchian Channel Period", minval=10)
coralPeriod = input.int(defval=14, title="Coral Trend Period")
// === Functions ===
// Coral Trend Calculation
coralTrend(period) =>
smooth = (high + low + close) / 3
coral = ta.ema(smooth, period)
trend = 0
trend := close > coral ? 1 : close < coral ? -1 : trend[1]
[trend, coral]
// Donchian Trend Calculation
donchianTrend(len) =>
hh = ta.highest(high, len)
ll = ta.lowest(low, len)
trend = 0
trend := close > hh[1] ? 1 : close < ll[1] ? -1 : trend[1]
trend
// === Trend Calculation ===
[coralTrendVal, coralLine] = coralTrend(coralPeriod)
donchianTrendVal = donchianTrend(dlen)
// === Signal Logic ===
var int trendState = 0
buySignal = false
sellSignal = false
if (coralTrendVal == 1 and donchianTrendVal == 1 and trendState != 1)
buySignal := true
sellSignal := false
trendState := 1
else if (coralTrendVal == -1 and donchianTrendVal == -1 and trendState != -1)
sellSignal := true
buySignal := false
trendState := -1
else
buySignal := false
sellSignal := false
// === Strategy Execution ===
// Entry Signals
if (buySignal)
strategy.entry("Long", strategy.long)
if (sellSignal)
strategy.entry("Short", strategy.short)
// === Plots ===
// Coral Trend Line
plot(coralLine, color=color.green, linewidth=2, title="Coral Trend Line")
// Buy/Sell Signal Labels
if buySignal
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal)
if sellSignal
label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)