모멘텀 이동 평균 파괴 전략


생성 날짜: 2023-10-11 15:01:12 마지막으로 수정됨: 2023-10-11 15:01:12
복사: 5 클릭수: 654
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 동력 파괴 원리에 기초하여 RSI와 무작위 지표의 결합으로 트렌드 추적 전략이다. DEMA 지표를 사용하여 가격 동력의 방향을 판단하고, RSI 지표는 오버 구매를 판단하고, KDJ 지표는 트렌드를 판단하는 데 도움을 주며, 이러한 지표 신호에 따라 롱링 및 쇼팅 작업을 수행한다. 이 전략은 중장선 트렌드 거래에 적합하다.

전략 원칙

이 전략은 가격 움직임 방향을 판단하기 위해 DEMA 지표를 사용합니다. DEMA는 쌍 지수 이동 평균이며, 일반 EMA보다 더 민감하여 트렌드 변화를 더 일찍 발견 할 수 있습니다. 전략은 가격과 DEMA의 차이 비율을 계산하여 가격 움직임의 방향과 강도를 판단합니다.

가격 상승률이 설정된 변수보다 크면 가격이 상승 추세에 있다고 생각하며; 가격 하락률이 설정된 변수보다 크면 가격이 하락 추세에 있다고 생각한다. RSI 지표와 결합하여 오버 바이 오버 셀 영역에 있는지 여부를 판단하면 RSI가 오버 셀 라인보다 낮으면 오버 셀 상태임을 알 수 있으며, RSI가 오버 바이 라인보다 높으면 오버 바이 상태임을 알 수 있다.

또한, 전략은 KDJ 지표의 무작위 라인 K와 라인 D를 사용하여 트렌드를 확인한다. 무작위 라인 K가 라인 D를 통과할 때, 다중 신호가 형성된다. K가 라인 D를 통과할 때, 공백 신호가 형성된다.

마지막으로, 이 전략에는 시간 필터링 조건이 추가되어 있으며, 이는 불필요한 거래를 방지하기 위해 지정된 연, 달, 일 동안만 유효합니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이중 지수 이동 평균 DEMA를 사용하여 가격 움직임을 판단하는 것은 더 민감하며, 추세 변화를 일찍 발견할 수 있다.

  2. RSI와 결합하여 과매매를 판단하여 시장 전환점 근처에 무작위로 진입하는 것을 피하십시오.

  3. 무작위 지표 KDJ를 사용하여 트렌드 신호를 확인하고, 일부 잘못된 신호를 필터링할 수 있다.

  4. 시간 필터링 조건을 추가하고, 지정된 시간 내에 거래하여 불필요한 자금을 차지하는 것을 피하십시오.

  5. 분석 프로세스가 명확하고 이해하기 쉽고 수정할 수 있도록 시작하십시오.

  6. 지표 매개 변수는 조정 가능하며, 다른 품종과 시간 주기에 따라 최적화 할 수 있습니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. DEMA와 RSI와 같은 지표는 모두 잘못된 신호를 내보이며 불필요한 손실을 초래할 수 있습니다. 잘못된 판단의 가능성을 줄이기 위해 매개 변수를 적절히 조정하거나 필터 조건을 추가 할 수 있습니다.

  2. 이중 지표 포지션은 큰 반전을 완전히 피할 수 없으며, 큰 변동 시장에서 손실이 발생할 수 있습니다.

  3. 고정 시간 간격 설정은 거래 기회가있는 특정 기간을 놓칠 수 있으며, 더 유연한 거래 시간 제어를 추가하는 것이 좋습니다.

  4. 트렌드 트레이딩 방식은 약간의 회수와 지속적인 손실을 견딜 수 있는 심리적 준비가 필요합니다.

  5. 시장의 변화에 적응하기 위해 지표의 매개 변수를 최적화하는 데 지속적인 관심이 필요합니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 더 많은 지표의 조합을 테스트하여 더 안정적이고 순조로운 거래 전략 논리를 찾습니다. MACD, KD, MOVING AVERAGE 등.

  2. 지표 파라미터를 테스트하고 최적화하여 파라미터의 최적의 값 구간을 찾습니다.

  3. 이동 상쇄, 후속 상쇄와 같은 상쇄 전략을 추가하고 회수량을 줄이십시오.

  4. 고정 거래 수, 동적으로 포지션을 조정하는 등의 돈 관리 기능을 추가하고 위험을 제어합니다.

  5. 진출 및 출전 논리를 최적화하여 진출 확률을 높이고, 손실을 최대한 빨리 막을 수 있습니다.

  6. 더 많은 필터링 조건을 추가하여 트렌드가 명확한 후에만 출전을 보장합니다. 예를 들어 양력 지표, 통로 지표 등.

  7. 최적화된 시간 통제 전략으로 거래가 시장에 가깝게 이루어진다. 예를 들어, 미국이나 아시아 거래 시간에만 거래한다.

요약하다

이 전략은 DEMA를 사용하여 트렌드 트레이딩을 기반으로 트렌드 방향을 판단하고 RSI를 사용하여 오버 바이를 판단하고 KDJ는 위험을 제어하기 위해 신호를 확인합니다. 그것은 간단하고, 논리적으로 명확하며, 사용자 정의가 강하며, 중장기 포지션을 보유하는 데 적합합니다. 매개 변수 최적화, 손해 방지 전략 및 위험 관리 조치의 지속적인 개량으로 이 전략은 시장 주류의 추세를 추적하는 안정적인 거래 시스템이 될 것입니다. 물론, 어떤 전략도 시장 위험을 완전히 피할 수 없습니다.

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

//@version= 2
strategy("DPD+STOCH+RSI ", overlay=false)

buyper =input(-1,step=0.1)
sellper=input(1,step=0.1)

demalen = input(50,title="Dema Length")

e1= ema(close,demalen)
e2=ema(e1,demalen)
demaprice  =   2 * e1 - e2

price=close

demadifper =  ((price-demaprice)/price)*100



plot(demadifper, color=red)
OverDemaPer = input(1, title="Band for OverBought")
UnderDemaPer= input(-1,title="Band for OverSold")




band1 = hline(OverDemaPer)
band0 = hline(UnderDemaPer)
zeroline=0
fill(band1, band0, color=green, transp=90)


lengthrsi = input(10)
overSold = input( 30 )
overBought = input( 55 )
vrsi = rsi(price, lengthrsi)


smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
srsilow=input(20)
srsiup=input(80)







yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if ( ( (demadifper<buyper) or crossover(demadifper,buyper)) and (vrsi<overSold) ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( vrsi>overBought  and ( crossunder(k,d) ) and ( demadifper>sellper  or crossunder(demadifper,sellper)  )  ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")