더블 EMA 기반 가격 변동 전략


생성 날짜: 2024-02-26 13:52:41 마지막으로 수정됨: 2024-02-26 13:52:41
복사: 2 클릭수: 600
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 EMA 기반 가격 변동 전략

개요

이중 EMA 가격 변동 전략은 두 개의 다른 기간의 EMA 사이의 차이를 계산하여 시장의 다공동적 태도와 강도를 판단합니다. 빠른 라인과 느린 라인 사이의 차이는 0을 통과하면 낙향 신호입니다. 빠른 라인과 느린 라인 사이의 차이는 0을 통과하면 낙향 신호입니다.

이 전략은 간단하고 쉽게 사용되며, EMA의 차이를 통해 시장의 힘과 방향을 판단한다. 그러나 또한 일정 정도의 지연성이 존재하며, 터닝 포인트 (turning point) 를 적시에 잡을 수 없다.

전략 원칙

이중 EMA 가격 변동 전략의 핵심 지표는 APO, 즉 Absolute Price Oscillator이며, 두 EMA 사이의 차이를 나타냅니다. 계산 공식은 다음과 같습니다.

APO = EMA(短期) - EMA(长期)

특히, 이 전략에서 APO의 계산은 다음과 같습니다.

xShortEMA = ema(收盘价, LengthShortEMA) 

xLongEMA = ema(收盘价, LengthLongEMA)

xAPO = xShortEMA - xLongEMA

여기서 LengthShortEMA와 LengthLongEMA는 각각 단기 및 장기 EMA의 주기 길이를 나타냅니다.

APO의 몇 가지 중요한 판단 규칙:

  1. APO에 0을 착용할 때 신호를 참조하십시오.
  2. 0을 넘으면 하향 신호입니다.
  3. APO는 현재 낙관적인 상태를 나타내고 있습니다.
  4. APO는 마이너스로 현재 하락세를 나타냅니다.

APO의 실시간 값에 따라 시장의 빈 상태와 진입 시간을 판단한다.

우위 분석

이중 EMA 가격 변동 전략은 다음과 같은 몇 가지 주요 장점이 있습니다.

  1. 지수 이동 평균을 사용하여 가격 데이터를 효율적으로 평형화하여 노이즈의 영향을 줄일 수 있습니다.
  2. APO 지표는 두 개의 EMA를 결합하여 가격 추세와 시장의 강도를 동시에 판단할 수 있습니다.
  3. 전략적 신호는 간단하고 명확하며 판단하고 실행하기 쉽습니다.
  4. 다양한 품종과 거래 스타일에 맞게 사용자 정의 EMA 주기
  5. 반전 및 코카이즈 거래에 적용되는 반전 가능한 신호

위험 분석

이중 EMA 가격 변동 전략에는 다음과 같은 위험도 있습니다.

  1. EMA는 가격 전환점을 적시에 잡지 못하여 지연을 겪고 있습니다.
  2. 기본 파라미터는 모든 품종에 적합하지 않을 수 있으며 최적화 파라미터가 필요합니다.
  3. 신호가 빈번하고 가짜 신호가 발생하기 쉽다.
  4. 출입 후의 정지 및 정지 위치를 알 수 없습니다.
  5. 하지만, 이 경우에도 많은 사람들이 지연을 겪고, 최고의 출전 기회를 놓칠 수 있습니다.

합리적인 스톱으로 단독 손실을 줄이고, 변수를 최적화하여 다른 주기에 적응하고, 다른 지표와 결합하여 신호를 필터링하여 전략의 안정성을 높여서 이러한 위험에 대처하고 줄일 수 있습니다.

최적화 방향

이중 EMA 가격 변동 전략은 주로 다음과 같은 방향으로 최적화할 수 있다:

  1. 5~60의 EMA 길이를 각각 테스트하여 최적의 EMA 사이클 파라미터를 최적화합니다.

  2. MA, KDJ, MACD 등 다른 지표를 추가하여 필터 조건을 설정하여 가짜 신호를 피하십시오.

  3. 부린띠, KD 등의 지표를 이용하여 합리적인 스톱 스톱 손실 위치를 결정한다.

  4. 트렌드 지수와 같은 지표와 결합하여 가격 추세를 판단하고 역경 거래를 피하십시오.

  5. 거래량 지표에 추가하여 거래량이 뒷받침되는 브레이크 신호를 보장합니다.

  6. 재입장 조건을 설정하여 거래 빈도를 줄이고 거래 횟수를 줄여줍니다.

요약하다

요약하자면, 두 개의 EMA의 차이 APO를 계산하여 시장의 공백 상태를 판단하는 쌍 EMA 가격 변동 전략은 전략 신호가 간단하고 명확하며 실용성이 강하며, 또한 약간의 단점이 있습니다. 우리는 매개 변수 최적화, 필터 조건의 추가, 스톱 스톱 설정 등의 방법을 통해 전략의 안정성을 최적화하고 향상시킬 수 있습니다. 이 전략은 손쉽게 사용할 수 있으며, 많은 확장 공간이 있으며, 양적 거래 초보자 학습 및 응용에 적합합니다.

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/05/2017
// The Absolute Price Oscillator displays the difference between two exponential 
// moving averages of a security's price and is expressed as an absolute value.
// How this indicator works
//    APO crossing above zero is considered bullish, while crossing below zero is bearish.
//    A positive indicator value indicates an upward movement, while negative readings 
//      signal a downward trend.
//    Divergences form when a new high or low in price is not confirmed by the Absolute Price 
//      Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO 
//      forms a higher low. This indicates less downward momentum that could foreshadow a bullish 
//      reversal. A bearish divergence forms when price makes a higher high, but the APO forms a 
//      lower high. This shows less upward momentum that could foreshadow a bearish reversal.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Absolute Price Oscillator (APO) Backtest", shorttitle="APO")
LengthShortEMA = input(10, minval=1)
LengthLongEMA = input(20, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
xPrice = close
xShortEMA = ema(xPrice, LengthShortEMA)
xLongEMA = ema(xPrice, LengthLongEMA)
xAPO = xShortEMA - xLongEMA
pos = iff(xAPO > 0, 1,
       iff(xAPO < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xAPO, color=blue, title="APO")