이동 평균 조합을 기반으로 한 장기 추세 추적 전략


생성 날짜: 2024-02-23 14:54:34 마지막으로 수정됨: 2024-02-23 14:54:34
복사: 1 클릭수: 612
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 조합을 기반으로 한 장기 추세 추적 전략

개요

이 전략은 여러 그룹의 빠른 평균선의 조합을 계산하여 트렌드 방향을 식별하고 긴 포지션을 추적합니다. 빠른 평균선이 아래로 올라갈 때 구매 신호를 생성하고 빠른 평균선이 위로 내려갈 때 판매 신호를 생성합니다.

전략 원칙

  1. 3/6/9/12/15/18/21의 7그룹 급속 EMA 평균선을 계산한다.
  2. 24/27/30/…/200일 14그룹 느린 속도 EMA 평균선을 계산한다.
  3. 빠른 EMA 일률선 색 판단 규칙을 설정: 3 일선 상행 6 일선 선은 상승세를 나타내고, 파란색으로 설정; 내려가는 것은 하락세를 나타내고, 오렌지색으로 설정.
  4. 느린 EMA 일률 색상 판단 규칙을 설정: 24 일선 상행 25 일선은 상승세를 나타내고, 녹색으로 설정; 하차는 하락세를 나타내고, 빨간색으로 설정
  5. 빠른 EMA 라인 그룹이 느린 EMA 라인 그룹을 아래에서 위로 통과하면 구매 신호가 발생하여 추세가 상승하는 것을 나타냅니다.
  6. 빠른 EMA 라인 그룹이 느린 EMA 라인 그룹을 위아래로 통과하면 판매 신호가 발생하여 추세가 하향으로 바뀌는 것을 나타냅니다.

속속평균선의 조합을 매칭하여 중장선 경향의 변화를 효과적으로 식별하고, 장선 추적을 할 수 있다.

전략적 이점

  1. 급속한 평균선 협력, 트렌드 변화 식별 능력이 강하다. 급속한 평균선은 단기 트렌드를 식별할 수 있으며, 느린 평균선 필터는 조립, 조합 사용은 식별 정확성을 향상시킬 수 있다.
  2. 여러 개의 평균선 조합으로 신호를 더 명확하고 안정적으로 판단하고, 가짜 신호를 피한다.
  3. 다양한 EMA 주기 파라미터를 사용하여, 다양한 수준의 중장선 트렌드를 식별할 수 있으며, 동작 주기는 유연하다.
  4. 장점 추적 전략은 대부분의 개인 투자 펀드들이 중장선 방식으로 운영하는 방식에 부합합니다.

전략적 위험

  1. 하지만, 이 거래는 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소와 거래소입니다.
  2. EMA는 단기 가격 변동을 포착하는 데 적합하지 않습니다. 가격 변동이 큰 범위를 정리하면 불필요한 거래 신호가 발생할 수 있습니다.
  3. 잘못된 매개 변수 설정으로 인해 거래 신호가 너무 자주 또는 보수적으로 발생할 수 있으며 매개 변수 테스트 후 실체 검증이 권장됩니다.

전략 최적화 제안

  1. 빠른 평균선의 집합을 늘리고, 더 많은 단기 EMA를 설정하여, 짧은 선의 추세에 대한 판단력을 향상시킬 수 있다.
  2. 느린 평균선의 집합을 늘리고, 더 많은 중·장기 EMA를 설정하여, 중·장기 선의 추세에 대한 판단력을 향상시킬 수 있다.
  3. MA 신호 확인을 추가하고, EMA 평균선 신호를 발송할 때 동시에 MA 평균선 지원을 검사하여, 가짜 신호를 줄일 수 있다.
  4. 거래량에 대한 다중공간 분석과 결합하여 가격 변동이 심한 경우 잘못된 신호가 발생하지 않도록 한다.

요약하다

이 전략은 빠른 평균선과 느린 평균선의 조합 시스템을 구축하여 주식 가격의 긴 선의 추세 변화를 식별하는 전형적인 추적 포지션 전략에 속한다. 매개 변수 선택과 신호 필터링 측면에서 최적화 할 수있는 여지가 있으며, 투자자는 자신의 스타일에 따라 조정하여 다른 시장 환경에 적응 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("CM Super Guppy ala WY", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=99, overlay=true)


///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(3, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

///////////////////////////////////////////////

