이 문서에서는 상대적 강도 지수 (RSI) 와 트레일링 스톱을 기반으로 긴 거래를 위한 양적 거래 전략을 소개합니다. 이 전략은 트렌드 트렌드를 따르는 고전적인 전략으로, 시장이 과잉 매매되면 긴 포지션을 입력하고 과잉 매매되면 포지션을 닫는 것을 통해 과잉 매매 및 과잉 매매 상황을 결정합니다. 동시에, 이 전략은 리스크를 제어하기 위해 비율 기반의 트레일링 스톱을 사용합니다. 이것은 강한 시장에서 상승 추세를 포착하기 위해 고안된 전략입니다.
이 전략의 핵심은 상대적 강도 지수 (RSI) 이다. RSI는 일정 기간 동안 가격 변화의 크기를 측정하는 데 사용되는 모멘텀 오시일레이터이다. 계산 공식은:
RS = Average gain over N days / Average loss over N days
RSI = 100 - 100 / (1 + RS)
여기서 N는 RSI를 계산하는 기간이며 일반적으로 14로 설정됩니다.
전략 논리는 다음과 같습니다.
이 전략은 시장의 하향에서 상승으로의 전환의 시작에 지위를 입력하고, 주요 상승 추세를 포착하기 위해 상승 시장의 끝에서 지점을 종료하려고합니다.
이 기사에서는 RSI와 트레일링 스톱을 기반으로 긴 시장을 취하기 위한 양적 거래 전략을 소개했다. 이 전략은 위험 통제를 위해 비율 기반 트레일링 스톱을 사용하는 동시에 입출점과 출점을 위해 RSI 과잉 구매 및 과잉 판매 신호를 사용한다. 이것은 초보자도 배울 수 있는 간단하고 실용적인 트렌드 추후 전략이다. 그러나, 이 전략에는 범위와 관련된 시장에서 낮은 성과와 스톱 로스 및 포지션 관리에 대한 유연성이 부족하는 것과 같은 몇 가지 한계도 있다. 이러한 단점을 해결하기 위해 우리는 트렌드 필터링, 동적 스톱 로스, 포지션 관리, 그리고 더 강력한 수익을 얻기 위해 장기 단위 헤지 등 측면에서 전략을 최적화할 수 있다. 양적 거래 전략의 개발은 지속적인 최적화와 반복의 과정이며, 투자자들이 지속적으로 요약하고 실제에서 전략을 정비하도록 요구한다.
/*backtest start: 2023-03-02 00:00:00 end: 2024-03-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Strategy (Long)", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = ta.rsi(price, length) co = ta.crossover(vrsi, overSold) cu = ta.crossunder(vrsi, overBought) // *** Signals *** enter_long = ta.crossover(vrsi, overSold) enter_short = ta.crossunder(vrsi, overBought) close_long = ta.crossunder(vrsi, overBought) close_short = ta.crossunder(vrsi, overBought) // *** Risk management *** entry_price = close percent_diff = input(5) stop_loss_price_long = (1 - percent_diff / 100.) * entry_price stop_loss_price_short = (1 + percent_diff / 100.) * entry_price // *** Positions *** if enter_long and strategy.position_size == 0 strategy.entry("Long", strategy.long) strategy.exit("SL Long", "Long", stop = stop_loss_price_long) if enter_short and strategy.position_size == 0 strategy.entry("Short", strategy.short, qty=.001) strategy.exit("SL short", "Short", stop = stop_loss_price_short) if close_long strategy.close("Long", "Exit Long") if close_short strategy.close("Short", "Exit Short")