리소스 로딩... 로딩...

ATR 기반의 멀티 트렌드 추후 전략, 수익을 취하고 손실을 멈추는 최적화 시스템

저자:차오장, 날짜: 2024-11-12 16:14:11
태그:ATRSMATP/SLOHLCMA

img

전반적인 설명

이 전략은 가격 변동 범위의 동적 계산을 통해 시장 트렌드를 식별하고 리스크 관리를 위해 적응적 인 수익 및 스톱 로스 메커니즘을 통합하는 평균 진정한 범위 (ATR) 지표에 기반한 트렌드를 따르는 거래 시스템입니다. 이 전략은 다기분석 접근 방식을 사용하여 ATR 곱셈기를 사용하여 정확한 시장 변동 추적을 위해 트레이드 신호 트리거를 동적으로 조정합니다.

전략 원칙

핵심 전략은 시장의 진정한 범위를 계산하기 위해 기간 매개 변수 (디폴트 10) 를 사용하여 동적 ATR 계산을 기반으로합니다. ATR 곱셈자 (디폴트 3.0) 는 상위 및 하위 채널을 구성하는 데 사용되며 가격이이 채널을 통과 할 때 거래 신호를 유발합니다. 구체적으로:

  1. 변동성 기준 계산을 위해 SMA 또는 표준 ATR를 사용합니다.
  2. 동적으로 트렌드를 따르는 참조로 상부 및 하부 채널을 계산합니다.
  3. 가격 및 채널 크로스오버를 통해 트렌드 방향을 결정합니다
  4. 트렌드 반전 시점에 거래 신호를 유발합니다.
  5. 이윤을 취득하고 손실을 멈추는 비율 기반의 동적 시스템

전략적 장점

  1. 높은 적응력: ATR을 통해 시장 변동성에 동적으로 조정됩니다.
  2. 제어된 위험: 영업당 수익률과 스톱 로스 메커니즘을 통해 거래당 위험을 효과적으로 제어할 수 있습니다.
  3. 매개 변수 유연성: ATR 기간 및 곱셈자와 같은 주요 매개 변수는 시장 특성에 따라 조정할 수 있습니다.
  4. 시각 명확성: 트렌드 마커와 신호 알림을 포함한 포괄적인 그래픽 인터페이스를 제공합니다.
  5. 시간 관리: 전략 적용성을 향상시키는 사용자 지정 거래 시간 창을 지원합니다

전략 위험

  1. 트렌드 역전 위험: 다양한 시장에서 빈번한 잘못된 신호를 생성할 수 있습니다.
  2. 매개 변수 감수성: ATR 기간 및 곱셈 요인의 선택은 전략 성과에 상당한 영향을 미칩니다.
  3. 시장 환경 의존성: 높은 변동성 기간 동안 더 큰 미끄러짐을 경험할 수 있습니다.
  4. 스톱 로스 설정: 고정 비율 스톱은 모든 시장 조건에 적합하지 않을 수 있습니다.

전략 최적화 방향

  1. 트렌드 식별 정확성을 향상시키기 위해 여러 시간 프레임 분석을 도입
  2. 신호 신뢰성을 높이기 위해 볼륨 표시기 확인을 추가
  3. 시장의 변동성에 동적으로 조정되는 적응 가능한 수익 및 손실 중지 메커니즘을 개발
  4. 잘못된 신호를 줄이기 위해 트렌드 강도 필터를 포함
  5. 입시 시기를 최적화하기 위해 변동성 지표를 통합합니다.

요약

이것은 ATR 지표를 통해 정확한 시장 변동성 추적을 달성하는 잘 설계된 트렌드 추적 전략이며, 리스크 관리를 위해 수익을 취하고 손실을 멈추는 메커니즘과 결합됩니다. 전략의 강점은 적응력과 통제된 위험에 있습니다. 시장 환경이 전략 성과에 미치는 영향을 주목해야합니다. 제안된 최적화 방향을 통해 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy BID Strategy", overlay=true, shorttitle="Buy BID by MR.STOCKVN")

// Cài đặt chỉ báo
Periods = input.int(title="ATR Period", defval=10)
src = input.source(hl2, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=3.0)
changeATR = input.bool(title="Change ATR Calculation Method?", defval=true)
showsignals = input.bool(title="Show Buy Signals?", defval=false)
highlighting = input.bool(title="Highlighter On/Off?", defval=true)
barcoloring = input.bool(title="Bar Coloring On/Off?", defval=true)

// Tính toán ATR
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2

// Tính toán mức giá mua bán dựa trên ATR
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Vẽ xu hướng
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1

// Hiển thị tín hiệu mua
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)

// Cài đặt màu cho thanh nến
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)

// Điều kiện thời gian giao dịch
FromMonth = input.int(defval=9, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=2018, title="From Year", minval=999)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)

// Cửa sổ thời gian giao dịch
window() => (time >= start and time <= finish)

// Điều kiện vào lệnh Buy
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when=window())

// Điều kiện chốt lời và cắt lỗ có thể điều chỉnh
takeProfitPercent = input.float(5, title="Take Profit (%)") / 100
stopLossPercent = input.float(2, title="Stop Loss (%)") / 100

// Tính toán giá trị chốt lời và cắt lỗ dựa trên giá vào lệnh
if (strategy.position_size > 0)
    strategy.exit("Take Profit", "BUY", limit=strategy.position_avg_price * (1 + takeProfitPercent), stop=strategy.position_avg_price * (1 - stopLossPercent))

// Màu nến theo xu hướng
buy1 = ta.barssince(buySignal)
color1 = buy1[1] < na ? color.green : na
barcolor(barcoloring ? color1 : na)


관련

더 많은