
이 전략은 두 개의 다른 기간의 EMA 평균선의 교차점을 계산하여 시장의 경향을 판단하고 그에 따라 거래 신호를 생성한다. 단기 EMA에서 긴 기간 EMA를 통과하면 시장이 상승 추세에 들어갔다고 생각하면 이 전략은 더 많은 포지션을 열고; 단기 EMA에서 긴 기간 EMA를 통과하면 시장이 하향 추세에 들어갔다고 생각하면 이 전략은 평정 포지션을 탈퇴한다.
이 전략은 주로 이중 EMA 평균선의 황금 사각 이론을 적용한다. 이중 EMA 평균선은 긴 EMA와 짧은 EMA로 나다. 짧은 EMA 파라미터는 10일, 긴 EMA 파라미터는 21일로 설정된다.
짧은 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)