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

SMA와 거래량 필터링을 교차하는 적응적 동적 스톱 및 스톱 손실 전략

저자:차오장, 날짜: 2024-07-31 11:20:39
태그:SMA

SMA交叉与成交量过滤的自适应动态止盈止损策略

개요

이 전략은 간단한 이동평균 (SMA) 교차와 트레이드 필터링에 기반한 자동화 거래 시스템이다. 빠른 및 느린 SMA의 교차를 활용하여 입력 신호를 생성하고 트레이드 지표를 결합하여 트렌드 강도를 확인합니다. 전략에는 또한 동적 인 스톱 손실 및 스톱 포트 메커니즘과 시간 기반의 출퇴 조건이 포함되어 있으며 위험 관리를 최적화하고 수익성을 높이기 위해 고안되었습니다.

전략적 원칙

이 전략의 핵심 원칙은 다음과 같은 몇 가지 핵심 요소에 기반합니다.

  1. SMA 교차 신호:

    • 두 개의 다른 주기를 사용하는 간단한 이동 평균 (빠른 SMA와 느린 SMA)
    • 빠른 SMA가 아래에서 느린 SMA를 통과하면 더 많은 신호가 발생합니다.
    • 빠른 SMA가 느린 SMA를 위쪽에서 통과할 때 공백 신호가 발생한다.
  2. 거래량 필터링:

    • 거래량을 계산하는 간단한 이동 평균
    • 더 많은 신호를 만드는 것은 현재 거래량이 거래량 SMA보다 높을 필요가 있습니다.
    • 공허한 신호는 현재 거래량이 거래량 SMA보다 낮아야 합니다.
  3. 동적 중단 및 중단:

    • 입금 가격의 비율에 기초하여 StopLoss 및 StopLoss 레벨을 설정합니다.
    • 손해 방지 및 억제 수준은 입력 매개 변수로 조정할 수 있습니다.
  4. 시간적 기본 탈퇴:

    • 최대 보유 시간을 설정합니다 (K 라인으로 계산)
    • 최대 보유 기간을 초과한 자동 평준화, 장기적으로 불리한 지위를 보유하는 것을 방지
  5. 재검토 기간 동안 설정:

    • 사용자가 특정 재검토 시간 범위를 정의하도록 허용합니다.
    • 지정된 시간 동안만 실행되도록 합니다.

전략적 장점

  1. 트렌드 트래킹과 동력 결합: 이 전략은 SMA 교차와 거래량 필터링을 결합하여 강력한 트렌드 시장을 포착할 수 있으며, 약한 시장에서 자주 거래하는 것을 피할 수 있습니다.

  2. 유연한 위험 관리: 동적 스톱 손실 및 스톱 포트 메커니즘은 전략이 시장 변동에 따라 자동으로 위험 노출을 조정하도록 허용하여 수익을 보호하고 잠재적 손실을 제한하는 데 도움이됩니다.

  3. 자금 보유를 막기 위해: 최대 보유 기간 제한은 전략이 불리한 시장 조건에서 장기적으로 손실 입지를 보유하는 것을 방지하고 자금의 효율적인 사용을 촉진하는 데 도움이됩니다.

  4. 사용자 정의 가능: 여러 가지 조정 가능한 매개 변수 (SMA 주기, Stop Loss Holding Percentage, 최대 보유 시간 등) 는 전략이 다른 시장과 거래 스타일에 따라 최적화 될 수 있도록합니다.

  5. 시각화 지원: 전략은 그래프에 SMA 라인과 거래 신호를 그려서 전략의 성능을 직관적으로 이해하고 분석합니다.

전략적 위험

  1. 뒤쳐져있는 것: SMA 지표는 본질적으로 뒤떨어져 있으며, 급격히 반전되는 시장에서 지연된 진입 또는 놓친 기회를 초래할 수 있다.

  2. 가짜 돌파구 위험: 이변 시장에서, SMA 교차는 빈번한 가짜 파헤팅 신호를 생성할 수 있으며, 과도한 거래와 거래 비용을 증가시킬 수 있다.

  3. 거래액은 다음과 같습니다: 거래량 지표에 과도하게 의존하는 것은 특정 시장 조건에서 특히 유동성이 낮거나 거래량이 비정상적 인 시기에 전략에 오류를 일으킬 수 있습니다.

  4. 고정된 비율의 손해/손해배상: 고정된 비율의 손해배상 및 손해배상 차단은 모든 시장 조건에 적합하지 않을 수 있으며, 특히 변동성이 급격하게 변하는 시기에 적합할 수 있다.

  5. 시간적 기준으로 출퇴할 수 있는 한계: 고정된 최대 보유 기간은 유리한 추세가 아직 끝나지 않은 상태에서 조기 평형으로 이어질 수 있으며 잠재적인 수익에 영향을 미칩니다.

