EMA 골든 크로스 전략

저자:차오장, 날짜: 2023-09-18 21:18:17
태그:

전반적인 설명

EMA 골든 크로스 전략은 일반적인 양적 거래 전략이다. 그것은 서로 다른 매개 변수와 함께 두 개의 기하급수적인 이동 평균 (EMA) 을 사용합니다. 짧은 기간 EMA가 긴 기간 EMA를 넘을 때, 그것은 길어집니다. 짧은 기간 EMA가 긴 기간 EMA를 넘을 때, 그것은 위치를 닫습니다. 이 전략은 짧은 기간 EMA의 더 빠른 반응과 트렌드를 따르는 긴 기간 EMA의 트레이딩 신호를 생성하는 능력을 사용합니다.

전략 논리

이 전략은 먼저 두 개의 EMA, 길이 10의 ema1과 길이 21의 ema2를 정의하고, 두 개의 EMA의 값을 계산합니다. ema1가 ema2를 넘을 때, 그것은 긴 신호인 상향 돌파구를 신호합니다. ema1이 ema2를 넘을 때, 그것은 EMA를 통해 붕괴를 신호합니다. 이것은 긴 위치 신호입니다.

거짓 파급을 필터링하기 위해 코드는 또한 다음과 같이 계산되는 한계 값을 정의합니다.

threshold = ((ema1 - ema2)*100) / ((ema1 + ema2)/2) 

이 임계값은 EMA 평균에 대한 EMA 거리의 비율을 나타냅니다. 임계값이 0.15% 이상이면 긴 신호입니다. 임계값이 -0.006% 이하일 때 가까운 위치 신호입니다.

요약하자면 이 전략의 거래 신호는 다음과 같습니다.

  • 긴 신호: ema1가 ema2를 넘고, 임계값 >= 0.15%
  • 근접 위치 신호: ema1가 ema2 아래로 넘어가고 임계값 <= -0.006%

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. EMA를 사용하면 가격 데이터를 부드럽게 할 수 있고 거래 신호를 생성하는 데 도움이 될 수 있습니다.

  2. 이중 EMA 설정은 반응성과 안정성을 균형을 이루고 있습니다.

  3. 그 문턱은 가짜 브레이크를 필터링하고 불필요한 거래를 피합니다.

  4. 전략 논리는 간단하고 명확하며 초보자도 사용할 수 있습니다.

  5. EMA 매개 변수와 문턱을 최적화 할 수 있습니다.

위험 분석

이 전략의 위험은 다음과 같습니다.

  1. EMA는 가격에서 뒤쳐지고 단기적 기회를 놓칠 수 있습니다.

  2. 트렌드가 뒤집어지면 큰 손실로 이어질 위험이 있습니다.

  3. 부적절한 문턱은 유효한 신호를 필터링하거나 잘못된 신호를 생성할 수 있습니다.

  4. 만약 EMA 매개 변수가 적합하지 않다면 두 EMA는 상당한 차이를 나타내지 않을 수도 있고, 잘못된 신호를 생성할 수도 있습니다.

  5. 시장의 큰 변동에 의해 깨지지 않도록 스톱 로스는 합리적으로 설정되어야 합니다.

최적화 방향

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

  1. EMA 매개 변수를 최적화하고 다른 기간을 테스트합니다.

  2. 잘못된 신호와 유효한 신호를 균형을 맞추기 위해 임계값을 최적화합니다.

  3. MACD, KDJ와 같은 다른 기술 지표를 추가하여 신호를 확인합니다.

  4. 손실을 제한하기 위해 트레일링 스톱이나 OCO 명령과 같은 스톱 손실 메커니즘을 추가합니다.

  5. 부분 포지션 엔트리를 고려하여 위험을 줄이십시오.

  6. 최적의 기간을 찾기 위해 다른 유지 기간을 테스트합니다.

결론

EMA 골든 크로스 전략은 명확하고 간단한 논리를 가지고 있으며, EMA의 특성을 활용하여 거래 신호를 생성합니다. 전략에는 특정 장점이 있지만 잠재적 인 위험이 있습니다. 전략은 매개 변수를 최적화하고 스톱 로스를 설정하고 신호를 필터링하여 개선 할 수 있습니다. 그것은 초보자의 양적 거래 전략으로 적합합니다.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

if high > ta.highest(high[1], 5)
    strategy.entry("Enter Long", strategy.long)
else if low < ta.lowest(low[1], 5)
    strategy.entry("Enter Short", strategy.short)//@version=3
strategy(title="ema10-21", shorttitle="10/21", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 2500, commission_type = strategy.commission.percent, commission_value = 0.2)

len1 = input(10, minval=1, title="EMA #1 length")
src1 = input(close, title="EMA Source #1")
a = ta.ema(src1, len1)
plot(a, title="EMA #1", color=color.orange, linewidth=2, style=plot.style_line)

len2 = input(21, minval=1, title="EMA #2 length")
src2 = input(close, title="EMA Source #2")
b = ta.ema(src2, len2)
plot(b, title="EMA #2", color=color.blue, linewidth=2, style=plot.style_line)

threshold = ((a-b)*100)/((a+b)/2)
thresholdUp = threshold > 0.15
thresholdDown = threshold < -0.006

if (thresholdUp) 
    strategy.entry("Buy", strategy.long)
if (thresholdDown) 
    strategy.close("Buy", strategy.long)

//goLong() => (crossover(a, b)) and (threshold >= 0.0025)
//killLong() => (crossunder(a, b)) and (threshold <= -0.0025)
//strategy.entry("Buy", strategy.long, when = goLong())
//strategy.close("Buy", when = killLong())

//threshold = ((a-b)*100)/((a+b)/2)

//achat = out1 > out2
//vente = out1 < out2 //and threshold < -0.025

//strategy.entry("long", true, when = achat)
//strategy.exit("exit", "long", when = vente)

더 많은