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

리스크-보상 타겟팅 전략과 함께 고급 동적 후속 정지

저자:차오장, 날짜: 2024-12-11 14:57:09
태그:RSIATRSMA

 Advanced Dynamic Trailing Stop with Risk-Reward Targeting Strategy

전반적인 설명

이 전략은 역동적 인 트레이링 스톱, 리스크-어워드 비율 및 RSI 극단적 인 출구를 결합 한 고급 거래 시스템입니다. 이 시스템은 트레이드 입시에 대한 특정 패턴 (평행 바 패턴 및 핀 바 패턴) 을 식별하고, 동적 인 스톱 손실 배치에 대한 ATR 및 최근 최저치를 활용하며 미리 설정된 리스크-어워드 비율에 따라 수익 목표를 결정합니다. 이 시스템은 또한 RSI 기반 시장 과잉 구매 / 과잉 판매 출구 메커니즘을 통합합니다.

전략 원칙

핵심 논리는 몇 가지 핵심 요소를 포함합니다. 1. 두 가지 패턴에 기반한 입력 신호: 평행 바 패턴 (큰 하향 바를 따르는 큰 상승 바) 및 이중 핀 바 패턴. 2. 최근 N-bar 최저에 조정 된 ATR 곱셈을 사용하여 동적 인 트레일링 스톱, 시장 변동성에 적응하는 스톱 손실 수준을 보장합니다. 3. 각 거래에 대한 위험 가치 ®를 이용하여 계산된 고정된 위험/이익 비율에 기초하여 설정된 수익 목표. 4. 고정된 위험 금액과 거래당 위험 가치에 기초하여 동적으로 계산된 포지션 사이징. 5. RSI 극단적 출구 메커니즘은 시장 극단에서 포지션 폐쇄를 유발합니다.

전략적 장점

  1. 동적 리스크 관리: ATR 및 최근 최저의 조합을 통해 시장 변동성에 동적으로 정지 손실 수준을 조정합니다.
  2. 정확한 포지션 제어: 고정된 리스크 금액에 기반한 포지션 크기는 거래당 일관된 리스크를 보장합니다.
  3. 다차원 출구 메커니즘: 후속 정지, 고정 수익 목표 및 RSI 극단을 결합합니다.
  4. 유연한 거래 방향: 단기, 단기 또는 양방향 거래 옵션.
  5. 명확한 리스크-어워드 설정: 미리 결정된 리스크-어워드 비율은 각 거래에 대한 명확한 수익 목표를 정의합니다.

전략 위험

  1. 패턴 인식 정확성 위험: 평행 막대와 핀 막대의 잠재적 인 잘못된 식별.
  2. 스톱 로스 (Stop Loss) 에서 미끄러짐 위험: 변동성 있는 시장에서 상당한 미끄러짐에 직면할 수 있습니다.
  3. 조기 RSI 출입: 강한 트렌드 시장에서 조기 출입으로 이어질 수 있습니다.
  4. 고정된 위험/이익 비율 제한: 최적의 위험/이익 비율은 시장 조건에 따라 달라질 수 있습니다.
  5. 매개 변수 최적화 과잉 적합 위험: 여러 매개 변수 조합은 과잉 최적화로 이어질 수 있습니다.

전략 최적화 방향

  1. 입력 신호 강화: 부피 및 트렌드 지표와 같은 패턴 확인 지표를 추가합니다.
  2. 동적 리스크 보상 비율: 시장 변동성에 따라 리스크 보상 비율을 조정합니다.
  3. 지능적인 매개 변수 적응: 동적 매개 변수 최적화를 위한 기계 학습 알고리즘을 도입합니다.
  4. 다중 시간 프레임 확인: 여러 시간 프레임에 신호 확인 메커니즘을 추가합니다.
  5. 시장 환경 분류: 다른 시장 조건에 다른 매개 변수 집합을 적용합니다.

요약

이것은 완벽한 거래 시스템을 구축하기 위해 여러 성숙한 기술 분석 개념을 결합한 잘 설계된 거래 전략입니다. 전략의 강점은 포괄적인 위험 관리 시스템과 유연한 거래 규칙에 있으며 매개 변수 최적화 및 시장 적응성에주의가 필요합니다. 제안된 최적화 방향을 통해 전략의 추가 개선이 가능합니다.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading | www.TheArtOfTrading.com
// @version=5
strategy("Trailing stop 1", overlay=true)

// Get user input 
int     BAR_LOOKBACK    = input.int(10, "Bar Lookback")
int     ATR_LENGTH      = input.int(14, "ATR Length")
float   ATR_MULTIPLIER  = input.float(1.0, "ATR Multiplier")
rr                      = input.float(title="Risk:Reward", defval=3)

// Basic definition
var float shares=na
risk = 1000
var float R=na
E = strategy.position_avg_price

// Input option to choose long, short, or both
side = input.string("Long", title="Side", options=["Long", "Short", "Both"])

// RSI exit option
RSIexit = input.string("Yes", title="Exit at RSI extreme?", options=["Yes", "No"])
RSIup = input(75)
RSIdown = input(25)

// Get indicator values 
float atrValue = ta.atr(ATR_LENGTH)

// Calculate stop loss values
var float trailingStopLoss = na 
float longStop  = ta.lowest(low, BAR_LOOKBACK) - (atrValue * ATR_MULTIPLIER)
float shortStop = ta.highest(high, BAR_LOOKBACK) + (atrValue * ATR_MULTIPLIER)

// Check if we can take trades 
bool canTakeTrades = not na(atrValue)
bgcolor(canTakeTrades ? na : color.red)

//Long pattern
    //Two pin bar
onepinbar = (math.min(close,open)-low)/(high-low)>0.6 and math.min(close,open)-low>ta.sma(high-low,14)
twopinbar = onepinbar and onepinbar[1]
notatbottom = low>ta.lowest(low[1],10)
    // Parallel
bigred = (open-close)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
biggreen = (close-open)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
parallel = bigred[1] and biggreen  
atbottom = low==ta.lowest(low,10)

// Enter long trades (replace this entry condition)
longCondition = parallel 
if (longCondition and canTakeTrades and  strategy.position_size == 0 and (side == "Long" or side == "Both"))
    R:= close-longStop
    shares:= risk/R
    strategy.entry("Long", strategy.long,qty=shares)

// Enter short trades (replace this entry condition)
shortCondition = parallel
if (shortCondition and canTakeTrades and strategy.position_size == 0 and (side == "Short" or side == "Both"))
    R:= shortStop - close
    shares:= risk/R
    strategy.entry("Short", strategy.short,qty=shares)

// Update trailing stop
if (strategy.position_size > 0)
    if (na(trailingStopLoss) or longStop > trailingStopLoss)
        trailingStopLoss := longStop
else if (strategy.position_size < 0)
    if (na(trailingStopLoss) or shortStop < trailingStopLoss)
        trailingStopLoss := shortStop
else
    trailingStopLoss := na

// Exit trades with trailing stop
strategy.exit("Long Exit",  "Long",  stop=trailingStopLoss, limit = E + rr*R )
strategy.exit("Short Exit", "Short", stop=trailingStopLoss, limit = E - rr*R)

//Close trades at RSI extreme
if ta.rsi(high,14)>RSIup and RSIexit == "Yes"
    strategy.close("Long")
if ta.rsi(low,14)<RSIdown and RSIexit == "Yes"
    strategy.close("Short")

// Draw stop loss 
plot(trailingStopLoss, "Stop Loss", color.red, 1, plot.style_linebr)

관련

더 많은