
이 전략은 RSI 지표의 오버 바이 오버 소드 원리를 적용하여, 다중 주기 RSI와 결합하여 판단하여, 범주적 작업을 수행한다. 전략은 RSI의 주기적 설정에 따라 오버 바이 오버 소드 신호를 판단하고, RSI의 이동 평균을 사용하여 필터링하여, 잘못된 신호를 피한다. RSI가 이동 평균을 넘어서면 구매 신호를 생성하고, 아래로 넘어가면 판매 신호를 생성하여, 전형적인 평평선 교차 운영 방식을 형성한다.
이 전략은 주로 RSI 지표의 과매매 판단을 통해 거래 신호를 생성한다. RSI 지표는 상대적으로 강한 지수를 나타냅니다. 그것의 계산 공식은: RSI = 100 - (100 / (1 + RS)), 여기서 RS는 한 기간 동안의 평균 마감 상금과 평균 마감 상금의 비율에 해당한다. RSI 지표는 0에서 100 사이이며, 일반적으로 30보다 낮은 것은 과매, 70보다 높은 것은 과매로 간주된다.
이 전략은 높은 변수인 초고무와 낮은 변수인 초고무를 설정하여 RSI가 초고무보다 높을 때 초고무로 판단하고, RSI가 초고무보다 낮을 때 초고무로 판단한다. 전략의 초고무의 기본값은 70이고, 초고무의 기본값은 30이다.
구매 및 판매 신호를 생성하기 위해, 전략은 RSI 지표의 이동 평균을 사용하여 필터링한다. RSI 지표의 상위 이동 평균을 통과하면 구매 신호를 생성하고, 이동 평균을 통과하면 판매 신호를 생성한다. 이동 평균 파라미트 periodos_media는 14주기를 기본으로한다.
구매 및 판매 신호를 생성 한 후, 전략은 포지션을 열고 다단계 또는 공백 거래를 한다. 또한, 전략은 손실을 막기 위해 “%“를 설정하여 손실을 막고 이익을 잠금화한다.
RSI를 사용하여 과매매를 판단하고, 하락의 추종을 피하십시오.
RSI 지표의 이동 평균을 사용하여 필터링하여 거짓 신호를 피하십시오.
RSI 지표의 다주기 설정과 결합하여 보다 안정적인 거래 신호를 구현한다.
제약 제약 장치 설치, 효과적으로 위험을 제어
전략적 논리는 간단하고 명확하며, 이해하기 쉽고 수정하기 쉽습니다.
다양한 품종과 주기에 맞는 사용자 정의 가능한 파라미터
RSI 지표는 지연되어 있고, 가격 반전의 최적의 시점을 놓칠 수 있다.
이동 평균은 거래 신호를 지연시켜 트렌드 반전을 적시에 잡을 수 없습니다.
고정 오버 바이 오버 셀 파라미터 설정은 유연하지 않으며, 다른 주기 및 품종에 따라 조정해야 한다.
정지수준을 잘못 설정하면 손실이 발생하거나 수익이 누락될 수 있습니다.
다중 헤드 공백 포지션은 1개만 있고, 그 자금을 충분히 활용할 수 없습니다.
MACD, KD 등의 다른 지표와 결합하여 거래 신호를 판단한다.
이동 평균 트렌드 추적을 적용하십시오.
동적 과매매 매매 변수를 설정하여 시장의 변동에 따라 조정하십시오.
정지 손실을 추적하는 것과 같은 정지 손실 알고리즘을 최적화하십시오.
포지션 관리 메커니즘을 추가하고, 자금 규모에 따라 포지션을 동적으로 조정한다.
트렌드 필터를 추가하여 불안한 시장에서 자주 거래되는 것을 피하십시오.
최적화 파라미터를 재검토하여 최적의 파라미터 조합을 선택한다.
이 전략은 RSI 지표의 오버 구매 오버 판매를 기반으로 이동 평균을 사용하여 필터링 거래 신호를 생성하고 전형적인 기간 간 거래 방식을 구현합니다. 전략은 명확한 논리 구조와 매개 변수 설정을 가지고 있으며, 매개 변수를 다른 품종과 기간에 적용하여 신뢰할 수 있고 효과적인 기간 간 거래 전략입니다. 그러나 RSI 지표와 이동 평균과 같은 도구는 또한 제한이 있으며, 전략 매개 변수가 더 적응 가능하고, 필터링 효과가 더 좋으며, 위험을 최소화하고 수익을 극대화 할 수 있도록 추가 최적화가 필요합니다.
/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 3m
basePeriod: 1m
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/
// © samuelkanneman
//@version=4
strategy("RSI KANNEMAN")
//////Entrada///////
i_startTime = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from")
i_endTime = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading")
sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 )
sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 )
l1=hline(sobrecompra)
l2=hline(sobreventa, color=color.purple)
periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 )
periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 )
var SL =0.0
var TP=0.0
StopLoss = input(2.0, title="SL %", step=0.2)
TakeProfit = input(5.0, title="TP %", step=0.2)
//////Proceso///////
mi_rsi=rsi(close,periodos)
mm_rsi=sma(mi_rsi,periodos_media)
Es_compra= crossover(mm_rsi,sobreventa)
Es_venta= crossunder(mm_rsi,sobrecompra)
comprado= strategy.position_size > 0
vendido = strategy.position_size < 0
//time to test
dateFilter = true
//timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0)
// long
if (not comprado and Es_compra and dateFilter )
// realizar long
cantidad = strategy.equity/hlc3
strategy.entry ("compra", strategy.long , cantidad)
SL := close*(1-(StopLoss/100))
TP := close*(1+(TakeProfit/100))
if close >= TP
strategy.close ("compra" , comment="Salto TP")
if (comprado and Es_venta )
strategy.close ("compra" , comment="Sobre Venta")
if close <= SL
strategy.close ("compra" , comment="Salto SL")
// short
if (not vendido and Es_venta and dateFilter )
// realizar short
cantidad = strategy.equity/hlc3
strategy.entry ("venta", strategy.short , cantidad)
SL := close*(1+(StopLoss/100))
TP := close*(1-(TakeProfit/100))
if close <= TP
strategy.close ("venta" , comment="Salto TP")
if (vendido and Es_compra )
strategy.close ("venta" , comment="Sobre Compra")
if close >= SL
strategy.close ("venta" , comment="Salto SL")
///////Salida//////
fill(l1,l2)
plot(mi_rsi)
plot(mm_rsi, color=color.yellow)
bgcolor(Es_compra ? color.blue : na , transp=0)
bgcolor(Es_venta ? color.red : na , transp=0)
// 1d 70 22 5 4 3 15 6 meses
//1h 70 20 6 4 5 7 1 mese
//15m 70 20 5 4 4 7 1 semana