RSI 알리거터 트렌드 전략은 트렌드의 입문과 출구를 결정하기 위해 RSI 지표와 알리거터 지표의 조합을 기반으로 합니다. 그것은 다른 기간의 RSI에 의해 구성된 세 개의 이동 평균 라인 - 알리거터
RSI 알리거터 트렌드 전략은 RSI 인디케이터를 사용하여 알리거터 인디케이터의 세 라인을 구축합니다. 구체적인 설정은 다음과 같습니다.
입력 신호의 논리는 다음과 같습니다.
긴 신호: 이빨 선이 입술 선 위에 지나고 턱 선이 이빨 선보다 높을 때, 길게 이동합니다.
짧은 신호: 이빨 선이 입술 선 아래로 지나고 턱 선이 이빨 선보다 낮을 때, 짧은 신호를 보내십시오.
이 전략은 또한 스톱 로즈와 수익을 취하는 조건을 설정합니다.
RSI 알리거터 트렌드 전략은 다음과 같은 강점을 가지고 있습니다.
RSI 알리거터 트렌드 전략은 또한 다음과 같은 위험을 가지고 있습니다.
이빨선과 입술선 사이의 교차점에서 잘못된 파열이 발생할 수 있으며 불필요한 손실이 발생할 수 있습니다. 사이클 매개 변수를 조정하여 잘못된 파열의 가능성을 줄일 수 있습니다.
스톱 손실 설정은 불필요한 스톱 손실의 높은 확률로 너무 공격적이 될 수 있습니다. 스톱 손실 범위는 적절히 느슨하게 할 수 있습니다. 또는 다른 조건이 스톱 손실을 활성화하기위한 전제 조건으로 추가 될 수 있습니다.
시장이 격렬하게 움직이면, 스톱 로스는 마진을 보호하는 적절한 역할을 수행하지 못할 수 있습니다. 이 경우 시간 내에 손실을 중지하기 위해 수동 개입이 필요합니다.
긴 포지션과 짧은 포지션이 자주 전환되면 거래 비용 압력이 더 커집니다. 불필요한 왕복을 줄이기 위해 입시 조건을 적절히 완화 할 수 있습니다.
RSI 알리거터 트렌드 전략은 다음과 같은 측면에서 최적화 될 수 있습니다:
최고의 매개 변수 조합을 찾기 위해 알리거터 라인 매개 변수 설정을 최적화
입력 조건 논리를 최적화, 예를 들어 필터 신호에 거래량과 같은 지표를 추가
이윤을 취하고 손실을 멈추는 전략을 최적화하여 시장 조건과 마진 수준에 더 적응 할 수 있습니다.
극단적 사건에 대처하고 비정상적인 시장 조건에 노출되는 것을 피하기 위한 메커니즘을 추가합니다.
오픈 포지션 알고리즘을 추가하여 단일 거래에 투자된 자본의 비율을 제어하여 위험을 완화합니다.
일반적으로, RSI 알리거터 트렌드 전략은 신뢰할 수 있고 사용하기 쉬운 트렌드 다음 전략입니다. 그것은 트렌드 방향을 결정하기 위해 알리거터 지표를 사용하고, RSI 지표와 결합하여 참조 임계치를 설정하여 트렌드를 효과적으로 잠그고 합리적인 출구 지점을 설정할 수 있습니다. 동시에 전략 자체는 또한 강력한 유연성과 확장성을 가지고 있으며 라이브 거래 및 추가 최적화에 유용합니다.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=3 // RSI Alligator // Forked from Author: Reza Akhavan // Updated by Khalid Salomão strategy("RSI Alligator Strategy", overlay=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=25000, initial_capital=25000, commission_type=strategy.commission.percent, commission_value=0.15, slippage=3) // === TA LOGIC === overBought = input(70, minval=0, maxval=100, title="Over bought") overSold = input(30, minval=0, maxval=100, title="Over sold") jawPeriods = input(5, minval=1, title="Jaw Periods") jawOffset = input(0, minval=0, title="Jaw Offset") teethPeriods = input(13, minval=1, title="Teeth Periods") teethOffset = input(0, minval=0, title="Teeth Offset") lipsPeriods = input(34, minval=1, title="Lips Periods") lipsOffset = input(0, minval=0, title="Lips Offset") jaws = rsi(close, jawPeriods) teeth = rsi(close, teethPeriods) lips = rsi(close, lipsPeriods) plot(jaws, color=green, offset=jawOffset, title="Jaw") plot(teeth, color=red, offset=teethOffset, title="Teeth") plot(lips, color=blue, offset=lipsOffset, title="Lips") // // === Signal logic === // LONG_SIGNAL_BOOLEAN = crossover(teeth, lips) and jaws > teeth SHORT_SIGNAL_BOOLEAN = crossunder(teeth, lips) and jaws < teeth // === INPUT BACKTEST DATE RANGE === strategyType = input(defval="Long Only", options=["Long & Short", "Long Only", "Short Only"]) FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => true // === STRATEGY BUY / SELL ENTRIES === // TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal // long and short entries buy() => window() and LONG_SIGNAL_BOOLEAN sell() => window() and SHORT_SIGNAL_BOOLEAN if buy() if (strategyType == "Short Only") strategy.close("Short") else strategy.entry("Long", strategy.long, comment="Long") if sell() if (strategyType == "Long Only") strategy.close("Long") else strategy.entry("Short", strategy.short, comment="Short") // === BACKTESTING: EXIT strategy === sl_inp = input(10, title='Stop Loss %', type=float)/100 tp_inp = input(90, title='Take Profit %', type=float)/100 stop_level = strategy.position_avg_price * (1 - sl_inp) take_level = strategy.position_avg_price * (1 + tp_inp) strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)