Стратегия торговли, основанная на тренде, сочетающая в себе несколько скользящих средних и стохастических индикаторов.

SMA KDJ ATR RSI MACD
Дата создания: 2024-12-27 14:43:30 Последнее изменение: 2024-12-27 14:43:30
Копировать: 3 Количество просмотров: 386
1
Подписаться
1617
Подписчики

Стратегия торговли, основанная на тренде, сочетающая в себе несколько скользящих средних и стохастических индикаторов.

Обзор

Стратегия представляет собой систему торговли, отслеживающую тенденцию, в которой используются множественные движущиеся средние ((SMA) и случайные индикаторы ((KDJ)). Торговля проводится при четкой тенденции рынка путем установления ценовых диапазонов и условий для определения тенденции. Стратегия использует механизм динамического остановки и убытков, который регулирует управление позициями в зависимости от движения рынка, защищает прибыль и не выходит из игры слишком рано.

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

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

  1. Двойная равнолинейная система: использование 19-циклических и 74-циклических SMA в качестве инструмента для определения тенденции
  2. Ценовые диапазоны: разделение ценовых диапазонов на 5 уровней для определения силы рынка
  3. Случайный индикатор: используется случайный индикатор на 60 циклов для суждения о перепродаже
  4. Подтверждение тренда: определение устойчивости тренда по трем последовательным линиям K
  5. Условия для входа: цена пробивает 74-циклическую SMA и входит в соответствующий ценовой диапазон
  6. Механизм остановки убытков: использование отслеживаемого остановки убытков, своевременное уход из игры при изменении тренда

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-25 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Purple SMA Strategy", overlay=true)

// === INPUTS ===
zoneLength = input.int(20, "Price Zone Length", minval=5)
tickSize = input.float(1.0, "Tick Size for Hard Stop")
hardStopTicks = input.int(50, "Hard Stop Loss in Ticks")

// === CALCULATE ZONES ===
h = ta.highest(high, zoneLength)
l = ta.lowest(low, zoneLength)
priceRange = h - l
lvl5 = h
lvl4 = l + (priceRange * 0.75)  // Orange line
lvl3 = l + (priceRange * 0.50)  // Yellow line
lvl2 = l + (priceRange * 0.25)  // Green line
lvl1 = l

// === INDICATORS ===
sma19 = ta.sma(close, 19)
sma74 = ta.sma(close, 74)

// === CANDLE COLOR CONDITIONS ===
isGreenCandle = close > open
isRedCandle = close < open

// === CONTINUOUS TREND DETECTION ===
isThreeGreenCandles = close > open and close[1] > open[1] and close[2] > open[2]
isThreeRedCandles = close < open and close[1] < open[1] and close[2] < open[2]

var bool inGreenTrend = false
var bool inRedTrend = false

// Update trends
if isThreeGreenCandles
    inGreenTrend := true
    inRedTrend := false
if isThreeRedCandles
    inRedTrend := true
    inGreenTrend := false
if (inGreenTrend and isRedCandle) or (inRedTrend and isGreenCandle)
    inGreenTrend := false
    inRedTrend := false

// === STOCHASTIC CONDITIONS ===
k = ta.stoch(close, high, low, 60)
d = ta.sma(k, 10)
isOverbought = d >= 80
isOversold = d <= 20
stochUp = d > d[1]
stochDown = d < d[1]

// === SMA COLOR LOGIC ===
sma19Color = if isOverbought and stochUp
    color.green
else if isOverbought and stochDown
    color.red
else if isOversold and stochUp
    color.green
else if isOversold and stochDown
    color.red
else if stochUp
    color.blue
else if stochDown
    color.purple
else
    color.gray

sma74Color = sma74 < sma19 ? color.green : color.red

// === CROSSING CONDITIONS ===
crossUpSMA = ta.crossover(close, sma74)
crossDownSMA = ta.crossunder(close, sma74)

// === ENTRY CONDITIONS ===
buyCondition = crossUpSMA and close > lvl4
sellCondition = crossDownSMA and close < lvl2

// === POSITION MANAGEMENT ===
var float stopLevel = na
var bool xMode = false

// Entry and Stop Loss
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)
    stopLevel := close - (hardStopTicks * tickSize)
    xMode := false

if sellCondition
    strategy.entry(id="Short", direction=strategy.short)
    stopLevel := close + (hardStopTicks * tickSize)
    xMode := false

// Update stops based on X's
if strategy.position_size != 0 and (inGreenTrend or inRedTrend)
    xMode := true
    if strategy.position_size > 0  // Long position
        stopLevel := low
    else  // Short position
        stopLevel := high

// Exit logic
if strategy.position_size > 0  // Long position
    if low <= stopLevel
        strategy.close(id="Long")
    else if xMode and not (inGreenTrend or inRedTrend)
        strategy.close(id="Long")

if strategy.position_size < 0  // Short position
    if high >= stopLevel
        strategy.close(id="Short")
    else if xMode and not (inGreenTrend or inRedTrend)
        strategy.close(id="Short")

// === PLOTTING ===
plot(sma19, "SMA 19", color=sma19Color, linewidth=2)
plot(sma74, "SMA 74", color=sma74Color, linewidth=2)
plot(lvl5, "Upper Zone Top", color=color.red, linewidth=2)
plot(lvl4, "Upper Zone Bottom", color=color.orange, linewidth=2)
plot(lvl3, "Middle Line", color=color.yellow, linewidth=2)
plot(lvl2, "Lower Zone Top", color=color.green, linewidth=2)
plot(lvl1, "Lower Zone Bottom", color=color.blue, linewidth=2)

// Plot X signals
plotshape(inGreenTrend, title="Bullish Line", style=shape.xcross, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(inRedTrend, title="Bearish Line", style=shape.xcross, location=location.abovebar, color=color.white, size=size.tiny)

// Zone fills
var p1 = plot(lvl5, display=display.none)
var p2 = plot(lvl4, display=display.none)
var p3 = plot(lvl2, display=display.none)
var p4 = plot(lvl1, display=display.none)
fill(p1, p2, color=color.new(color.red, 90))
fill(p3, p4, color=color.new(color.green, 90))

// Plot entry signals
plotshape(buyCondition, title="Buy", style=shape.square, location=location.belowbar, color=color.new(color.blue, 20), size=size.tiny, text="BUY", textcolor=color.blue)
plotshape(sellCondition, title="Sell", style=shape.square, location=location.abovebar, color=color.new(color.red, 20), size=size.tiny, text="SELL", textcolor=color.red)