Стратегия отслеживания перекрестного тренда с несколькими индикаторами в сочетании с коррекцией Фибоначчи и системой оптимизации стоп-профита и стоп-лосса

EMA FIBO TP/SL Trend
Дата создания: 2025-02-20 16:43:42 Последнее изменение: 2025-02-20 16:43:42
Копировать: 1 Количество просмотров: 387
2
Подписаться
319
Подписчики

Стратегия отслеживания перекрестного тренда с несколькими индикаторами в сочетании с коррекцией Фибоначчи и системой оптимизации стоп-профита и стоп-лосса Стратегия отслеживания перекрестного тренда с несколькими индикаторами в сочетании с коррекцией Фибоначчи и системой оптимизации стоп-профита и стоп-лосса

Обзор

Стратегия представляет собой комплексную торговую систему, которая сочетает в себе пересечение индексальных скользящих средних (EMA), уровней фибоначевых отклонений, определение тренда и механизм стоп-стоп. Стратегия определяет торговый сигнал через пересечение 9-циклических и 21-циклических ЭМА, а также сочетает в себе уровни фибоначевых отклонений для оптимизации входных точек и повышения точности торговли с помощью мониторинга состояния тренда в реальном времени. Система также включает в себя процентные стоп-стопы, эффективно контролируя риск.

Стратегический принцип

Основная логика стратегии основана на следующих ключевых элементах:

  1. Когда быстрая EMA (цикл 9) проходит вверх через медленную EMA (цикл 21), система генерирует многосигнал
  2. Система генерирует пустоту, когда быстрая ЭМА пересекает медленную ЭМА вниз
  3. Вычислив максимальные и минимальные цены за 100 циклов, можно получить уровни Фибоначчи 23,6%, 38,2%, 50% и 61,8%
  4. Судить о текущем состоянии тренда по отношению к позиции закрытия к быстрой EMA
  5. При исполнении сделки система автоматически устанавливает фиксированный процентный стоп-лимит ((4%) и стоп-лосс ((2%)

Стратегические преимущества

  1. Многомерное подтверждение сигнала: более надежный торговый сигнал в сочетании с пересечением EMA, уровнем Фибоначчи и состоянием тренда
  2. Управление рисками: автоматизированный контроль риска с помощью заранее установленного стоп-стоп-лосс процента
  3. Умение отслеживать тенденции: EMA использует перекрестное определение состояния тренда, чтобы эффективно улавливать тенденции рынка
  4. Четкая визуальная обратная связь: с помощью ярлыков, отображающих ключевые уровни цен, трендовые состояния и торговые сигналы, для облегчения принятия торговых решений
  5. Высокий уровень систематизации: четкая логика торговли, снижение помех субъективным суждениям

Стратегический риск

  1. Риск колебания рынка: частые перекрестные ЭМА могут привести к ложным сигналам на этапе поперечной сверки
  2. Риск отставания: скользящие средние по своей сути являются отстающими показателями, которые могут пропустить лучший момент входа в игру
  3. Риск фиксированного стоп-убытка: заданный фиксированный процент стоп-убытка может не подходить для всех рыночных условий
  4. Риск конфликтных сигналов: возможны конфликтные сигналы между несколькими показателями, что может затруднить принятие решений
  5. Риск рыночных колебаний: сильные колебания могут привести к необоснованным остановкам

Направление оптимизации стратегии

  1. Динамическая стоп-оптимизация: можно динамически регулировать стоп-дистанцию в зависимости от ATR или рыночной волатильности
  2. Усиление фильтрации сигналов: увеличение количества перевозок, мощности и других вспомогательных показателей для фильтрации ложных сигналов
  3. Параметры адаптируются: внедряется механизм адаптации, который динамично корректирует циклы EMA в соответствии с состоянием рынка
  4. Оптимизация входа: оптимизация входа около уровня Фибоначчи в сочетании с ценовой структурой и объемом сделок
  5. Усовершенствование управления позициями: динамическая система управления позициями, разработанная на основе волатильности и риска счета

Подвести итог

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

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

//@version=5
strategy("EMA Cross Strategy with TP, SL, Fibonacci Levels, and Trend", overlay=true)

// Input for stop loss and take profit percentages
stopLossPercentage = input.int(2, title="Stop Loss (%)") // Stop loss percentage
takeProfitPercentage = input.int(4, title="Take Profit (%)") // Take profit percentage

// EMA Length Inputs
fastEMALength = input.int(9, title="Fast EMA Length")
slowEMALength = input.int(21, title="Slow EMA Length")

// Compute EMAs
fastEMA = ta.ema(close, fastEMALength)
slowEMA = ta.ema(close, slowEMALength)

// Entry conditions for EMA crossover
longCondition = ta.crossover(fastEMA, slowEMA)  // EMA 9 crosses above EMA 21
shortCondition = ta.crossunder(fastEMA, slowEMA) // EMA 9 crosses below EMA 21

// Plot EMAs
plot(fastEMA, color=color.blue, title="Fast EMA (9)")
plot(slowEMA, color=color.red, title="Slow EMA (21)")

// Fibonacci Retracement Levels
lookback = input.int(100, title="Lookback Period for Fibonacci Levels")
highLevel = ta.highest(high, lookback)
lowLevel = ta.lowest(low, lookback)

fib236 = lowLevel + (highLevel - lowLevel) * 0.236
fib382 = lowLevel + (highLevel - lowLevel) * 0.382
fib50 = lowLevel + (highLevel - lowLevel) * 0.5
fib618 = lowLevel + (highLevel - lowLevel) * 0.618

// Display Fibonacci levels (Left of the candle near price)
label.new(bar_index, fib236, text="Fib 23.6%: " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.purple, textcolor=color.white, size=size.small)
label.new(bar_index, fib382, text="Fib 38.2%: " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)
label.new(bar_index, fib50, text="Fib 50%: " + str.tostring(fib50, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
label.new(bar_index, fib618, text="Fib 61.8%: " + str.tostring(fib618, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)

// Trend condition: Price uptrend or downtrend
trendCondition = close > fastEMA ? "Uptrending" : close < fastEMA ? "Downtrending" : "Neutral"

// Display Trend Status (Left of candle near price)
var label trendLabel = na
if (not na(trendLabel))
    label.delete(trendLabel)
trendLabel := label.new(bar_index, close, text="Trend: " + trendCondition, style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)

// Buy and Sell orders with Stop Loss and Take Profit
if (longCondition)
    stopLossLevel = close * (1 - stopLossPercentage / 100)
    takeProfitLevel = close * (1 + takeProfitPercentage / 100)
    strategy.entry("BUY", strategy.long)
    strategy.exit("Sell", "BUY", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Buy label (Left of candle near price)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index, close, text="BUY\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)

if (shortCondition)
    stopLossLevel = close * (1 + stopLossPercentage / 100)
    takeProfitLevel = close * (1 - takeProfitPercentage / 100)
    strategy.entry("SELL", strategy.short)
    strategy.exit("Cover", "SELL", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Sell label (Left of candle near price)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index, close, text="SELL\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.orange, textcolor=color.white, size=size.small)

// Plot Buy/Sell Signals
plotshape(series=longCondition, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")