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

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

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

img

전반적인 설명

이 전략은 역동적 인 트레이링 스톱, 리스크-어워드 비율 및 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)

관련

더 많은