EMA 트렌드 다음 전략 3가지

저자:차오장, 날짜: 2023년 11월 10일 11:45:30
태그:

img

전반적인 설명

세 개의 EMA 트렌드 다음 전략은 다른 기간의 EMA 라인을 계산하여 가격 트렌드 방향을 판단하고 트렌드를 자동으로 추적합니다.이 전략은 특히 트렌딩 도구에서 간단하고 효과적입니다.

전략 논리

이 전략은 서로 다른 기간의 세 개의 EMA 라인을 계산합니다. 특히 10 기간, 20 기간 및 30 기간 EMA. 코드에 있는 ema 함수는 세 개의 EMA 라인을 생성합니다.

핵심 논리는 세 개의 EMA 라인의 방향 일관성을 판단하는 것입니다. 세 개의 EMA 라인이 함께 상승하면 긴 신호가 생성됩니다. 세 가지 라인이 함께 떨어지면 짧은 신호가 생성됩니다.

구체적으로, ema1, ema2 및 ema3가 마지막 바에서 모두 상승하면 enter_long가 true가 되고 긴 신호가 생성됩니다. ema1, ema2 및 ema3가 모두 마지막 바에 떨어지면 enter_short가 true가 되고 짧은 신호가 생성됩니다.

긴 신호와 짧은 신호를 기반으로 전략은 대응하는 긴 포지션과 짧은 포지션을 열 것입니다. 출구 논리는 출구 신호와 반대입니다. 현재 바에서 ema1, ema2 및 ema3가 함께 상승하지 않으면 exit_long이 사실로 변하고 긴 포지션은 닫힐 것입니다. 현재 바에서 ema1, ema2 및 ema3가 함께 떨어지지 않으면 exit_short이 사실로 변하고 짧은 포지션은 닫힐 것입니다.

세 개의 EMA 라인의 방향 일관성을 판단함으로써 전체 추세를 결정하고 따라갈 수 있습니다.

장점

  • 세 개의 EMA 라인을 사용하면 단일 라인과 비교하여 트렌드 방향을 더 안정적으로 판단 할 수 있습니다. 잘못된 신호의 확률은 낮습니다.

  • EMA는 가격 변화에 더 민감하며 시간에 따라 트렌드 반전을 반영 할 수 있습니다. SMA 등에 비해 트렌드 판단에 더 적합합니다.

  • 다른 기간 EMA의 조합은 단기 및 중장기 트렌드를 모두 고려합니다. 단기 10 기간 EMA, 중장기 트렌드를 위해 20 기간 및 30 기간 EMA.

  • 전략 논리는 간단하고 이해하기 쉽다. 또한 매개 변수에는 다양한 도구에 대한 최적화 공간이 있습니다.

  • 이 전략은 EMA 라인에만 기반을 두고 있으며, 더 적은 자원을 필요로 하며, 높은 동시행에 적합합니다.

위험성

  • EMA 라인 방향의 일관성은 필요하지만 트렌드 판단에 충분하지 않습니다. EMA 라인 잘못된 브레이크오프 중에 잘못된 신호가 발생할 수 있습니다.

  • EMA 라인은 트렌드 반전에서 늦어지고, 시간적 전환점을 반영할 수 없어 손실을 초래할 수 있습니다.

  • EMA는 가격 변화에 민감하기 때문에 긴 짧은 포지션의 빈번한 전환은 거래 비용을 증가시킬 수 있습니다.

  • 이 전략은 EMA 라인이 자주 변동하는 변동적이고 불안정한 시장에서 효과적이지 않습니다.

  • 가짜 신호를 줄이기 위해 EMA 기간 차이를 최적화하거나 가짜 브레이크를 필터하기 위해 다른 지표를 추가할 수 있습니다.

  • 실제 트렌드를 확인하고 전환점을 식별하기 위해 모멘텀 지표를 추가하여 손실을 줄일 수 있습니다. 또한 스톱 로스를 느슨하게 할 수 있습니다.

  • EMA 기간을 늘려 포지션 플립 빈도를 줄이거나 다른 MA 지표를 사용하세요.

  • 시장의 범위가 확인되면 전략을 중단하고 불필요한 거래를 피하십시오.

최적화

  • 기간 조정: 다른 도구에 적응하도록 EMA 기간을 조정합니다.

  • 필터 추가: EMA 가짜 브레이크를 피하기 위해 MA, BOLL 등을 추가합니다.

  • 손실 중지: 수익을 차단하기 위해 후속 중지.

  • 리스크 관리: 단일 손실 영향을 제한하기 위해 포지션 크기를 최적화하십시오.

  • 시장 체제: 변동성을 사용하여 오스실레이션을 측정하고 전략 참여를 제어합니다.

  • 적응 매개 변수: 안정성을 높이기 위해 시장 변화에 따라 EMA 기간을 자동으로 최적화합니다.

결론

EMA 라인을 통해 트렌드 방향을 식별하여 트렌드 트레이드를 따르는 세 EMA. 그것은 큰 최적화 공간으로 간단하고 실용적입니다. 잘못된 브레이크아웃과 오스실레이션과 같은 위험이 주목되어야합니다. 지속적인 최적화로이 전략은 강력한 트렌드 다음 솔루션이 될 수 있습니다.


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © QuantCT

//@version=4
strategy("PMA Strategy Idea",
         shorttitle="PMA", 
         overlay=true,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)
         
// ____ Inputs

ema1_period = input(title="EMA1 Period", defval=10)
ema2_period = input(title="EMA2 Period", defval=20)
ema3_period = input(title="EMA3 Period", defval=30)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

ema1 = ema(hlc3, ema1_period)
ema2 = ema(hlc3, ema2_period)
ema3 = ema(hlc3, ema3_period)
    
enter_long = (rising(ema1, 1) and rising(ema2, 1) and rising(ema3, 1))
exit_long = not enter_long
enter_short = (falling(ema1, 1) and falling(ema2, 1) and falling(ema3, 1))
exit_short = not enter_short

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 

// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)

// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

ema1_plot = plot(ema1, color=colors)
ema2_plot = plot(ema2, color=colors)
ema3_plot = plot(ema3, color=colors)
fill(ema1_plot, ema3_plot, color=colors, transp=50)


더 많은