더블 이동 평균 RSI 지표 조합 반전 전략


생성 날짜: 2023-11-10 18:01:09 마지막으로 수정됨: 2023-11-10 18:01:09
복사: 0 클릭수: 449
1
집중하다
1166
수행원

더블 이동 평균 RSI 지표 조합 반전 전략

개요

이 전략은 쌍평균선, 상대적으로 약한 지표 ((RSI) 와 패러폴리선 지표 ((PSAR) 를 조합하여 가격 반전점에 대한 판단을 수행하고, 반전점이 발생했을 때 구매 및 판매 작업을 수행하며, 반전 거래 전략에 속한다.

원칙

이 전략은 주로 다음과 같은 기술 지표들을 통해 가격 반전점을 판단합니다.

  1. 쌍평평선: 빠른 이동 평균선 ((MA 빠른 선) 과 느린 이동 평균선 ((MA 느린 선) 을 계산한다. 빠른 선에서 느린 선을 통과할 때, 다단 시장으로 판단하고, 더 많이 한다. 빠른 선 아래의 느린 선을 통과할 때, 공백 시장으로 판단하고, 공백을 한다.

  2. RSI 지표: RSI는 한 기간 동안의 평균 종결 상승과 평균 종결 하락을 계산하여 과매매 상황을 판단합니다. RSI가 70보다 크면 과매매 지역이며, 30보다 작으면 과매매 지역입니다.

  3. PSAR 지표: 패러블 라인 SAR 지표는 트렌드를 판단하는 방향이다. SAR 지점 아래는 다목적 시장, 위는 공백 시장이다.

  4. ADX 지표: ADX는 가격 변화의 방향적 강도를 계산하여 트렌드의 강도를 판단한다. ADX 값이 20보다 큰 것은 트렌드 상황을 나타내고, 20보다 작은 것은 평형을 나타낸다.

이 지표에 따라 구매 및 판매 신호의 논리는 다음과 같습니다.

구매 신호: 빠른 라인에서 느린 라인을 통과, RSI가 30보다 작아 (오버셀 지역), SAR 포인트가 가격 위에 있고, ADX가 20보다 크면 구매 신호를 낸다.

팔기 신호: 빠른 선 아래로 느린 선을 통과, RSI가 70보다 크다 (오버 바이 지역), SAR 포인트가 가격 아래로, ADX가 20보다 크다, 팔기 신호를 낸다.

구매 및 판매 신호가 발생했을 때 각각 10%의 포지션으로 다량 포지션과 빈 포지션을 구축하십시오. 반전 신호가 작동하지 않을 때 적시 포지션을 중단하십시오.

장점

  • 쌍평등선을 사용하여 큰 트렌드 방향을 판단하고, RSI와 SAR와 같은 지표를 추가하여 잘못된 신호를 제거하여 반전점을 비교적 정확하게 판단 할 수 있습니다.

  • 단일 기술 지표로 인한 잘못된 신호를 피하기 위해 여러 지표의 조합을 사용하여 판단하십시오.

  • 스톱로스 조건을 설정하여 위험을 효과적으로 제어할 수 있습니다.

  • 전략적 작업은 간단하고 명확하며 실행하기 쉽습니다.

  • 이 전략은 시장의 하락에 대한 대응방법이 있으며, 다양한 상황에 적용될 수 있다.

위험과 해결

  • 쌍평선으로 공백 신호를 생성할 때, 위조가 발생할 수 있으며, 다른 지표와 결합하여 판단할 필요가 있다. 적절히 평균선 주기를 연장하거나, 브린 벨트 지표에 추가하여 돌파의 진위를 판단할 수 있다.

  • RSI 지표는 파라미터를 잘못 설정하여 잘못된 신호를 생성할 수 있습니다. RSI 파라미터를 적절히 조정해야하며 RSI 신호를 확인하는 다른 지표도 추가해야합니다.

  • ADX 값이 20보다 낮으면, 무방향 시장의 반전 거래를 피하기 위해 거래를 중단하거나 ADX의 주기 변수를 적절히 줄여야 한다.

  • SetStringry 중지 지점은 너무 작아서 불필요한 중단이 발생할 수 있습니다. 시장의 변동 정도에 따라 합리적으로 중지 지점을 설정해야합니다.

  • 거래 빈도가 너무 높을 수 있으며, 거래 빈도를 낮추기 위해 양평선 주기를 적절히 조정할 수 있다.

최적화 방향

  • 다양한 길이의 주기들의 평균선 조합을 테스트하여 최적의 변수를 찾는다.

  • RSI의 다양한 변수 설정을 테스트하고, 오버 바이 오버 셀 판단을 최적화한다.

  • 다른 지표들, 예를 들어, 브린 띠, KDJ 등이 추가되어 구매/판매 신호의 판단 논리를 풍부하게 해줍니다.

  • 다양한 품종과 시장 상황에 따라 동적 스톱 로즈 메커니즘을 설정한다.

  • 이 전략은 이윤의 흐름을 더 잘 파악할 수 있게 해준다.

  • 다양한 ADX 변수를 테스트하여 트렌드 강도를 가장 잘 판단하는 수치를 찾습니다.

  • 자동 손실 모듈을 추가하여 전략이 자동으로 손실을 멈출 수 있도록 합니다.

요약하다

이 전략은 쌍평평선으로 큰 방향을 판단하고, RSI, SAR 등의 지표와 결합하여 역전 신호 필터링을 수행합니다. 최적화 매개 변수가 설정된 후, 가격 역전점을 효과적으로 판단하여 역전 전 후의 추세를 포착 할 수 있습니다. 실적에서 위험을 제어하고, 합리적인 스톱로스 조건을 설정하고, 전략을 더 안정적이고 수익을 높이기 위해 매개 변수를 계속 최적화하십시오.

전략 소스 코드
/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Based on Senpai BO 3
strategy(title="Senpai_Strat_3", shorttitle="Senpai_Strat_3", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
src = close

//psar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
psar = sar(start, increment, maximum)


//ADX Init
adxlen = input(30, title="ADX Smoothing")	
dilen = input(30, title="DI Length")	
dirmov(len) =>	
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]
	
adx(dilen, adxlen) => 	
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]
	
[sig, up, down] = adx(dilen, adxlen)	


// BB Init
source = close
length = input(50, minval=1)
mult = input(0.5, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)


//RSI CODE
up1 = rma(max(change(src), 0), 14)
down1 = rma(-min(change(src), 0), 14)
rsi = down1 == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up1 / down1))


//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 

//////////////////// Algo

//if (rsi>50 and n1>n2)
   //strategy.exit("Close", "Short")
  // strategy.entry("Long", strategy.long)
//if (rsi<50 and n2>n1)
   //strategy.exit("Close", "Long")
//   strategy.entry("Short", strategy.short)

//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200  and rsi >= 60?red : silver
//short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close = 100%
//long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close = 100%
short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close
long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close

//Entry

long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1
strategy.entry("short", strategy.short,qty = 10, when=short)
strategy.entry("long", strategy.long,qty=10, when=long)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)



/////////////////////
///PLOT

plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)


//plot(short,"short",color=red,linewidth=1)
//

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)

//strategy.exit(id="Stop", profit = 20, loss = 100)