롱앤숏 RSI 환율 변동 전략


생성 날짜: 2023-12-25 13:49:48 마지막으로 수정됨: 2023-12-25 13:49:48
복사: 0 클릭수: 607
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

롱앤숏 RSI 환율 변동 전략

개요

진동 다공간 RSI 교환 전략은 암호화폐에 사용되는 양적 거래 전략이다. 그것은 시장 기술 지표인 RSI와 ICHIMOKU 지표를 결합하여 가격 진동시 다공간 신호를 식별하여 낮은 가격으로 구매하고 높은 가격으로 판매한다. 그것은 3-4 시간 이상의 중장선 주기에도 적용된다.

전략 원칙

이 전략은 주로 다음과 같은 지표와 규칙을 기반으로 합니다.

ICHIMOKU 지표

  • 텐칸 라인: 지난 20개의 K 라인의 최고 최저 가격 중점
  • Kijun 선: 지난 50개의 K 선의 최고 최저 가격 중점
  • 센쿠 A 선: 테 선과 키 선의 중간 지점
  • 센쿠 B선: 지난 120개 K선 중 최고 최저 가격 중점
  • 치코우 선: 현재 K선 종점 가격의 상위 30 K선

RSI 지표

  • 0에서 100까지
  • 50 이상은 멀티 헤드 신호, 50 이하는 빈 헤드 신호

참가 규칙
다중 입점: 텐칸 선에서 키 선 ((금의 교차) 을 통과하고 가격이 센쿠 A&B 선을 뚫고 RSI가 50보다 높습니다 공허 입구: 텐칸 선 아래로 키 선 ((죽음의 교차) 을 통과하고 가격이 센쿠 A&B 선 아래로 떨어지며 RSI가 50보다 낮습니다.

탈퇴 규칙
출장 반대 신호가 발생하면 즉시 피해를 입히지 않는다

이 전략은 중·장기 추세, 단기자금 유동성 및 과매매 상황을 고려하여 불안정한 상황에서 역전 기회를 잡습니다. 큰 손실을 피하기 위해 손실을 막는 규칙을 설정합니다.

우위 분석

1. 여러 지표의 종합 판단으로 높은 확실성을 보장한다

이 전략은 ICHIMOKU의 트렌드를 고려하고 저항 판단을 뒷받침하며, RSI의 과매매와 K선 엔티티의 방향에 대한 자금 유동성을 고려하여 신호의 신뢰성을 보장합니다.

2. 위기 상황에 적합하고, 자주 수익을 올립니다.

암호화폐 시장의 큰 변동성으로 인해, 이 전략은 종종 하락과 하락을 달성하기 위해 격동적인 상황의 역전 기회를 충분히 포착할 수 있다.

3. 위험은 통제할 수 있습니다.

중장기적 추세와 단기적 상황을 종합적으로 고려한 전략으로, 추락의 위험을 피할 수 있으며, 동시에 손실 회피 위험을 설정할 수 있다.

위험 분석

1. 일부 동작을 놓칠 수 있습니다.

이 전략은 역전으로 운영되며, 장기간 운영되는 경우, 이 전략은 자주 흔들리며, 자금을 공격한다.

2. 단일 종, 위험 분산 불가능

이 전략은 단일 품종만을 거래하는 것으로, 시장의 체계적인 위험을 분산시킬 수 없습니다.

3. 극단적인 상황에서의 상쇄

극단적인 상황에서는, 예를 들어, 공중에서 뛰어내리고, 양력 폭발을 일으키는 경우, 전략은 스톱 손실을 유발하여 퇴출을 강요할 수 있다.

최적화 방향

1. 단편적 손실을 줄이기 위해 손실을 막는 전략을 늘리십시오.

이윤을 고정하기 위해 이동 중지 또는 잔액 손실 비율을 설정할 수 있습니다. 이윤이 0으로 돌아가는 것을 방지합니다.

2. 주식 지수 관련성과 결합하여 시장 위험을 분산합니다.

시장의 체계적인 위험을 분산하기 위해 주식 지수 관련성이 높은 품종에서 거래 기회를 찾을 수 있습니다.

3. 조건부 필터링을 늘리고 무효 거래를 줄여라

가격 변동률, 거래량 변화 등의 조건 필터를 설정할 수 있으며, 비효율적인 반전 신호를 피하고, 수익을 얻는 확률을 높일 수 있다.

요약하다

흔들리는 다공간 RSI 교환 전략은 ICHIMOKU 지표와 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)