동적 수정 제어 시스템과 결합된 적응형 추세 추종 전략

RSI EMA DD SL TP
생성 날짜: 2024-12-20 16:59:37 마지막으로 수정됨: 2024-12-20 16:59:37
복사: 2 클릭수: 431
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 수정 제어 시스템과 결합된 적응형 추세 추종 전략

개요

이 전략은 트렌드 추적과 위험 통제를 결합한 통합 거래 시스템이다. 그것은 200 주기 지수 이동 평균을 ((EMA) 트렌드 필터로, 상대적으로 강한 지수를 ((RSI) 입시 신호로 사용하며, 중지, 중지 및 최대 회수 제어 장치를 통합한다. 전략의 주요 특징은 트렌드 추적 우위를 유지하면서 동적 회수 추적을 통해 위험을 엄격히 제어하는 것이다.

전략 원칙

전략의 핵심 논리는 다음과 같은 몇 가지 핵심 구성 요소를 포함합니다.

  1. 트렌드 식별: 200주기 EMA를 주요 트렌드 판단 지표로 사용하며, 가격만 EMA 위에 더 많이 고려한다.
  2. 동력 확인: 동력 확인 도구로 RSI 지표를 사용하여, RSI 값이 설정된 임계값 (기본 50) 을 초과할 때만 입장이 허용된다.
  3. 위험 관리:
    • 백분율을 설정 하 고 상쇄 하 고 상쇄 하 고
    • 동적 인 인출 추적 시스템, 전략 전체 인출이 설정 한계를 초과 할 때 모든 지분을 자동으로 평정합니다 (설정된 30%).
  4. 포지션 관리: 계정 지분 비율을 사용하여 포지션 제어

전략적 이점

  1. 자기 적응력: EMA와 RSI의 조합을 통해 전략은 다양한 시장 환경에 적응할 수 있습니다.
  2. 리스크 통제의 완성도: 다단계 리스크 제어 메커니즘, 중단, 중지 및 철회 제한 포함
  3. 자금 관리 과학: 계정 지분 비율을 사용하여 포지션을 관리하고 고정 수의 위험을 피하십시오.
  4. 강력한 실행: 명확한 전략 논리, 명확한 신호, 자동화 실행
  5. 확장성: 코어 컴포넌트는 독립적으로 조정할 수 있으며, 추가적인 최적화를 가능하게 한다.

전략적 위험

  1. 트렌드 반전 위험: EMA는 지연된 지표로서 트렌드 반전 시에는 적절하게 반응하지 않을 수 있습니다.
  2. 위축 시장 위험: 위축 시장에서 빈번한 잘못된 신호가 발생할 수 있습니다.
  3. 변수 민감성: 정책 효과는 변수 설정에 민감하며, 신중한 조정이 필요합니다.
  4. 슬라이드 포인트 영향: 시장의 급격한 변동이 있을 때, 스톱 스톱 주문은 슬라이드 포인트 위험에 직면할 수 있습니다. 해결책:
  • 트렌드 확인 메커니즘
  • 시장 환경 인식 시스템을 도입합니다.
  • 적응 변수를 이용한 최적화
  • 스마트 주문 실행 전략

전략 최적화 방향

  1. 시장 환경 인식: 변동률 지표를 증가시키고, 다른 시장 환경에 따라 전략 매개 변수를 조정합니다.
  2. 동적 변수 최적화: 기계 학습 알고리즘을 도입하여 변수의 적응 조정
  3. 신호 필터링 최적화: 트래픽량과 같은 보조 지표 증가, 신호 품질 향상
  4. 위험 제어 강화: 시장의 변동에 따라 중지 위치를 조정하는 동적 중지 메커니즘을 도입
  5. 다중 시간 주기의 분석: 여러 시간 주기의 신호를 통합하여 거래 의사 결정의 정확성을 향상시킵니다.

요약하다

이 전략은 트렌드 추적과 엄격한 위험 통제를 결합하여 완전한 거래 시스템을 구축한다. 그것의 핵심 장점은 위험 관리의 완전성과 전략 논리의 명확성에 있다. 다층적 위험 제어 장치로 인해, 전략은 수익을 추구하면서 효과적으로 회수 제어 할 수 있다.

전략 소스 코드
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-19 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Disruptor Trend-Following (Drawdown < 30%)", shorttitle="DisruptorStrategyDD", overlay=true)

//-----------------------------------------------------
// User Inputs
//-----------------------------------------------------
emaLen         = input.int(200,  "Long EMA Length",    minval=1)
rsiLen         = input.int(14,   "RSI Length",         minval=1)
rsiThreshold   = input.float(50, "RSI Buy Threshold",  minval=1, maxval=100)
stopLossPerc   = input.float(20, "Stop-Loss %",        minval=0.1, step=0.1)
takeProfitPerc = input.float(40, "Take-Profit %",      minval=0.1, step=0.1)
ddLimit        = input.float(30, "Max Drawdown %",     minval=0.1, step=0.1)

//-----------------------------------------------------
// Indicators
//-----------------------------------------------------
emaValue       = ta.ema(close, emaLen)
rsiValue       = ta.rsi(close, rsiLen)

//-----------------------------------------------------
// Conditions
//-----------------------------------------------------
longCondition  = close > emaValue and rsiValue > rsiThreshold
exitCondition  = close < emaValue or rsiValue < rsiThreshold

//-----------------------------------------------------
// Position Tracking
//-----------------------------------------------------
var bool inTrade = false

if longCondition and not inTrade
    strategy.entry("Long", strategy.long)

if inTrade and exitCondition
    strategy.close("Long")

inTrade := strategy.position_size > 0

//-----------------------------------------------------
// Stop-Loss & Take-Profit
//-----------------------------------------------------
if inTrade
    stopPrice       = strategy.position_avg_price * (1 - stopLossPerc / 100)
    takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPerc / 100)
    strategy.exit("Exit", from_entry="Long", stop=stopPrice, limit=takeProfitPrice)

//-----------------------------------------------------
// Dynamic Drawdown Handling
//-----------------------------------------------------
var float peakEquity = strategy.equity
peakEquity := math.max(peakEquity, strategy.equity)

currentDrawdownPerc = (peakEquity - strategy.equity) / peakEquity * 100
if currentDrawdownPerc > ddLimit
    strategy.close_all("Max Drawdown Exceeded")

//-----------------------------------------------------
// Plotting
//-----------------------------------------------------
plot(emaValue, title="EMA 200", color=color.yellow, linewidth=2)
plotchar(rsiValue, title="RSI", char='•', location=location.bottom, color=color.new(color.teal, 60))