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

동적 스톱 로스 다 기간 RSI 트렌드 전략

저자:차오장, 날짜: 2024-12-05 16:25:17
태그:RSIEMAATR

img

전반적인 설명

이 전략은 기술 지표의 조합에 기반한 트렌드 추적 전략으로, 주로 RSI 과잉 구매/ 과잉 판매 조건, EMA 크로스오버 및 동적 스톱 로스를 사용하여 거래한다. 이 전략은 수익을 증폭시키기 위해 레버리지와 결합한 1.5% 리스크 컨트롤을 사용한다. 이 전략의 핵심은 자본을 보호하기 위해 동적 인 수익 및 스톱 로스 수준을 사용하여 여러 기술 지표를 통해 트렌드를 확인하는 데 있다. 이 전략은 빠르고 빈번한 거래에 적합한 소액 계좌 특성에 특별히 설계되었다.

전략 원칙

이 전략은 세 가지 주요 기술 지표를 이용한다: RSI (비례 강도 지수), EMA (비례 이동 평균), ATR (평균 진정한 범위). 엔트리 신호는 단기 EMA (9 기간) 와 장기 EMA (21 기간) 사이의 교차로 확인되며, RSI가 합리적인 범위 내에 있어야 한다 (장기 RSI<70, 짧은 RSI>30). 이 전략은 ATR 기반의 동적 스톱 로스를 사용하며, 스톱 로스의 4배로 설정된 이윤 취득 수준으로 리스크를 조절하면서 이윤 보호를 허용한다. 각 거래는 잠재적인 이윤을 높이기 위해 2배의 레버리지를 사용하여 계정의 1.5%를 위험에 빠뜨린다.

전략적 장점

  1. 엄격한 리스크 관리: 각 거래 리스크를 1.5%로 제한하는 고정 비율 리스크 관리
  2. 동적 스톱 로스 설계: ATR 기반 동적 스톱은 시장 변동에 더 잘 적응합니다.
  3. 다중 신호 확인: RSI에 의해 필터링 된 EMA 크로스오버가 신호 신뢰성을 향상시킵니다.
  4. 최적화된 위험/이익 비율: 4배의 스톱-러스로 수익을 취하면 기대 수익률이 높아집니다.
  5. 작은 계좌에 적합합니다: 적당한 레버리지로 수익 잠재력이 증가합니다.
  6. 높은 자동화: 시장 조건 최적화를 위해 모든 매개 변수를 조정할 수 있습니다.

전략 위험

  1. 시장 변동성 위험: 변동성 있는 시장에서 빈번한 스톱-러스가 가능합니다.
  2. 레버리지 리스크: 레버리지의 2배가 손실을 증폭시킵니다.
  3. 가짜 파업 위험: EMA 교차가 잘못된 신호를 생성할 수 있습니다.
  4. 미끄러짐 위험: 빠른 시장에서 중요한 미끄러짐이 가능합니다.
  5. 자금 관리 위험: 적절한 포지션 크기 통제가 필요합니다.

전략 최적화 방향

  1. 트렌드 필터를 추가합니다. 더 긴 기간 트렌드 결정을 포함합니다.
  2. 출입 시기를 최적화합니다. 볼륨 지표를 사용하여 출입 지점을 개선합니다.
  3. 동적 매개 변수 조정: 변동성에 따라 ATR 곱셈을 자동으로 조정합니다.
  4. 시장 감정 지표를 도입: 고위험 시장 환경을 필터링
  5. 향상된 돈 관리: 동적 위치 크기 메커니즘을 추가

요약

이 전략은 트렌드를 따르는 전략으로, 거래 성공률을 향상시키기 위해 여러 가지 기술적 지표를 사용합니다. 이 전략은 작은 계정에 적합한 포괄적인 위험 통제 메커니즘을 갖추고 있습니다. 그러나 라이브 트레이딩에서는 시장 상황에 적응하기 위해 적절한 시기에 매개 변수를 조정하여 변화하는 시장 조건에 주의를 기울여야 합니다. 라이브 구현 전에 철저한 백테스팅을 수행하고 작은 포지션을 사용하여 전략의 특성에 점차 적응하는 것이 좋습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Aggressive Scalper Strategy", overlay=true)

// Parameters
account_balance = input.float(28.37, title="Account Balance", tooltip="Update this with your balance")
risk_per_trade = input.float(0.015, title="Risk per Trade", tooltip="1.5% risk")
leverage = input.int(2, title="Leverage", minval=1)
stop_loss_percentage = input.float(0.015, title="Stop Loss Percentage", tooltip="1.5% stop loss")
take_profit_multiplier = input.float(4, title="Take Profit Multiplier", tooltip="Take Profit is 4x Stop Loss")
stop_loss_multiplier = input.float(2, title="Stop Loss Multiplier", tooltip="Dynamic Stop Loss Multiplier")

// Trade Size Calculation
position_size = account_balance * risk_per_trade / (stop_loss_percentage / leverage)
trade_qty = position_size / close // This gives you the qty in terms of contracts

// Indicators
rsiLength = input.int(14, title="RSI Length")
emaShort = input.int(9, title="Short-term EMA Length")
emaLong = input.int(21, title="Long-term EMA Length")
rsi = ta.rsi(close, rsiLength)
emaShortLine = ta.ema(close, emaShort)
emaLongLine = ta.ema(close, emaLong)

// Entry Conditions
longCondition = ta.crossover(emaShortLine, emaLongLine) and rsi < 70
shortCondition = ta.crossunder(emaShortLine, emaLongLine) and rsi > 30

// ATR for dynamic stop loss and take profit levels
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atr = ta.atr(atrLength)

// Dynamic Take Profit and Stop Loss Levels
longTakeProfitLevel = close + (atr * take_profit_multiplier)
longStopLossLevel = close - (atr * stop_loss_multiplier)
shortTakeProfitLevel = close - (atr * take_profit_multiplier)
shortStopLossLevel = close + (atr * stop_loss_multiplier)

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfitLevel, stop=longStopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel)

// Alert Conditions
alertcondition(longCondition, title="Buy Signal", message="Long position entry signal detected.")
alertcondition(shortCondition, title="Sell Signal", message="Short position entry signal detected.")

// Display Information on Chart
var table_info = table.new(position.top_right, 2, 2, frame_color=color.blue, frame_width=1)
if (bar_index == na)
    table.cell(table_info, 0, 0, text="Aggressive Scalper", bgcolor=color.blue)
    table.cell(table_info, 1, 0, text="Account Balance: $" + str.tostring(account_balance), text_color=color.white)
    table.cell(table_info, 1, 1, text="Risk per Trade: " + str.tostring(risk_per_trade * 100) + "%", text_color=color.white)
    table.cell(table_info, 0, 1, text="Leverage: " + str.tostring(leverage) + "x", text_color=color.white)


관련

더 많은