전략적 최적화 방향

  1. 동적 매개 변수 조정: 다양한 시장 주기와 변동성에 적응하기 위해 SMA 주기와 Stop Loss Stop Loss 비율 및 최대 보유 기간의 동적 조정을 구현합니다.

  2. 추가 필터를 포함합니다: 다른 기술 지표 (RSI, MACD 등) 를 추가 필터링 조건으로 도입하여 거래 신호의 정확성을 향상시킵니다.

  3. 트랜잭션 기준에 적응: 동적으로 조정되는 거래량 기준을 개발하여 다른 시장 단계의 거래량 특성에 더 잘 적응합니다.

  4. 더 나은 탈퇴 메커니즘: 시장 구조 또는 동력 지표에 기반한 스마트 탈퇴 메커니즘을 탐구하여 고정 시간 탈퇴를 대체하고 전략의 적응성을 향상시킵니다.

  5. 유동성 조정: 시장의 변동에 기반한 동적 스톱 로지 및 스톱 포지션 레벨 조정을 구현하여 위험을 더 잘 관리하고 수익을 캡처합니다.

  6. 여러 시간 프레임 분석: 여러 시간 프레임의 데이터 분석을 통합하여 전략의 시장 추세와 역전을 식별하는 능력을 향상시킵니다.

  7. 기계 학습 최적화: 기계 학습 알고리즘을 사용하여 전략 매개 변수를 동적으로 최적화하여 다른 시장 환경에서 전략의 성능을 향상시킵니다.

요약

SMA 크로스 및 트레이드 필터링의 자율적 동적 스톱 로스 전략 은 트렌드 추적, 트레이드 분석 및 리스크 관리를 결합한 통합 거래 시스템이다. SMA 크로스 및 트레이드 필터링을 활용함으로써 전략은 강력한 시장 추세를 포착하는 것을 목표로 하고 있으며, 동시에 동적 스톱 손실 메커니즘과 시간 기반 탈퇴 기능을 통해 유연한 위험 통제를 제공합니다. 비록 신호 지연과 고정 매개 변수에 대한 의존과 같은 몇 가지 고유 한 한 한계약이 있음에도 불구하고, 전략은 매개 변수 동적 조정, 추가 기술 지표 도입 및 기계 학습 기술을 활용하는 등 다양한 최적화 방향을 제공합니다. 지속적인 최적화 및 개선으로, 전략은 다양한 시장 조건과 스타일에 적합한 강력한 유연한 자동화 거래 도구가 될 잠재력을 가지고 있습니다.


/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple_CrossOver_Bot_V1_EBO", overlay=true)

// INPUTS
dateStart_Year = input.int(2018, title="Start Year", minval=2000)
dateStart_Month = input.int(1, title="Start Month", minval=1, maxval=12)
dateStart_Day = input.int(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input.int(2019, title="End Year", minval=2000)
dateEnd_Month = input.int(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input.int(1, title="End Day", minval=1, maxval=31)

fast_SMA_input = input.int(7, title="SMA Fast")
slow_SMA_input = input.int(25, title="SMA Slow")
volume_SMA_input = input.int(20, title="Volume SMA")
stop_loss_percent = input.float(1.0, title="Stop Loss (%)", step=0.1) / 100
take_profit_percent = input.float(2.0, title="Take Profit (%)", step=0.1) / 100
max_bars_in_trade = input.int(50, title="Max Bars in Trade", minval=1)

// INDICATORS
fast_SMA = ta.sma(close, fast_SMA_input)
slow_SMA = ta.sma(close, slow_SMA_input)
volume_SMA = ta.sma(volume, volume_SMA_input)

// STRATEGY
LONG = ta.crossover(fast_SMA, slow_SMA) and fast_SMA > slow_SMA and volume > volume_SMA
SHORT = ta.crossunder(fast_SMA, slow_SMA) and fast_SMA < slow_SMA and volume < volume_SMA

// TRIGGERS
testPeriodStart = timestamp(dateStart_Year, dateStart_Month, dateStart_Day)
testPeriodEnd = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day)
timecondition = true

// Track bar index for entries
var int long_entry_bar_index = na
var int short_entry_bar_index = na

if timecondition
    if LONG
        strategy.entry(id="LONG", direction=strategy.long)
        long_entry_bar_index := bar_index
    if SHORT
        strategy.entry(id="SHORT", direction=strategy.short)
        short_entry_bar_index := bar_index

    // Exit conditions for LONG
    if not na(long_entry_bar_index) and bar_index - long_entry_bar_index >= max_bars_in_trade
        strategy.close("LONG")
        long_entry_bar_index := na
    
    // Exit conditions for SHORT
    if not na(short_entry_bar_index) and bar_index - short_entry_bar_index >= max_bars_in_trade
        strategy.close("SHORT")
        short_entry_bar_index := na

    // Standard exits
    if LONG
        strategy.exit("Exit LONG", from_entry="LONG", stop=close * (1 - stop_loss_percent), limit=close * (1 + take_profit_percent))
    if SHORT
        strategy.exit("Exit SHORT", from_entry="SHORT", stop=close * (1 + stop_loss_percent), limit=close * (1 - take_profit_percent))

// PLOTS
plot(fast_SMA, color=color.green, linewidth=1, title="Fast SMA")
plot(slow_SMA, color=color.yellow, linewidth=1, title="Slow SMA")
plot(volume_SMA, color=color.blue, linewidth=1, title="Volume SMA")
plotshape(series=LONG, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=SHORT, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// Uncomment the following lines for alerts
// alertcondition(LONG, title="LONG")
// alertcondition(SHORT, title="SHORT")


관련 내용

더 많은 내용