전략에 따른 다중 EMA 교차 트렌드

저자:차오장, 날짜: 2024-01-04 16:22:07
태그:

img

전반적인 설명

멀티 EMA 크로스오버 트렌드 추적 전략은 크로스오버 신호를 기반으로 트렌드 방향을 식별하기 위해 다양한 매개 변수와 여러 EMA 라인을 결합하여 시장의 트렌드를 추적하는 것을 목표로합니다. 12 년, 26 년, 50 년, 100 년, 200 년, 89 년 및 144 년 기간을 포함한 7 개의 EMA 라인을 사용하여 크로스오버 상황을 비교합니다.

전략 논리

이 전략의 핵심 논리는 EMA 라인의 크로스오버 원칙에 기반합니다. EMA 중에서는 짧은 기간 EMA는 최근의 가격 변화에 더 민감하며 단기 트렌드를 반영 할 수 있으며, 긴 기간 EMA는 덜 민감하며 장기 트렌드를 나타냅니다. 짧은 EMA가 아래에서 긴 EMA를 넘을 때 골든 크로스이 형성되며, 단기 트렌드가 상승세를 보이고 있음을 나타냅니다. 짧은 EMA가 위로부터 긴 EMA를 넘어서면 죽음 크로스이 나타납니다.

이 전략은 12&26, 12&50, 12&100, 12&200, 12&89 및 12&144 기간을 포함한 7 개의 EMA 크로스오버 그룹을 동시에 모니터링합니다. 예를 들어, 12 일간의 EMA가 26 일간의 EMA를 넘을 때 전략은 긴 포지션을 열 것입니다. 죽음의 교차가 발생하면 긴 포지션을 닫습니다. 다른 EMA 쌍에도 동일한 논리가 적용됩니다.

이점 분석

이 전략의 가장 큰 장점은 여러 시간 프레임에 걸쳐 트렌드를 포착하는 능력이다. 여러 EMA를 결합함으로써 단기 및 장기적인 트렌드를 모두 식별하여 여러 시간 프레임 트렌드를 실현 할 수 있습니다. 또한 EMA 매개 변수를 조정함으로써 전략 성능을 최적화 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 여러 EMA를 함께 사용할 때 지나치게 빈번한 크로스오버 신호입니다. 예를 들어, 12 일과 26 일 EMA 사이의 크로스오버는 12 일과 200 일 라인 사이의 것보다 더 자주 발생합니다. 빈번한 입출입은 거래 비용과 미끄러짐을 증가시킬 수 있습니다. 또한, EMA는 지연성 성격을 가지고 있으며, 이는 비시간 거래 신호를 유발할 수 있습니다.

위험을 완화하기 위해 EMA 기간은 적절한 수준에서 교차 빈도를 제어하도록 최적화 할 수 있습니다. 최대 일일 엔트리 수를 제한하거나 스톱 로스를 설정하는 것도 위험을 제한 할 수 있습니다.

개선 방향

주요 최적화 공간은 더 많은 기간 조합을 실험하거나 SMA와 같은 다른 이동 평균을 시도하는 것과 같은 EMA 매개 변수를 조정하는 데 있습니다. 또한 부피 또는 변동성 지표와 같은 신호 품질을 향상시키기 위해 추가 필터를 추가 할 수 있습니다. 또한 시장 격동의 영향을 줄이기 위해 스톱 로스 전략을 사용할 수 있습니다.

결론

멀티 EMA 크로스오버 트렌드 추적 전략 (Multi-EMA Crossover Trend Following Strategy) 은 여러 EMA 사이에서 크로스오버 상황을 비교하여 트렌드를 파악하여 트렌드 방향을 파악합니다. 이 전략의 장점은 매개 변수를 조정하고 다른 수준에서 트렌드를 잡을 수 있는 유연성입니다. 단점은 잠재적으로 과 빈번한 신호와 증가한 거래 비용입니다. 매개 변수 최적화 및 추가 조건을 추가함으로써 추가 개선이 가능합니다.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Trades", overlay=true, pyramiding=4)

src = input(close, title="Source")

shortestLine = input(12, minval=1, title="Shortest Line")
shorterLine = input(26, minval=1, title="Shorter Line")
shortLine = input(50, minval=1, title="Short Line")
middleLine = input(100, minval=1, title="Middle Line")
longLine = input(200, minval=1, title="Long Line")
longerLine = input(89, minval=1, title="Longer Line")
longestLine = input(144, minval=1, title="Longest Line")

shortestLineOutput = ema(src, shortestLine)
shorterLineOutput = ema(src, shorterLine)
shortLineOutput = ema(src, shortLine)
middleLineOutput = ema(src, middleLine)
longLineOutput = ema(src, longLine)
longerLineOutput = ema(src, longerLine)
longestLineOutput = ema(src, longestLine)

//plot(shortestLineOutput, title="Shortest EMA", color=#ffffff)
//plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6)
//plot(shortLineOutput, title="Short EMA", color=#4e6bc3)
//plot(middleLineOutput, title="Middle EMA", color=#1dd6d8)
//plot(longLineOutput, title="Long EMA", color=#d0de10)
//plot(longerLineOutput, title="Longer EMA", color=#ef6a1a)
//plot(longestLineOutput, title="Longest EMA", color=#ff0e0e)

longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput
longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput
longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput
longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput

shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput
shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput
shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput
shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput

if (longEnrtyCondition_1)
    strategy.entry("Buy1", strategy.long)
    strategy.exit("Sell1")

if (longEntryCondition_2)
    strategy.entry("Buy2", strategy.long)
    strategy.exit("Sell2")

if (longEnrtyCondition_3)
    strategy.entry("Buy3", strategy.long)
    strategy.exit("Sell3")

if (longEntryCondition_4)
    strategy.entry("Buy4", strategy.long)
    strategy.exit("Sell4")

if (shortEnrtyCondition_1)
    strategy.entry("Sell1", strategy.short)
    strategy.exit("Buy1")

if (shortEntryCondition_2)
    strategy.entry("Sell2", strategy.short)
    strategy.exit("Buy2")

if (shortEnrtyCondition_3)
    strategy.entry("Sell3", strategy.short)
    strategy.exit("Buy3")

if (shortEntryCondition_4)
    strategy.entry("Sell4", strategy.short)
    strategy.exit("Buy4")

더 많은