
이 전략은 이동 평균 간격 반전 ( moving average span reversal) 이라고 명명되어 있으며, 이는 다른 주기적인 이동 평균 사이의 교차 상황을 계산하여 거래가 반전되는 시기를 판단하여 적절한 다중 하위 조작을 수행한다.
이 전략은 3개의 이동 평균을 동시에 계산합니다.
빠른 이동 평균이 아래에서 느린 이동 평균을 통과하면 단기 이동 평균이 상반되는 것을 나타냅니다. 빠른 이동 평균이 위에서 아래에서 느린 이동 평균을 통과하면 단기 이동 평균이 상반되는 것을 나타냅니다.
가짜 돌파구를 필터링하기 위해, 전략은 또한 4번째 이동 평균을 도입합니다. 즉, 장기 동향 필터 ((주기 변수 tlenght). 가격이 이동 평균의 위에 있을 때만 더 많은 신호를 고려합니다.
거래 규칙은 다음과 같습니다.
빠른 이동 평균 위에 느린 이동 평균을 뚫고, 느린 이동 평균이 가장 느린 이동 평균을 뚫고 있을 때 (단기 다면 신호), 그리고 가격이 장기 트렌드 필터보다 높을 때, 더 많은 입장을 취한다. 빠른 이동 평균 아래에서 느린 이동 평균을 뚫고 있을 때, 다면 포지션을 평행한다.
빠른 이동 평균 아래로 느린 이동 평균을 통과하고, 느린 이동 평균이 가장 느린 이동 평균을 통과 할 때 (短期空頭信号), 그리고 가격이 장기 동향 필터보다 낮을 때, 공백 상장; 빠른 이동 평균 위에 느린 이동 평균을 통과 할 때, 공백 상장 포지션을 평행한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 다음과 같은 위험도 있습니다.
해결책:
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이 전략은 이동 평균의 금叉死叉을 기반으로 역전 거래하고, 동시에 장기 트렌드 필터를 도입하여 거래 방향을 안내하여 시장 역전 시점을 효과적으로 식별할 수 있다. 재검토 결과에서 볼 때 이 전략은 수익성이 좋으며, 일정한 실시트 응용 가치가 있다. 이후 파라미터 선택, 지표 필터링, 중지 장치 등의 측면에서 최적화하여 전략을 더 안정적이고 실용적으로 사용할 수 있다.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Trap", overlay=true)
flenght = input.int(title="Fast MA Period", minval=1, maxval=2000, defval=3)
llenght = input.int(title="Slower MA Period", minval=1, maxval=2000, defval=5)
sslenght = input.int(title="Slowest MA Period", minval=1, maxval=2000, defval=8)
tlenght = input.int(title="Trend Filter MA Period", minval=1, maxval=2000, defval=200)
ssma = ta.sma(close, sslenght)
fma = ta.sma(close, flenght)
sma = ta.sma(close, llenght)
tma = ta.sma(close, tlenght)
plot(fma, color=color.red)
plot(sma, color=color.white)
plot(ssma, color=color.green)
plot(tma, color=color.maroon, linewidth=2)
short = (fma > sma and sma > ssma) and close < tma
long = (fma < sma and sma < ssma) and close > tma
closeshort = fma < sma and sma < ssma
closelong = fma > sma and sma > ssma
if long
strategy.entry("long", strategy.long)
if closelong
strategy.close("long")
if short
strategy.entry("short", strategy.short)
if closeshort
strategy.close("short")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)