이 전략은 상대 강도 지수 (RSI) 를 기반으로 한 간단한 임계 거래 전략을 구현합니다. RSI가 30의 임계 이하로 떨어지면 구매하고 RSI가 40의 임계 이상으로 상승하면 판매합니다. 보유 기간은 10 일로 고정됩니다. 전략은 중장기 거래에 적합합니다.
이 전략은 주로 RSI 지표의 과반 판매 및 과반 구매 구역을 사용하여 거래 신호를 생성합니다. RSI는 기간 동안 가격 변화 속도를 반영합니다. RSI 30 이하는 가격이 반등 할 수있는 과반 판매 구역을 나타냅니다. RSI 70 이상은 가격이 떨어질 수있는 과반 구매 구역을 나타냅니다.
특히, 전략은 먼저 10일 RSI를 계산하고, 그 다음 30과 40의 임계치를 설정합니다. 10일 RSI가 30 이하로 떨어지면 구매 신호가 생성됩니다. 10일 RSI가 40 이상으로 상승하면 판매 신호가 생성됩니다. 구매 신호를 수신하면 긴 위치를 여깁니다. 판매 신호를 수신하면 보유일이 10일을 초과하면 직접 위치를 닫습니다. 그렇지 않으면 판매를 위해 10 일까지 계속 유지됩니다.
이 전략은 간단하고 이해하기 쉽는데, RSI를 이용한 과잉 판매 및 과잉 구매 구역을 식별하여 지표에 기반한 한계 거래 전략을 구현합니다.
이 전략은 일반적인 RSI 지표를 사용합니다. RSI 매개 변수는 다른 기간과 시장 환경에 맞게 조정 및 최적화 할 수 있습니다.
RSI는 가격 변화 추세를 반영 할 수 있습니다. 전략은 단순한 추세를 따르는 것을 달성하기 위해 RSI를 기반으로 가격 움직임을 판단합니다.
이 전략은 단일 손실을 효과적으로 제어하기 위해 고정된 보유 기간을 채택합니다. 한편, RSI 매개 변수는 잘못된 거래를 줄이기 위해 조정 될 수 있습니다.
RSI 매개 변수는 유연하게 설정할 수 있지만 과도한 최적화 및 백테스트 편향은 실시간 거래 위험을 초래할 수 있습니다.
RSI 는 추세를 따르는 지표이며 갑작스러운 사건에 대해 느리게 반응하며 약간의 지연 효과를 나타냅니다. 다른 지표가 결합되어야합니다.
고정 보유 기간은 이익 취득 및 중단 손실 시점을 의무화하고 시장 변화에 따라 조정할 수 없습니다. 중지 이익 및 중단 손실의 동적 조정이 바람직합니다.
다른 값의 RSI 매개 변수 및 테스트 영향을 최적화합니다.
다른 지표를 추가하여 다른 지표의 강점을 활용한 결합 시스템을 형성합니다.
시장 조건에 따라 동적인 조정을 허용하기 위해 수익/손실 중단 전략을 강화합니다.
포지션 사이즈를 최적화하여 시장 조건에 따라 포지션을 동적으로 조정합니다.
전략에 적합한 제품을 테스트하고, 높은 변동성을 가진 액체 제품을 선택합니다.
거래 시간을 최적화하고 전략에 대한 영향을 테스트합니다.
이 전략은 상대적으로 간단하며, RSI를 사용하여 임계 기반의 거래 전략을 구현합니다. 그것의 장점은 단순성, 이해하기 쉽고 상대적으로 좋은 위험 통제를 포함한다. 그러나, RSI 매개 변수 최적화 어려움과 유연하지 않은 스톱 이익/손실과 같은 문제가 존재한다. 미래의 향상에는 매개 변수 최적화, 스톱 이익/손실 향상, 포지션 사이징 등이 포함됩니다. 라이브 거래 전에 추가 최적화가 필요합니다.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h 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/ // © Bitduke //@version=4 // strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=1, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075) overbought = input(40, title="overbought value") oversold = input(30, title="oversold value") // Component Test Periods Code Begin testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2021, "Backtest Stop Year") testStopMonth = input(16, "Backtest Stop Month") testStopDay = input(2, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Test Periods Code End ////////////////////////////////////////////////////////////////////// myrsi = rsi(close, 10) > overbought myrsi2 = rsi(close, 10) < oversold barcolor(myrsi ? color.black : na) barcolor(myrsi2 ? color.blue : na) myEntry = myrsi2 and hour(time) <= 9 strategy.entry("Buy Signal", strategy.long, when = myEntry and testPeriod()) // Close 10 bar periods after the condition that triggered the entry //if (myEntry[10]) //strategy.close("Buy Signal") strategy.close("Buy Signal", when = barssince(myEntry) >= 10 or myrsi and testPeriod()) //strategy.entry("Sell Signal",strategy.short, when = myrsi2)