
이 전략은 상대적으로 약한 지표 ((RSI) 와 부린 띠를 결합하여 Litecoin ((LTC) 를 자동으로 사고 팔 수 있는 거래 전략을 구현한다. 이 전략은 LTC/USD의 거래 쌍에 적용되며, 운영 환경은 Bitfinex의 디지털 통화 거래소이다.
이 전략은 주로 다음 두 가지 지표를 기반으로 거래 결정을 내립니다.
상대적 강도 지수 (Relative Strength Index, RSI): 이 지수는 거래 품종의 폭과 속도를 반영하여 과대 평가되거나 과소 평가되었는지 판단합니다. RSI가 20보다 낮으면 과매매로 간주되며 80 이상이면 과매매로 간주됩니다.
부린 띠 ((Bollinger Bands): 이 지표는 세 개의 선을 포함하고 있으며, 각각 중선, 상반도 및 하반도이다. 중선은 n 일 종료 가격의 이동 평균이며, 상반도 및 하반도는 각각 중선과 2배의 n 일 표준 차이를 더하는 것과 같다. 가격이 상반도에 가까워지면 초매구역이며, 하반도에 가까워지면 초매구역이다.
이 두 가지 지표에 따라 전략의 거래 결정 규칙은 다음과 같습니다.
구매 규칙RSI가 하위에서 20을 넘으면, 초매가 반전될 것으로 간주되며, 이 시점에서는 부린을 넘어선다면 구매 신호가 발생한다.
규칙을 팔아RSI가 80을 넘어서면, 부린을 넘어서면 판매 신호를 냅니다.
이 전략은 시장의 과매매 상태와 가격의 돌파구를 동시에 고려하여 거래 신호를 생성하는 것을 볼 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
RSI와 브린띠의 두 지표와 결합하여 시장 상태를 종합적으로 판단하면 거래 신호가 신뢰성이 높습니다.
RSI 지표는 과매매 상태를 판단하고, 브린 밴드 지표는 가격과 정상 분포의 오차 정도를 반영하며, 둘은 상호 보완한다.
동시에 지표 상태와 가격 돌파구를 고려하여, 변동 상황에서 잘못된 신호를 발생하지 않도록 한다.
전략 변수 설정이 합리적이며, RSI와 브린 밴드의 주기 길이와 핵심 값이 최적화되어 지표의 실패가 발생하지 않습니다.
이 전략은 LTC라는 거래 품종을 특정적으로 최적화하여, 역사적인 데이터에 따라 재검토 효과가 더 좋다. 만약 변수가 계속 최적화된다면, 효과는 더 나아질 수 있다.
이 전략은 장점이 있지만, 다음과 같은 위험도 있습니다.
RSI와 부린은 모두 실패할 수 있으며, 특히 비정상적인 상황에서는 신호가 신뢰할 수 없습니다. 이 경우 전략은 잘못된 거래를 일으킬 수 있으며, 이로 인해 손실이 발생할 수 있습니다.
이 전략은 주로 역사적 데이터에 따라 파라미터를 최적화한다. 시장 환경이 크게 변하면 이러한 파라미터 설정이 더 이상 적용되지 않을 수 있으며, 전략의 효과가 감소한다.
두 가지 지표가 고려되더라도, 위기 상황에서는 여전히 갇힐 수 있습니다. 이 경우 손실과 기회 비용에 직면 할 수 있습니다.
전략은 거래 비용 문제를 고려하지 않습니다. 거래 빈도가 너무 높거나 포지션이 너무 커지면 거래 비용이 수익을 빠르게 훼손 할 수 있습니다.
위와 같은 위험은 변수를 조정하고, 더 많은 지표와, 포지션 및 거래 빈도를 제어하는 방법과 같은 방법으로 감소시킬 수 있습니다.
이 전략에는 다음과 같은 몇 가지 최적화 방향이 있습니다.
다른 RSI와 브린 밴드 파라미터 설정을 테스트하여 더 적합한 주기 길이나 핵심값을 찾습니다.
계정 잔액에 따라 거래당 입장을 동적으로 조정하는 등 포지션 제어 조치를 추가하십시오.
스톱포인트를 설정하거나, 다른 지표와 함께 스톱포인트와 스톱포인트를 판단하여 최대 회수량을 낮추십시오.
실 디스크 거래의 슬라이드 코스트를 고려하여 파라미터와 스톱 스포트를 수정한다.
가격 변동률 지표, 거래량 등과 같은 더 많은 지표와 결합하여 다인자 모델을 형성하여 신호의 정확성을 향상시킵니다.
LTC의 다른 시상 단계와 주기들에 대해, 전략이 시장 환경에 따라 자신을 조정할 수 있도록 동적 파라미터 메커니즘을 설계한다.
이 전략은 우선 과매매 상태를 판단한 다음 가격 돌파구와 결합하여 거래 신호를 생성합니다. LTC에 대한 약간의 적응성이 있습니다. 그러나 지표 실패, 시장 상황 변화 및 거래 비용과 같은 위험을 예방하는 데 주의해야 합니다.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("LTCUSD BB + RSI 30MIN,", shorttitle="LTCUSD BBRSI 30MIN ", overlay=true)
// Strategy Tester Start Time
sYear = input(2019, title = "Start Year")
sMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
sDay = input(01, title = "Start Day", minval = 01, maxval = 31)
sHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = true
///////////// RSI
RSIlength = input(5,title="RSI Period Length")
RSIoverSold = input(20, minval=1,title="RSIL")
RSIoverBought = input(80, minval=1,title="RSIh")
price = open
vrsi = rsi(price, RSIlength)
///////////// Bollinger Bands
BBlength = input(60, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50,title="Bb")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=silver,title="Bollinger Bands Lower Line")
fill(p1, p2)
///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)
///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))
if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
strategy.entry("RSI_BB_L", strategy.long and startTime, stop=BBlower, comment="RSI_BB_L")
else
strategy.cancel(id="RSI_BB_L")
if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
strategy.entry("RSI_BB_S", strategy.short and startTime, stop=BBupper, comment="RSI_BB_S")
else
strategy.cancel(id="RSI_BB_S")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)