
이 전략은 상대적으로 강한 지표인 RSI를 기반으로 간단한 하락 거래 전략을 구현한다. RSI가 30보다 낮을 때 구매하고, RSI가 40보다 높을 때 판매한다. 포지션 보유 기간은 10일로 고정된다. 이 전략은 중장기 거래에 적합하다.
이 전략은 주로 RSI 지표의 오버셀 지역과 오버 바이 지역이 거래 신호를 실현하는 것을 기반으로 한다. RSI 지표는 한 주기 내 폭이 떨어지는 속도를 반영한다. RSI 30 이하는 판매 지역을 초과하고 주가가 반등할 수 있음을 나타냅니다. RSI 70 이상은 구매 지역을 초과하고 주가가 떨어질 수 있음을 나타냅니다.
구체적으로, 이 전략은 먼저 10일 RSI를 계산한 다음 30과 40의 마이너스를 설정한다. 10일 RSI가 30보다 낮으면 구매 신호가 발생하고, 10일 RSI가 40보다 높으면 판매 신호가 발생한다. 구매 신호를 수신한 후, 입장을 열어 구매한다. 판매 신호를 수신한 후, 10일 이상 입장을 유지하면 곧바로 입장을 매각한다. 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)