
이것은 평균 회귀 원리에 기초한 거래 전략으로, 가격과 50주기 지수 이동 평균 (EMA) 사이의 눈에 띄는 편차를 이용하여 거래 기회를 결정한다. 이 전략은 특히 높은 변동성 시장에 대해 설계되어, 가격의 EMA보다 훨씬 낮은 바닥을 구입하고 가격이 EMA 위로 회복되면 판매함으로써 수익을 창출하기 위해 고안되었다. 이 전략은 주로 가격과 EMA 사이의 비율 차이를 추적하며, 이 차이가 특정 하락점을 초과할 때 거래 신호를 유발한다.
이 전략의 핵심 논리는 평균값 회귀 이론에 기초하고 있는데, 즉, 가격은 단기간에 평균값에서 벗어날 수 있지만, 장기적으로는 평균값으로 돌아가는 경향이 있다. 구체적으로, 전략은 50주기 EMA를 가격의 참조 평균값으로 사용하며, 가격이 그 평균값보다 현저하게 낮을 때 (<10% 이상) 구매 기회로 간주한다. 가격이 EMA 위로 돌아와 수익성이 있을 때, 판매 신호를 유발한다. 계산 방법은 다음과 같다.
diff_perct = ((ema20 - close) / ema20) * 100diff_perct2 = ((high - ema20) / ema20) * 100diff_perct > 10[가격이 EMA보다 10% 이상 낮을 때]diff_perct2 > 0(즉, 최고 가격은 EMA보다 높습니다) 그리고 현재 거래 수익이 1보다 크면 판매 신호를 유발합니다.이 50주기 EMA의 반평균 회귀 전략은 기술 분석을 기반으로 한 자동화 된 거래 시스템으로 가격과 평균의 눈에 띄는 편차를 포착하여 거래 기회를 찾습니다. 이 전략은 간단하고 직관적이지만, 변동성이 높은 시장 환경에 적합하지만, 특히 강한 트렌드 시장에서 약간의 위험이 있습니다.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("SUIBTC 2H - EMA dip public",overlay=true,initial_capital=100,default_qty_value=100, default_qty_type = strategy.cash,process_orders_on_close=false,calc_on_every_tick=false)
BuyTrigger = input.bool(false)
SellTrigger = input.bool(false)
src = input(open, title="Source")
offset = input.int(title="Offset", defval=5, minval=-500, maxval=500)
ema20 = ta.ema(close, 50)
plot(ema20, title="ema20", color=color.yellow, linewidth=3)
diff_perct = ((ema20 - close) / ema20) * 100
diff_perct2 = ((high - ema20) / ema20) * 100
if ( diff_perct > 10)
BuyTrigger := true
if( diff_perct2 > 0 and strategy.openprofit > 1)
SellTrigger := true
notInTrade = strategy.position_size <= 0
inTrade = strategy.position_size > 0
timeSinceLastTrade_ms = time - strategy.opentrades.entry_time(0)
if (BuyTrigger and notInTrade )
strategy.order("long", strategy.long , oca_name = 'audusdt' , when = BuyTrigger ,limit = open, comment = "buy: SUIBTC EMA Dip")
if (SellTrigger and inTrade )
strategy.close(id="long" , qty_percent = 100, comment = "sell: SUIBTC EMA Dip")