카마와 이동평균을 기반으로 한 추세 추종 전략


생성 날짜: 2024-02-06 09:53:22 마지막으로 수정됨: 2024-02-06 09:53:22
복사: 5 클릭수: 788
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

카마와 이동평균을 기반으로 한 추세 추종 전략

개요

이 전략의 핵심 아이디어는 카마 평균선 지표와 평균선 지표를 결합하여 시장 추세를 식별하여 트렌드 추적을 구현하는 것입니다. 카마 평균선과 평균선이 금색으로 교차 할 때 상승 추세로 판단하여 더 많은 것을하십시오. 카마 평균선과 평균선이 사망 추세로 교차 할 때 하향 추세로 판단하여 공백을하십시오.

전략 원칙

  1. 카마 평균 (KAMA) 은 시장 소음에 민감한 트렌드 추적 지표로, 가격 트렌드를 판단할 수 있다.
  2. 평균선을 계산한다. 여기서는 2기 평균선이 계산된다. 하나는 더 빠른 이중 지수 이동 평균이고, 다른 하나는 일반 가중 이동 평균이다.
  3. 빠른 선이 아래쪽에서 느린 선을 뚫을 때, 더 많은 일을; 빠른 선이 위쪽에서 아래쪽에서 느린 선을 뚫을 때, 공백을하십시오. 이렇게하면 트렌드 판단과 추적이 완료됩니다.
  4. 진입 후, 가격이 카마 평균선을 돌파할 때 포지션을 종료하고, 트렌드 추적 퇴출을 구현한다.

전략적 이점

  1. 이 전략은 카마 평균선과 평균선 지표와 결합하여 시장 추세를 비교적 정확하게 판단하고, 트렌드 추적, 회수 제어 능력을 강화할 수 있다.
  2. 카마 평균선은 시장의 소음에 민감하기 때문에 트렌드 전환점을 조기에 발견할 수 있다.
  3. 평선 조합은 판단이 명확하고, 동작 규격은 이해하기 쉽다.
  4. 전략 파라미터를 최적화 할 수 있는 공간이 넓고, 다양한 품종과 거래 품종에 따라 파라미터를 조정하여 최적화 할 수 있다.

위험 분석

  1. 카마 평균선과 평균선 조합으로 시장의 흐름을 판단할 때, 잘못된 판단이 발생할 수도 있다. 판단을 확인하기 위해 다른 지표와 결합해야 한다.
  2. 손해 방지 설정은 비정상적인 상황에서는 큰 손실을 초래할 수 있습니다.
  3. 매개 변수 설정이 적절하지 않은 경우, 판단 오류가 발생할 수 있으며, 다른 품종에 따라 매개 변수를 조정해야 한다.

최적화 제안

  1. ATR 지표에 Stop Loss 설정을 추가하는 것을 고려할 수 있다.
  2. 전략 수익률에 대한 다양한 변수의 영향을 테스트할 수 있으며, 최적의 변수를 선택할 수 있다.
  3. 판단의 정확도를 높이기 위해 진동 지표와 같은 다른 지표의 검증을 추가하는 것이 고려될 수 있습니다.
  4. 매개 변수를 자동으로 최적화할 수 있도록 매개 변수 적응 및 동적 최적화 프레임 워크를 구축할 수 있다.

요약하다

이 전략의 전반적인 생각은 명확하며, 카마 평균선과 평균선 지표의 황금 횡단과 죽음의 횡단으로 트렌드를 판단하고 추적하고, 회수 제어 능력이 강하며, 매개 변수를 조정하고 최적화함으로써 더 나은 효과를 얻을 수 있다. 그러나 더 많은 검증 지표와 손해 막기 모듈을 추가하면 전략의 안정성과 수익력을 더욱 강화할 수 있는 개선의 여지가 있다.

전략 소스 코드
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//synapticex.com
kamaPeriod = input(8, minval=1) 
ROCLength=input(4, minval=1) 

kama(length)=>
    volatility = sum(abs(close-close[1]), length)
    change = abs(close-close[length-1])
    er = iff(volatility != 0, change/volatility, 0)
    sc = pow((er*(0.666666-0.064516))+0.064516, 2)
    k = nz(k[1])+(sc*(hl2-nz(k[1])))
    

n=input(title="period",defval=7)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?lime:red
ma=plot(n1,color=c, linewidth = 3)
plot(cross(nma, nma1) ? nma : na, style = cross, color = c, linewidth = 5)
    
kamaEntry = request.security(syminfo.tickerid,timeframe.period,kama(kamaPeriod))

plot(kamaEntry, color=gray, title="Kama",transp=0, trackprice=false, style=line)


strategy("Kama VS HeikinAshi", overlay=true, pyramiding=0, calc_on_every_tick=true, calc_on_order_fills=true)

buyEntry =  n1 > n2
sellEntry = close < kamaEntry and n1 < n2 

buyExit = close < kamaEntry and n1 < n2
sellExit = n1 > n2 
if (buyEntry)
    strategy.entry("KAMAL", strategy.long, comment="KAMAL")
else
    strategy.close("KAMAL", when=buyExit)

if (sellEntry)
    strategy.entry("KAMAS", strategy.short, comment="KAMAS")
else
    strategy.close("KAMAS", when = sellExit)