다중 지표에 기반한 트렌드 추적 전략

저자:차오장, 날짜: 2023-11-23 15:43:02
태그:

img

전반적인 설명

이 전략은 트렌드 추적을 구현하기 위해 RSI, MA, EMA 및 볼링거 밴드와 같은 여러 지표를 결합하여 트렌드를 식별합니다. 상대적으로 상승 추세가 확인되면 전략은 긴 위치를 설정합니다. 반대로 상대적으로 하락 추세가 확인되면 전략은 짧은 위치를 설정합니다.

원칙

이 전략의 핵심 논리는 RSI, MA, EMA 및 볼링거 밴드를 결합하여 가격 트렌드를 식별하는 것입니다. 구체적으로, 그것은 동시에 두 개의 MA 라인을, 하나는 10 기간으로 설정하고 다른 하나는 5 기간으로 설정합니다. 동시에 두 개의 EMA 라인이 각각 30 및 20의 매개 변수로 그려집니다. RSI 지표 매개 변수는 7로 설정됩니다.

닫기 가격이 5주기 MA 라인, 20주기 EMA 라인 및 하부 레일 아래로 넘어갈 때, RSI 지표가 25 과잉 매수 라인 아래로 넘어갈 때, 전략은 가격이 상대적으로 상승하고 긴 지점에 들어갈 것이라고 판단합니다.

반대로, 종료 가격이 10주기 MA 라인, 30주기 EMA 라인 및 상부 레일을 넘어서고, RSI 지표가 75 oversold 라인을 넘어서면, 전략은 가격이 상대적으로 하락하고 짧은 위치에 들어갈 것이라고 판단합니다.

보시다시피, 이 전략은 이동평균을 깨는 가격과 RSI 지표 반전의 논리를 결합하여 잠재적 추세를 파악하고 그 추세를 추적합니다.

이점 분석

이 전략의 가장 큰 장점은 트렌드를 식별하기 위해 여러 지표를 사용한다는 것입니다. 이는 잘못된 신호를 효과적으로 줄일 수 있습니다. 구체적으로, 가격은 이동 평균과 볼링거 대역을 동시에 뚫고 거래 신호를 유발해야하며, RSI 지표는 또한 많은 소음을 필터하는 랑가르드 전환을 받아야합니다.

또한 전략은 단기적인 소음보다는 비교적 명확한 추세를 추적하여 수익 가능성을 증가시킵니다. 일반적으로이 전략은 유연한 구성, 중재의 어려움 및 높은 수익 확률과 같은 장점을 가지고 있습니다.

위험 분석

어떤 전략도 100% 이윤을 낼 수 없다는 점에 유의해야 하며, 이 전략도 예외는 아닙니다. 주요 위험은 여러 지표의 조합 판단이 잘못되어 잘못된 거래로 이어지는 것입니다. 또한 갑작스러운 사건도 전략을 무효화 할 수 있습니다.

위험을 줄이기 위해, 지표 매개 변수는 수익성을 최적화하기 위해 적절하게 조정될 수 있다. 또한, 단일 손실을 제어하기 위해 스톱 로스 포인트를 설정하는 것도 매우 필요하다. 물론, 피할 수 없는 시스템 위험은 투자자로부터 심리적 준비를 필요로 한다.

최적화

이 전략의 주요 최적화는 다음과 같습니다.

  1. 더 많은 유형의 지표의 조합을 테스트하여 더 나은 다중 지표 조합을 찾습니다.

  2. 전략의 안정성을 높이기 위해 지표 매개 변수를 최적화합니다.

  3. 판단을 돕고 정확도를 높이기 위해 기계 학습 모델을 늘려라

  4. 리스크를 통제하기 위한 적응식 스톱 로스 메커니즘을 강화한다.

  5. 안정성과 수익성을 높이기 위한 백테스트 최적화

결론

이 전략은 RSI, MA, EMA 및 볼링거 밴드를 기반으로 한 비교적 상승 추적 메커니즘을 설계하고 여러 지표를 결합하여 가격 추세를 판단한 후 방향 포지션을 입력합니다. 판단하기 위해 여러 지표를 통합하면 비교적 명확한 추세를 추적하여 잘못된 판단 확률을 효과적으로 줄이고 소음을 필터 할 수 있습니다. 물론 위험 관리에도 관심이 필요합니다. 전반적으로이 전략은 큰 최적화 공간을 가지고 있으며 기계 학습 및 기타 수단으로 더 나은 결과를 얻을 수 있습니다.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 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/
// © lepstick-TC
//@version=4
strategy("1", overlay=true)
length = input(5, minval=1)
src = input(close, title="Source")
mult = input(1.5, minval=0.001, maxval=50)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)
rsicok=input(75,minval=0,title="Rsi yüksek")
rsiaz=input(25,maxval=50,title="Rsi düşük")
rsizaman=input(7,minval=0,title="Rsi zaman")
smadeger=input(10,minval=0,title="Ma üst")
smadeger2=input(5,minval=0,title="Ma alt")
emadeger=input(30,minval=0,title="Ema üst")
emadeger2=input(20,minval=0,title="Ema alt")
myrsi=rsi(close,rsizaman)
myrsi2=rsi(close,rsiaz)
myrsi3=rsi(close,rsicok)
myma=sma(close,smadeger)
myma2=sma(close,smadeger2)
myema=ema(close,emadeger)
myema2=ema(close,emadeger2)
mycond =myrsi >rsicok and close> myma and close>myema
mycond2=myrsi<rsiaz and close<myma2 and close<myema2
barcolor(mycond? #2196F3: na)
barcolor(mycond2? #FF9800: na)
plot(myma,title="Ma yüksek",color=color.black,linewidth=0)
plot(myma2,title="Ma düşük",color=color.blue,linewidth=0)
plot(myema,title="Ema yüksek",color=color.yellow,linewidth=0)
plot(myema2,title="Ema düşük",color=color.gray,linewidth=0)
idunno =close< sma(close,smadeger2) and close < sma(close,smadeger) and close<ema(close,emadeger)and close<ema(close,emadeger2)and crossunder(close,lower)and crossunder(myrsi,myrsi2)and crossunder(close,basis) 
plotchar(idunno,char="A",color=#808000 ,location=location.belowbar) 
idunno2 =close> sma(close,smadeger2) and close> sma(close,smadeger) and close>ema(close,emadeger)and close>ema(close,emadeger2)and crossover(close,upper)and crossover(myrsi,myrsi3)and crossover(close,basis)
plotchar(idunno2,char="S",color=#787B86 ,location=location.abovebar)
strategy.entry("Al",true,when =idunno)
strategy.entry("Sat",false,when = idunno2)
strategy.close("Al",when=ema(close,emadeger)and crossover(open,upper))
strategy.close("Sat",when=sma(close,smadeger2)and crossunder(open,lower))
//strategy.exit("Al çıkış","Al",limit=upper)
//strategy.exit("Sat çıkış","Sat",limit=lower)
//strategy.exit("Al çıkış","Al",trail_points=close*0.1/syminfo.mintick,trail_offset=close*0.005/syminfo.mintick)
//strategy.exit("Sat çıkış","Sat",trail_points=close*0.1/syminfo.mintick,trail_offset=close*0.005/syminfo.mintick)


더 많은