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

동적 리스크 관리와 함께 두 가지 이동 평균 크로스오버 전략

저자:차오장, 날짜: 2024-11-18 15:32:26
태그:SMAMASLTPATR

img

전반적인 설명

이 전략은 이중 이동 평균 크로스오버 신호를 기반으로 한 양적 거래 시스템으로, 단기 및 장기 이동 평균의 교차점을 통해 시장 트렌드 변화를 식별하며, 위험을 제어하기 위해 동적 스톱 로스 및 영업 관리와 결합합니다. 전략은 거래에 대한 시장 주문을 사용하여 신호가 활성화되면 기존 포지션을 자동으로 폐쇄하고 새로운 포지션을 열고, 스톱 로스 및 영업 수준을 설정하여 자본 안전을 보호합니다.

전략 원칙

이 전략은 다른 기간의 두 개의 간단한 이동 평균 (SMA) 을 거래 신호의 주요 기초로 사용한다. 단기 MA가 장기 MA를 넘을 때 긴 신호가 생성되고 단기 MA가 장기 MA를 넘을 때 짧은 신호가 생성된다. 시스템은 신호가 발생했을 때 현재 위치 상태를 확인하고, 먼저 모든 카운터 포지션을 닫고, 신호 방향에 따라 새로운 포지션을 열고, 각 거래는 미리 설정된 비율에 따라 자동으로 스톱 로스 및 영업 수준을 설정하여 리스크 리워드 비율의 동적 관리를 달성한다.

전략적 장점

  1. 명확한 신호 메커니즘 - 듀얼 MA 크로스오버는 명확하고 이해하기 쉬운 신호로 고전적인 기술 지표입니다.
  2. 포괄적 리스크 관리 - 동적 스톱 로스 및 리프트를 통해 각 거래의 리스크를 제어합니다.
  3. 높은 자동화 수준 - 신호 식별에서 위치 관리까지 완전히 자동화 된 실행
  4. 강한 적응력 - 매개 변수 조정으로 다른 시장 환경에 적응 할 수 있습니다.
  5. 간단한 구조 - 명확한 코드 논리, 유지 및 최적화 쉬운
  6. 실시간 모니터링 - 전략 실행을 쉽게 추적하기 위한 거래 알림 기능을 포함합니다.

전략 위험

  1. 소위 '상장 위험'은 '범위 제한 시장'에서 빈번한 거래 손실을 초래할 수 있습니다.
  2. 소정의 위험 - 시장 주문은 상당한 소정의 위험으로 인해 발생할 수 있습니다.
  3. 매개 변수 민감성 - MA 기간 선택은 전략 성과에 상당한 영향을 미칩니다.
  4. 소액액을 적립한 적립금액의 경우
  5. 자금 관리 위험 - 고정된 비율로 모든 시장 조건에 적합하지 않을 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터를 추가하여 불안정한 시장에서 빈번한 거래를 피합니다.
  2. 동적 스톱 로스 및 이윤률 조정에 대한 변동성 지표를 포함합니다.
  3. 거래 품질을 향상시키기 위해 부피 확인 신호를 추가합니다.
  4. 가격 인하 메커니즘을 고려하여 진입 시기를 최적화하십시오.
  5. 역동적인 포지션 크기를 위한 자금 관리 시스템을 개선
  6. 시그널 신뢰성을 높이기 위해 시장 감정 지표를 포함

요약

이 전략은 명확한 논리를 가진 포괄적 인 양적 거래 전략입니다. 이중 MA 크로스오버를 통해 트렌드 변화를 포착하고 동적인 스톱 로스 및 영리 레벨로 위험을 관리합니다. 전략의 강점은 체계적인 접근과 리스크 제어에 있습니다. 그러나 라이브 트레이딩에서 다양한 시장 위험에주의를 기울여야합니다. 지속적인 최적화와 개선을 통해 전략은 다른 시장 환경에서 안정적인 성능을 유지할 수 있습니다. 라이브 구현 전에 철저한 백테스팅을 수행하고 실제 조건에 따라 매개 변수를 조정하는 것이 좋습니다.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD)

// Configurable Inputs
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1)
short_ma_length = input.int(title="Short MA Length", defval=9, minval=1)
long_ma_length = input.int(title="Long MA Length", defval=21, minval=1)

// Moving Averages
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)

// Plotting Moving Averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.red, title="Long MA")

// Buy and Sell Signals
buy_signal = ta.crossover(short_ma, long_ma)
sell_signal = ta.crossunder(short_ma, long_ma)

// Market Buy Logic
if (buy_signal and strategy.position_size <= 0)
    // Close any existing short position
    if (strategy.position_size < 0)
        strategy.close(id="Market Sell")
    
    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    long_stop = entry_price * (1 - stop_loss_percent / 100)
    long_take_profit = entry_price * (1 + take_profit_percent / 100)

    // Enter Long Position
    strategy.entry(id="Market Buy", direction=strategy.long)
    strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit)

    // Alert for Market Buy
    alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close)

// Market Sell Logic
if (sell_signal and strategy.position_size >= 0)
    // Close any existing long position
    if (strategy.position_size > 0)
        strategy.close(id="Market Buy")

    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    short_stop = entry_price * (1 + stop_loss_percent / 100)
    short_take_profit = entry_price * (1 - take_profit_percent / 100)

    // Enter Short Position
    strategy.entry(id="Market Sell", direction=strategy.short)
    strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit)

    // Alert for Market Sell
    alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)


관련

더 많은