오시일레이팅 롱 쇼트 RSI 암호화 전환 전략 (Oscillating Long-Short RSI Crypto Switching Strategy) 은 암호화폐를 위해 설계된 양적 거래 전략이다. 기술 지표 RSI를 이치모쿠 지표와 결합하여 가격 변동 중에 긴 및 짧은 신호를 식별하고 낮은 구매 및 높은 판매를 달성합니다. 3-4 시간 또는 더 긴 중장기 시간 프레임에 적합합니다.
이 전략은 주로 다음의 지표와 규칙에 기초합니다.
이치모쿠 지표
RSI 지표
입국 규칙
긴 엔트리: 텐칸 크로스 키
짧은 엔트리: 텐칸 크로스 키준 아래 (죽음 크로스) 및 가격 분해 센쿠 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)