В процессе загрузки ресурсов... загрузка...

Комбинированная тенденция с использованием множества методов SMA и стохастики в соответствии со стратегией торговли

Автор:Чао Чжан, Дата: 2024-12-27 14:43:30
Тэги:SMAKDJATRРСИMACD

img

Обзор

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

Принципы стратегии

Стратегия основана на нескольких основных компонентах:

  1. Система двойной SMA: использует 19-периодные и 74-периодные SMA для определения тренда
  2. Ценовые зоны: Разделяет ценовой диапазон на 5 уровней для оценки силы рынка
  3. Стохастический осциллятор: использует 60-периодный стохастический для условий перекупления/перепродажи.
  4. Подтверждение тренда: использует три последовательных свечи для подтверждения продолжения тренда
  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)

Связанные

Больше