이 전략은 상대적 강도 지표 (RSI) 지표에 기초하여 과반 구매 및 과반 판매 상황을 식별하고 트렌드를 추적하기 위해 설계되었습니다. RSI가 과반 판매 라인 아래에있을 때 길게 이동하고 RSI가 과반 구매 라인 위에있을 때 짧게 이동하여 시장의 주요 트렌드를 따라 수익을 창출하는 것을 목표로합니다.
이 전략은 RSI 지표를 사용하여 시장에서 과소매와 과소매 조건을 식별합니다. RSI는 특정 기간 동안의 가격 변화에 따라 계산됩니다. 30 이하의 RSI는 과소매로 간주되며 70 이상의 RSI는 과소매로 간주됩니다.
특히, 이 전략은 먼저 RSI 매개 변수 길이=14, 과잉 구매=70, 과잉 판매=30를 정의하고, 그 다음 닫기 가격에 기초하여 RSI 값 vrsi를 계산합니다. vrsi가 과잉 구매 라인 이상 또는 과잉 판매 라인 아래에 넘을 때, 그에 따라 긴 또는 짧은 거래를 유발합니다. 거래를 입력 한 후, etoroStopTicks 틱의 스톱 손실이 설정됩니다. 거래 창 내에서 스톱 손실이 유발되면 포지션은 종료됩니다.
이 방법으로 전략은 시장의 주요 트렌드를 따라갈 수 있습니다. 과잉 판매 상황에서 길고 과잉 구매 상황에서 짧습니다.
해결책:
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
다양한 RSI 기간과 과잉 구매/ 과잉 판매 수준을 테스트하여 최적의 매개 변수를 찾고 잘못된 신호를 줄이십시오.
트렌드 방향을 판단하고 전환점에 잘못된 신호를 피하기 위해 MA, MACD를 추가하십시오.
ATR을 사용해서 시장 변동을 더 잘 추적하기 위해 적응식 스톱 로스를 설정합니다.
입력 정확성을 높이기 위해 RSI 신호에 브레이크오웃, 볼륨 증가와 같은 다른 조건을 추가합니다.
이 전략은 RSI를 사용하여 과반 구매 및 과반 판매 상황을 식별하여 트렌드를 잡습니다. 전통적인 추적 중지 전략에 비해 시장을 지표로 타이밍하는 것이 장점입니다. 그러나 RSI 분화 및 트렌드 역전을 감지 할 수없는 문제와 같은 문제는 해결해야합니다. 매개 변수 최적화, 트렌드 판단, 동적 중지 손실에 대한 추가 개선은 안정성과 수익성을 향상시킬 수 있습니다.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Etoro Strategy", overlay=true, max_bars_back=2000) // To use: // Capital = capital * leverage // Slippage Ticks: 3, 5 ? (Mainly for spread) // etoroStopTicks: Set it accordingly to the stock (to corresponds to etoro default of 50 % for exemple...) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 12, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 1995) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 1995) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) etoroStopTicks = input( 120 ) // 120 because it is approximatively the number of ticks for default SL of 50% at x5 leverage for copper (no fee)... price = close vrsi = rsi(price, length) if (not na(vrsi)) if (crossover(vrsi, overSold)) strategy.entry("RsiLE", strategy.long, comment="RsiLE", when = window()) if (crossunder(vrsi, overBought)) strategy.entry("RsiSE", strategy.short, comment="RsiSE", when = window()) strategy.exit("exit SE", "RsiSE", loss=etoroStopTicks, when = window()) strategy.exit("exit LE", "RsiLE", loss=etoroStopTicks, when = window()) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)