이 전략은 시장 추세를 결정하기 위해 서로 다른 기간의 EMA 라인 사이의 교차를 계산하여 거래 신호를 생성합니다. 짧은 기간 EMA가 더 긴 기간 EMA를 넘어서면 상승 추세를 나타내고, 짧은 기간 EMA가 더 긴 기간 EMA를 넘어서면 하락 추세를 나타낼 때 긴 포지션을 열고, 짧은 기간 EMA가 더 긴 기간 EMA를 넘어서면 포지션을 닫습니다.
이 전략은 주로 이중 EMA 라인의 황금 십자가와 죽음의 십자가 이론을 적용합니다. 이중 EMA 라인은 긴 EMA와 짧은 EMA로 구성됩니다. 짧은 EMA 매개 변수는 10 일, 긴 EMA 매개 변수는 21 일로 설정됩니다.
짧은 EMA가 긴 EMA를 넘을 때 구매 신호가 생성됩니다. 짧은 EMA가 긴 EMA를 넘을 때 판매 신호가 생성됩니다. 전략은 또한 성장률의 문턱을 설정하여 성장이 긍정적 인 문턱을 초과 할 때만 긴 포지션을 열고 감소가 부정적인 문턱을 초과 할 때만 포지션을 닫습니다.
구체적으로, 구매 조건은 짧은 EMA가 긴 EMA보다 높고 주식 성장률이 긍정적 인 임계치를 초과 할 때입니다. 닫은 포지션 조건은 짧은 EMA가 긴 EMA보다 낮고 주식 성장률이 부정적인 임계치를 넘을 때입니다.
전체 전략은 비교적 간단하고 신뢰할 수 있으며, 가격 추세를 결정하고 거래 신호를 생성하기 위해 성장률 임계치를 설정하기 위해 이중 EMA 크로스오버를 사용합니다. 단일 라인 크로스오버와 비교하면 일부 잘못된 신호를 필터링 할 수 있습니다. 그러나 EMA 라인 자체는 지체 문제가 있습니다. 다른 지표 또는 동적 매개 변수 조정을 결합하면 전략 성능을 더욱 향상시킬 수 있습니다.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2) useTimeLimit = input(defval = false, title = "Use Start Time Limiter?") startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1) startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1) startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1) startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1) startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1) startTimeOk() => true lenght0 = input(10) lenght1 = input(21) source = close EmaShort = ema(ema(source, lenght0), lenght0) EmaLong = ema(ema(source, lenght1),lenght1) plot(EmaShort, color=red) plot(EmaLong, color=purple) growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2) thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01) thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001) if( startTimeOk() ) buy_condition = EmaShort > EmaLong and growth > thresholdUp buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown strategy.entry("buy", strategy.long, comment="buy", when=buy_condition) strategy.close(id='buy', when=buy_exit_condition)