이동평균 차이에 기반한 추세 추종 전략


생성 날짜: 2024-01-12 14:42:06 마지막으로 수정됨: 2024-01-12 14:42:06
복사: 0 클릭수: 543
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균 차이에 기반한 추세 추종 전략

개요

이 전략은 평균선 차치의 지표에 기반하여, 빠른 선에서 느린 선을 통과할 때 구매 신호를 생성하고, 빠른 선 아래의 느린 선을 통과할 때 판매 신호를 생성하며, 트렌드 추적 유형 전략에 속한다. 전략은 간단하고 명확하며, 이해하기 쉬운 편이며, 중간 짧은 선 조작에 적합하다.

전략 원칙

이 전략은 두 개의 다른 변수의 EMA 평균선의 차이를 계산하고, 그 차이를 계산하여 자체의 EMA를 계산하여 거래 신호를 생성한다. 구체적으로, 주기 기간을 선택하고, 기간/2 주기의 2배의 EMA를 단선으로 계산하고, 기간 기간 EMA를 느린 선으로 계산하고, 두 개의 EMA의 차이는 차이를 형성한다. 그리고는 디프에 대해 다시 계산한다.

이 전략은 간단하고 직접적이며, 쌍평평선 차치 지표를 통해 가격 추세를 판단하는 전형적인 트렌드 추적 전략에 속한다. 가격이 트렌드 시장에 있을 때, 효과는 분명하다. 가격이 흔들릴 때, 여러 가지 잘못된 신호가 발생한다. 트렌드 판단과 위험 관리와 결합하여 사용해야 한다.

전략적 강점 분석

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

  1. 전략적 아이디어는 간단하고 직관적이며, 이해하기 쉽고, 초보자도 배울 수 있습니다.

  2. 가격 변화에 민감하여 동향 변화를 효과적으로 포착할 수 있는 평균차량 지표;

  3. “정책 변수가 적고, 최적화가 쉬우며, 리드 디스크 조정 유연성”

  4. 다양한 시장 환경에 맞게 구성 가능한 장기 및 단기 지표 조합;

  5. 개인 위험 선호에 따라 손실을 줄이기 위해 손실 중지 전략을 구성 할 수 있습니다.

전략적 위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 지진이 발생했을 때 잘못된 보고의 비율이 높기 때문에 대규모의 추세를 판단하는 데 도움이 필요합니다.

  2. “이런 일이 벌어진다면, 우리는 더 이상 이 문제를 해결하지 못할 것입니다.

  3. 중도차 지표의 매개 변수를 최적화하여 너무 민감하거나 지연되는 것을 방지하는 데 주의를 기울여야 합니다.

  4. 거래가 많고 거래 비용이 높기 때문에 포지션 규모를 조절해야 한다.

대응방법은 다음과 같습니다.

  1. “오래한 기간 평균선과 결합하여 큰 추세를 판단하고, 흔들리는 시장의 오류를 피하십시오”.

  2. 다른 반전 지표와 함께 매도점을 결정하여 지연 위험을 줄여줍니다.

  3. 그리고 이 모든 것을 테스트하는 것은 가장 좋은 것을 찾기 위한 것입니다.

  4. 단독 손실을 줄이기 위해 손해 중지 전략을 최적화하십시오.

전략 최적화 방향

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

  1. 다른 평형 변수 조합을 테스트하여 최적의 변수를 찾습니다.

  2. 트렌드를 판단하는 지표, 추세와 변동을 구분하는 지표,

  3. 거래점을 결정하는 데 있어 역향 지표와 함께 정확도를 높여주기 위해;

  4. 손실을 줄이기 위한 최적화 전략.

다양한 주기적 변수를 테스트하는 것은 전략의 안정성을 향상시킬 수 있고, 다양한 상황에 대한 적응력을 높일 수 있다. 추세를 판단하는 것은 잘못된 통보를 줄일 수 있다. 반전 지표는 매매 시점을 선택하는 것을 향상시킬 수 있다. 이러한 최적화는 전략의 안정성과 수익성을 향상시킬 수 있다.

요약하다

평균선차값에 기반한 트렌드 추적 전략 전체적인 개념은 명확하고 이해하기 쉽고, 쌍평균선차값을 통해 가격 트렌드 방향을 판단하는 것이 전형적인 트렌드 추적 전략에 속한다. 전략 자체는 매우 간단하고, 쉽게 구현되며, 중·단선 조작에 적합하며, 특히 초보자 학습 연구에 적합하다. 그러나 전략에는 일정 위험도 존재하며, 최적화 수단과 함께 위험을 줄여야 한다.

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

//@version=5
strategy(title='Devick', overlay=true)

// Input parameters
period = input(title='Period', defval=21)

// Calculate moving averages
n2ma = 2 * ta.ema(close, math.round(period / 2))
nma = ta.ema(close, period)
diff = n2ma - nma
sqn = math.round(math.sqrt(period))

n2maPrev = 2 * ta.ema(close[1], math.round(period / 2))
nmaPrev = ta.ema(close[1], period)
diffPrev = n2maPrev - nmaPrev
sqnPrev = math.round(math.sqrt(period))

n1 = ta.ema(diff, sqn)
n2 = ta.ema(diffPrev, sqnPrev)

// Determine color based on condition
maColor = n1 > n2 ? color.green : color.red

// Plot moving average
ma = plot(n1, color=maColor, linewidth=2)

// Signals
buySignal = n1 > n2 and n1[1] <= n2[1]
sellSignal = n1 <= n2 and n1[1] > n2[1]

// Plot shapes for signals
plotshape(series=buySignal, title='Buy Signal', style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(series=sellSignal, title='Sell Signal', style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)

// Alerts
alertcondition(condition=buySignal, title='Buy Signal', message='Buy Signal Detected')
alertcondition(condition=sellSignal, title='Sell Signal', message='Sell Signal Detected')

// Trading hours
openHour = 16
closeHour = 17

// Open position at 4 pm
openCondition = hour == openHour and minute == 0
strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)
// Close all positions at 5 pm
closeCondition = hour == closeHour and minute == 0
strategy.close_all(when=closeCondition)