EMA 리본 전략은 다양한 기간의 기하급수적인 이동 평균 (EMAs) 을 계산하고 그 사이의 교차점을 식별하여 거래 신호를 생성합니다. 이 전략은 다양한 기간을 가진 8 개의 EMA의 리본을 구성하고 가장 짧은 기간 EMA와 가장 긴 기간 EMA 사이의 교차점을 사용하여 시장 추세를 결정하고 거래 신호를 생성합니다.
이 전략의 핵심은 8개의 EMA로 구성되어 있다. 20기기, 25기기, 30기기, 35기기, 40기기, 45기기, 50기기 및 55기기이다. 이 8개의 EMA는 밑에서 위로 쌓인 리본을 형성한다. 짧은 기간 EMA가 더 긴 기간 EMA를 넘을 때 구매 신호가 생성된다. 짧은 기간 EMA가 더 긴 기간 EMA를 넘을 때 판매 신호가 생성된다.
예를 들어, 20주기 EMA가 55주기 EMA를 넘을 때 구매 신호가 트리거되며, 20주기 EMA가 55주기 EMA를 넘을 때 판매 신호가 트리거된다. EMA는 시장 트렌드를 매우 잘 나타낼 수 있다. 이 전략은 여러 EMA 크로스오버를 사용하여 지배적인 트렌드를 식별하고 그에 따라 거래 신호를 생성한다.
EMA 리본 전략은 다음과 같은 장점을 가지고 있습니다.
다른 기간의 여러 EMA를 사용하면 시장 트렌드의 변화를 더 정확하게 식별 할 수 있습니다.
여러 EMA를 가진 리본을 구축하면 거래 신호가 더 명확해집니다.
장기 및 단기 EMA를 모두 포함하면 장기 트렌드와 단기 보정이 모두 고려됩니다.
이 전략은 EMA 기간과 다른 매개 변수를 조정함으로써 큰 매개 변수 최적화 공간을 허용합니다.
전략 논리는 간단하고 이해하기 쉽고 구현하기 쉽습니다.
EMA 리본 전략은 또한 몇 가지 위험을 가지고 있습니다.
전체 시장 추세가 불분명할 때 잘못된 신호를 생성할 수 있습니다. 신호 확인을 위해 추가 지표가 사용될 수 있습니다.
높은 거래 빈도는 거래 비용과 미끄러짐 비용을 증가시킵니다. EMA 기간은 거래 빈도를 줄이기 위해 조정 될 수 있습니다.
잘못된 매개 변수 설정으로 인해 신호가 너무 민감하거나 지연 될 수 있습니다. 매개 변수는 반복적으로 테스트하고 최적화해야합니다.
이벤트로 인한 갑작스러운 가격 격차는 신호를 무효화 할 수 있습니다. 위험을 제어하기 위해 스톱 로스 전략을 사용해야합니다.
EMA 리본 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
최적의 조합을 찾기 위해 EMA 기간 매개 변수를 조정합니다.
정확도를 높이기 위해 신호 필터링 및 확인을 위한 다른 기술적 지표들을 추가합니다.
변동성이 낮은 환경에서 거래 빈도를 줄이기 위해 변동성 지표를 포함합니다.
거래당 손실을 제한하기 위해 스톱 로스 전략을 설정합니다.
수익 요소를 개선하기 위해 돈 관리 전략을 최적화하십시오.
다른 제품과 계약에 대한 매개 변수 안정성을 테스트하고 최고의 시장을 찾습니다.
EMA 리본 전략은 명확한 논리를 가지고 있으며, EMA 크로스오버와 트렌드를 식별하고 거래 신호를 생성합니다. 매개 변수를 조정하고 신호 필터를 추가하는 등에 대한 큰 최적화 공간이 있습니다. 전반적으로 매우 간단하고 실용적이며 양 거래 초보자에게 좋습니다. 그러나 거래 빈도와 위험을 제어하는 것이 중요합니다.
/*backtest start: 2024-01-14 00:00:00 end: 2024-01-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="EMA Ribbon [Krypt] with Buy/Sell Signals", shorttitle="EMA Ribbon", overlay=true) dropn(src, n) => na(src[n]) ? na : src length1 = input(20, title="MA-1 period", minval=1) length2 = input(25, title="MA-2 period", minval=1) length3 = input(30, title="MA-3 period", minval=1) length4 = input(35, title="MA-4 period", minval=1) length5 = input(40, title="MA-5 period", minval=1) length6 = input(45, title="MA-6 period", minval=1) length7 = input(50, title="MA-7 period", minval=1) length8 = input(55, title="MA-8 period", minval=1) source_input = input(close, title="Source") price = dropn(source_input, 1) ema1 = ema(price, length1) ema2 = ema(price, length2) ema3 = ema(price, length3) ema4 = ema(price, length4) ema5 = ema(price, length5) ema6 = ema(price, length6) ema7 = ema(price, length7) ema8 = ema(price, length8) plot(ema1, title="MA-1", color=#f5eb5d, transp=0, linewidth=2) plot(ema2, title="MA-2", color=#f5b771, transp=0, linewidth=2) plot(ema3, title="MA-3", color=#f5b056, transp=0, linewidth=2) plot(ema4, title="MA-4", color=#f57b4e, transp=0, linewidth=2) plot(ema5, title="MA-5", color=#f56d58, transp=0, linewidth=2) plot(ema6, title="MA-6", color=#f57d51, transp=0, linewidth=2) plot(ema7, title="MA-7", color=#f55151, transp=0, linewidth=2) plot(ema8, title="MA-8", color=#aa2707, transp=0, linewidth=2) // Buy and sell signals based on crossover and crossunder buySignal = crossover(ema1, ema8) sellSignal = crossunder(ema1, ema8) plotshape(series=buySignal, title="Buy Signal", color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="Sell Signal", color=color.red, style=shape.triangledown, size=size.small) if buySignal strategy.entry("Enter Long", strategy.long) else if sellSignal strategy.entry("Enter Short", strategy.short)