오스실레이션 장기/단기 RSI 암호화 전환 전략

저자:차오장, 날짜: 2023-12-25 13:49:48
태그:

img

전반적인 설명

오시일레이팅 롱 쇼트 RSI 암호화 전환 전략 (Oscillating Long-Short RSI Crypto Switching Strategy) 은 암호화폐를 위해 설계된 양적 거래 전략이다. 기술 지표 RSI를 이치모쿠 지표와 결합하여 가격 변동 중에 긴 및 짧은 신호를 식별하고 낮은 구매 및 높은 판매를 달성합니다. 3-4 시간 또는 더 긴 중장기 시간 프레임에 적합합니다.

전략 논리

이 전략은 주로 다음의 지표와 규칙에 기초합니다.

이치모쿠 지표

  • 텐칸 라인: 지난 20 바의 최고와 최저 가격 중점
  • 라인: 지난 50 바의 최고와 최저 가격의 중간점
  • 센쿠A선: 텐칸선과 키준선의 중간점
  • 센쿠 B 라인: 지난 120 바의 가장 높고 가장 낮은 가격의 중간점
  • 치쿠 라인: 30 바의 폐쇄 가격

RSI 지표

  • 0에서 100까지
  • 50보다 높으면 상승 신호, 50보다 낮으면 하락 신호

입국 규칙
긴 엔트리: 텐칸 크로스 키 (황금 크로스) 위와 가격 브레이크 센쿠 A&B 라인, RSI는 동시에 50 이상
짧은 엔트리: 텐칸 크로스 키준 아래 (죽음 크로스) 및 가격 분해 센쿠 A&B 라인, RSI 50 아래 동시에

출입규칙
반대 신호로 출구

이 전략은 중장기 추세, 단기 자본 흐름 및 오버구입/오버판매 조건을 고려하여 변동 도중 반전 기회를 포착합니다. 또한 큰 손실을 피하기 위해 스톱 로스 규칙을 설정합니다.

이점 분석

1. 다중 지표 에 근거 한 판단 은 높은 확실성 을 보장 한다

이 전략은 ICHIMOKU의 트렌드 및 지원/저항 판단, RSI의 과잉 구매/ 과잉 판매 조건, 그리고 촛불 몸의 방향에 기초한 자본 흐름 등을 고려합니다. 이것은 신뢰할 수 있는 신호를 보장합니다.

2. 오스실레이션 에 적합 하며, 자주 이윤 을 취하는 것

암호화폐 시장은 큰 변동이 있습니다. 이 전략은 변동 중에 반전 기회를 완전히 포착하고 빈번한 낮은 구매 및 높은 판매를 달성 할 수 있습니다.

3. 추격 상승과 격퇴를 방지, 통제 가능한 위험

이 전략은 중장기적 추세와 단기적 상황을 포괄적으로 고려하여 상승을 추격하고 하락을 치는 위험을 피합니다. 한편, 스톱 로스는 위험을 방지합니다.

위험 분석

1. 어떤 트렌드 기회 를 놓칠 수 있다

이 전략은 주로 반전에 초점을 맞추고 있으며, 이는 장기 트렌드 단계에서 빈번한 윙사우로 이어질 수 있습니다.

2. 단일 기호, 위험 다양화 할 수 없습니다

이 전략은 단 하나의 기호만을 거래하고 체계적인 시장 위험에 대비하여 다양화 할 수 없습니다.

3. 극단적 인 움직임 도중 발생 한 중지 손실

격차 또는 스파이크와 같은 극단적인 시장 조건에서, 종료 손실은 강제 출출출을 유발할 수 있습니다.

최적화 방향

1. 낮은 단일 손실을 위해 중지 손실을 추가

이동 스톱 손실 또는 비율 스톱 손실은 이익을 잠금하고 완전한 리트레이싱을 방지하는 데 사용될 수 있습니다.

2. 시장 리스크 를 다양화 하기 위해 인덱스 와 상관관계

체계적인 시장 위험을 다양화하기 위해 매우 연관된 기호들 사이에서 거래 기회를 찾으세요.

3. 유효 하지 않은 거래 를 줄이기 위한 추가 필터

가격 변동성이나 부피 변화와 같은 필터는 유효하지 않은 반전 신호를 피하고 수익률을 향상시키기 위해 추가 될 수 있습니다.

결론

오시일레이팅 롱 쇼트 RSI 암호화 스위칭 전략은 이치모쿠와 RSI 지표를 결합하여 암호화폐의 반전 지점을 식별하며, 오시일레이션 중에 낮은 매입과 높은 수익을 취하는 판매에 적합합니다. 또한 위험을 제어하기 위해 스톱 로스 규칙을 설정합니다. 이 전략은 스톱 로스 메커니즘을 최적화하고 상관관계를 통해 위험을 다양화하고 조건 필터를 추가하여 더 향상시킬 수 있습니다. 라이브 테스트가 가치가 있습니다.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1  )

UseHAcandles    = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low


//Inputs
ts_bars = input(20, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(50, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(120, minval=1, title="Senkou-Span B Bars")
cs_offset = input(30, minval=1, title="Chikou-Span Offset")
ss_offset = input(30, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

//Volatility
//vollength = input(defval=1, title="VolLength")
//voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target")
//Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100)
//MovingAverage = sma(Difference, vollength)
//highvolatility = MovingAverage > voltarget

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

//RSI
change = change(haClose)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? (-1) * change : 0.0
avgGain = rma(gain, 14)
avgLoss = rma(loss, 14)
rs = avgGain / avgLoss
rsi = 100 - (100 / (1 + rs))

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(haClose, cs_offset-1) > 0
cs_cross_bear = mom(haClose, cs_offset-1) < 0
price_above_kumo = haClose > ss_high
price_below_kumo = haClose < ss_low
rsi_bullish = rsi > 50
rsi_bearish = rs < 50
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility

strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond)
strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond)

strategy.close("Long", when=bearish and not short_entry and time_cond)
strategy.close("Short", when=bullish and not long_entry and time_cond)




더 많은