이 전략은 RSI와 ZigZag 지표에 기반한 15분 트렌드 추적 전략 (Crypto 15-minute Trend Tracking Strategy Based on RSI and ZigZag Indicators) 이라고 불린다. 이 전략은 ETHUSD/T와 BTCUSD/T와 같은 15분 암호화 시장에 특별히 설계되었다. 이 전략은 과반 구매/ 과반 판매 수준을 판단하기 위한 RSI 지표와 가격 스파이크를 감지하기 위한 ZigZag 지표를 결합하여 트렌드 방향을 결정한다. 이 전략은 전형적인 트렌드 추적 전략에 속한다.
이 전략의 핵심 논리는 가격 추세를 결정하기 위해 RSI와 ZigZag 지표를 모두 사용하는 것입니다. 구체적으로, RSI 지표는 가격이 과소매 또는 과소매인지 판단합니다. ZigZag 지표는 가격이 상당한 비율의 스파이크를 가지고 있는지 감지합니다. 두 지표가 동시에 거래 신호를 제공하면 카운터 포지션에 대한 트렌드 역전이 있음을 결정합니다.
RSI 지표의 경우, 우리는 과잉 구매 라인을 75로 설정하고 과잉 판매 라인을 25로 설정합니다. RSI가 25 이하에서 25 이상으로 상승하면 과잉 판매에서 상승으로 전환되는 것으로 간주됩니다. RSI가 75 이상에서 75 이하로 떨어지면 상승에서 과잉 판매로 전환되는 것을 나타냅니다.
지그자그 지표의 경우, 우리는 가격 스파이크 문턱을 비율 변화의 1%로 설정합니다. 가격이 1% 이상의 스파이크를 만들 때, 지그자그 라인은 신호를 제공합니다. 트렌드 판단과 결합하여 트렌드 반전을 식별 할 수 있습니다.
두 지표가 신호를 내면, 이전 트렌드가 상승하고 RSI가 과잉 매입되고 ZigZag가 가격 스파이크를 보여주면, 가격은 상위권에 있으며 단축을 고려할 수 있음을 결정합니다. 반대로, 이전 트렌드가 하락하고 RSI가 과잉 매각되고 ZigZag가 가격 스파이크를 보여주면, 가격은 바닥에 있으며 긴장을 고려 할 수 있음을 결정합니다. 이 논리를 통해 우리는 트렌드를 따라갈 수 있습니다.
이 전략의 가장 큰 장점은 두 개의 지표를 결합함으로써 신호 품질을 향상시키는 것입니다. 단일 지표는 많은 잘못된 신호를 제공하는 경향이 있습니다. 그러나이 전략은 검증을 위해 RSI와 ZigZag을 사용하여 많은 가짜 신호를 필터링하고 승률을 향상시킵니다.
또 다른 강점은 유연한 매개 변수 조정이다. RSI와 ZigZag 매개 변수는 최상의 결과를 위해 다른 시장 조건에 따라 사용자 정의 할 수 있습니다. 이것은 전략에 큰 적응력을 제공합니다.
주요 위험은 지표로부터의 잘못된 신호입니다. 이중 지표 검증에도 불구하고 높은 변동성 중에도 거래 오류로 이어지는 오류가 발생할 수 있습니다. 부적절한 매개 변수 설정은 전략 성능에도 영향을 미칩니다.
리스크를 줄이기 위해, 우리는 적시에 손실을 멈추기 위해 포지션 보유 기간을 단축 할 수 있습니다. 시장 특성에 맞춰 파라미터 최적화 또한 매우 중요합니다. 비정상적인 시장 조건에 직면했을 때 수동 개입이 필요할 수 있습니다.
이 전략은 다음과 같은 측면에서 개선될 수 있습니다.
KDJ와 MACD와 같은 더 많은 지표를 추가 필터 신호에 결합된 판단을 위해 추가하십시오.
시장 변화에 적응하는 자동 매개 변수 최적화를 위한 기계 학습 알고리즘을 도입합니다.
시장 변동성에 기반한 동적 보호로 적응 가능한 스톱 로스 메커니즘을 구축합니다.
트렌드 강점을 기반으로 포지션 사이즈를 최적화합니다.
대체 전략을 세우고 비정상적인 시장에서 자동으로 전환합니다.
요약하자면, 이것은 전형적인 트렌드 다음 전략이다. 핵심 아이디어는 RSI와 ZigZag 지표를 조합하여 트렌드 반전을 식별하는 것입니다. 이점은 이중 지표 필터링을 통해 신호 품질을 향상시키는 데 있습니다. 지표 실패의 위험이 완전히 고려되어야하며 매개 변수 조정, 스톱 로스 최적화, 포지션 사이징 등을 통해 전략을 지속적으로 개선해야합니다. 전반적으로 이것은 암호화 시장에 대한 효과적인 트렌드 추적 솔루션을 제공합니다.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m 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/ // © SoftKill21 //@version=4 strategy("Crypto ZigZag RSI strategy 15min",overlay=true) length =input(5, title="RSI Length") overSold = input(25) overBought= input(75) p =close vrsi = rsi(p, length) var bool long = na var bool short = na long :=crossover(vrsi,overSold) short := crossunder(vrsi,overBought) var float last_open_long = na var float last_open_short = na last_open_long := long ? close : nz(last_open_long[1]) last_open_short := short ? close : nz(last_open_short[1]) entry_value =last_open_long entry_value1=last_open_short // ZZPercent = input(1, title="Minimum % Change", type=input.float) r1Level=entry_value s1Level=entry_value1 trend = 0 trend := na(trend[1]) ? 1 : trend[1] LL = 0.0 LL := na(LL[1]) ? s1Level : LL[1] HH = 0.0 HH := na(HH[1]) ?r1Level : HH[1] Pi = ZZPercent * 0.01 zigzag = float(na) if trend > 0 if r1Level >= HH HH := r1Level HH else if s1Level < HH * (1 - Pi) zigzag :=r1Level[1] trend := -1 LL := s1Level LL else if s1Level <= LL LL := s1Level LL else if r1Level > LL * (1 + Pi) zigzag := s1Level[1] trend := 1 HH := s1Level HH shortc=crossunder(trend,0) longc=crossover(trend,0) longa =input(true) shorta=input(false) if(longa) strategy.entry("long",1,when=longc) strategy.close("long",when=shortc) if(shorta) strategy.entry("short",0,when=shortc) strategy.close("long",when=longc)