RSI Alligator 추세 전략


생성 날짜: 2024-01-29 14:40:07 마지막으로 수정됨: 2024-01-29 14:40:07
복사: 0 클릭수: 770
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI Alligator 추세 전략

개요

RSI 해파리 트렌드 전략은 RSI 지표에 기반한 해파리 지표의 조합으로 트렌드의 진입과 퇴출을 판단한다. 그것은 세 개의 평균을 사용한다. 해파리의 상위 해파리, 치아선, 그리고 입술선, 서로 다른 주기의 RSI를 사용하여 구성한다.

전략 원칙

RSI 해파리 트렌드 전략은 RSI 지표를 사용하여 해파리 지표의 세 가지 이동 평균을 구성합니다. 구체적인 설정은 다음과 같습니다:

  • 상단 선: 5주기 RSI 선
  • 13주기 RSI 선
  • 입술선: 34주기의 RSI선

신호의 판단 논리는 다음과 같습니다.

다중선 신호: 치아선 위에 입술선을 입었을 때, 동시에 치아선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에 턱선 위에

공백 신호: 치아선 아래로 입술선을 통과하고, 동시에 상강선 아래로 치아선을 통과하면 공백한다.

이 전략은 동시에 중지 조건과 중단 조건을 설정합니다:

  • 입점 가격의 10%로 설정된 스톱 손실
  • 입점 가격의 90%로 설정된 정지

우위 분석

RSI 해킹 트렌드 전략은 다음과 같은 장점이 있습니다.

  1. 트렌드를 판단하기 위해 낚시선 지표를 사용하여 시장의 소음을 효과적으로 제거하고 주요 트렌드를 고정합니다.
  2. 다주기 RSI와 결합하여 가짜 브레이크를 방지하고 신호의 신뢰성을 향상시킵니다.
  3. 전략의 안정적인 운영에 도움이 되는 합리적인 중지 중지 조건을 설정합니다.
  4. 전략이 명확하고 이해가 용이하며, 매개 변수 설정이 간단하며, 리드 디스크 동작이 용이하다.
  5. 동시 다중 코카이팅, 양방향의 트렌드, 유연성

위험 분석

RSI 해킹 트렌드 전략에는 다음과 같은 위험도 있습니다.

  1. 치아선과 입술선의 교차는 가짜 돌파가 발생할 수 있으며, 불필요한 손실을 초래한다. 가짜 돌파의 확률을 줄이기 위해 주기 변수를 적절히 조정할 수 있다.

  2. 스톱 손실 설정이 너무 급진적일 수 있으며, 불필요한 스톱 손실의 확률이 높습니다. 스톱 손실 범위를 적절히 완화하거나, 스톱 손실 활성화의 전제 조건으로 다른 조건을 추가할 수 있습니다.

  3. 만약 상황이 급격히 악화되어 손해가 발생하거나 보증금이 제대로 효과를 발휘하지 못한다면, 인적 개입이 필요하며, 손해가 제때 중단된다.

  4. 다중공간 전환이 자주되면 거래비 부담이 더 크다. 적절한 진입 조건이 완화되어 불필요한 반복이 줄어들 수 있다.

최적화 방향

RSI 해킹 트렌드 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 라인의 파라미터 설정을 최적화하고, 사이클 파라미터를 조정하여 최적의 파라미터 조합을 찾습니다.

  2. 새로운 거래량 지표와 같은 필터링 신호와 같은 입력 조건 논리를 최적화합니다.

  3. 현황과 보증금 수준에 더 잘 대응할 수 있도록 스톱 스톱 전략 최적화

  4. 비정상적인 행위의 노출을 방지하기 위한 긴급 사건 처리 메커니즘을 강화

  5. 포지션 개시 알고리즘을 늘리고, 단독 투자금의 비율을 조절하고, 위험을 회피한다.

요약하다

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)