src = close, 
len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(6, minval=1, title="Fast EMA 2")
len3 = input(9, minval=1, title="Fast EMA 3")
len4 = input(12, minval=1, title="Fast EMA 4")
len5 = input(15, minval=1, title="Fast EMA 5")
len6 = input(18, minval=1, title="Fast EMA 6")
len7 = input(21, minval=1, title="Fast EMA 7")
//Slow EMA
len8 = input(24, minval=1, title="Slow EMA 8")
len9 = input(27, minval=1, title="Slow EMA 9")
len10 = input(30, minval=1, title="Slow EMA 10")
len11 = input(33, minval=1, title="Slow EMA 11")
len12 = input(36, minval=1, title="Slow EMA 12")
len13 = input(39, minval=1, title="Slow EMA 13")
len14 = input(42, minval=1, title="Slow EMA 14")
len15 = input(45, minval=1, title="Slow EMA 15")
len16 = input(48, minval=1, title="Slow EMA 16")
len17 = input(51, minval=1, title="Slow EMA 17")
len18 = input(54, minval=1, title="Slow EMA 18")
len19 = input(57, minval=1, title="Slow EMA 19")
len20 = input(60, minval=1, title="Slow EMA 20")
len21 = input(63, minval=1, title="Slow EMA 21")
len22 = input(66, minval=1, title="Slow EMA 22")
len23 = input(200, minval=1, title="EMA 200")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
ema7 = ema(src, len7)

//Slow EMA
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
ema13 = ema(src, len13)
ema14 = ema(src, len14)
ema15 = ema(src, len15)
ema16 = ema(src, len16)
ema17 = ema(src, len17)
ema18 = ema(src, len18)
ema19 = ema(src, len19)
ema20 = ema(src, len20)
ema21 = ema(src, len21)
ema22 = ema(src, len22)

//EMA 200
ema23 = ema(src, len23)

//Fast EMA Color Rules
colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6 and ema6 > ema7)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6 and ema6 < ema7)
//Slow EMA Color Rules
colslowL = ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 and ema12 > ema13 and ema13 > ema14 and ema14 > ema15 and ema15 > ema16 and ema16 > ema17 and ema17 > ema18 and ema18 > ema19 and ema19 > ema20 and ema20 > ema21 and ema21 > ema22
colslowS = ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 and ema12 < ema13 and ema13 < ema14 and ema14 < ema15 and ema15 < ema16 and ema16 < ema17 and ema17 < ema18 and ema18 < ema19 and ema19 < ema20 and ema20 < ema21 and ema21 < ema22 
//Fast EMA Final Color Rules
colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=colFinal)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=colFinal)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=colFinal)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=colFinal)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=colFinal)
plot(ema6, title="Fast EMA 6", style=line, linewidth=1, color=colFinal)
p2=plot(ema7, title="Fast EMA 7", style=line, linewidth=2, color=colFinal)

//Slow EMA Plots
p3=plot(ema8, title="Slow EMA 8", style=line, linewidth=1, color=colFinal2)
plot(ema9, title="Slow EMA 9", style=line, linewidth=1, color=colFinal2)
plot(ema10, title="Slow EMA 10", style=line, linewidth=1, color=colFinal2)
plot(ema11, title="Slow EMA 11", style=line, linewidth=1, color=colFinal2)
plot(ema12, title="Slow EMA 12", style=line, linewidth=1, color=colFinal2)
plot(ema13, title="Slow EMA 13", style=line, linewidth=1, color=colFinal2)
plot(ema14, title="Slow EMA 14", style=line, linewidth=1, color=colFinal2)
plot(ema15, title="Slow EMA 15", style=line, linewidth=1, color=colFinal2)
plot(ema16, title="Slow EMA 16", style=line, linewidth=1, color=colFinal2)
plot(ema17, title="Slow EMA 17", style=line, linewidth=1, color=colFinal2)
plot(ema18, title="Slow EMA 18", style=line, linewidth=1, color=colFinal2)
plot(ema19, title="Slow EMA 19", style=line, linewidth=1, color=colFinal2)
plot(ema20, title="Slow EMA 20", style=line, linewidth=1, color=colFinal2)
plot(ema21, title="Slow EMA 21", style=line, linewidth=1, color=colFinal2)
plot(ema22, title="Slow EMA 22", style=line, linewidth=2, color=colFinal2)
p4=plot(ema23, title="EMA 200", style=line, linewidth=2)


// Strategy Center
enterLong = colfastL and colslowL
exitLong = not colfastL

if testPeriod()
    strategy.entry("WY Long", strategy.long, when=enterLong, comment="WY Long")
else
    strategy.cancel(id="WY Long")

if testPeriod()
    strategy.close("WY Long", when=exitLong)