
이동 평균 회수 전략은 주가 이동 평균의 교차 상황을 추적하고, 금포가 발생했을 때 회수 기회가 있는지 판단하고, 만약 있다면, 역으로 작동하는 양적 거래 전략이다. 이 전략은 피보나치 회수를 사용하여 시장 진입점과 손실 중지 지점을 설정하여 단기 가격 회수를 포착한다.
이 전략은 주로 두 개의 이동 평균 (14일 EMA와 56일 SMA) 을 기반으로 한다. 14일 EMA가 56일 SMA를 아래에서 통과하면 구매 신호가 발생한다. 이후, 코드는 20일까지 거슬러 올라가 지지를 위해 낮은 지점을 찾으며, 통과 지점의 가까운 가격과 결합하여 피보나치 회전선을 그리며, 1.272배 회전선을 엔트리, 0.618배 회전선을 엑시트로 사용한다.
전체 전략은 다음과 같은 몇 가지 단계로 구성됩니다.
이 전략의 주요 과정과 작동 원리는 다음과 같습니다. 이 전략은 단기적인 반동이 발생했을 때 수익을 얻을 수있는 기회를 잡을 수 있습니다.
이동 평균 회전 전략은 다음과 같은 장점이 있습니다.
전체적으로, 이 전략은 짧은 라인 반전 거래에 매우 적합하며, 시장에서 특정 회전이 발생할 때 이러한 기회를 잡을 수 있습니다. 전략 구현은 비교적 간단하고 직접적입니다.
이동 평균 회귀 전략은 나름대로의 장점이 있지만, 위험도 있습니다.
위와 같은 위험에 대해 우리는 단위 손실을 엄격하게 통제하는 짧은 중지 시간을 설정할 수 있습니다. 동시에 회귀 라인의 범위를 최적화하여 합리적인 목표 수익을 설정하여 일부 위험을 피할 수 있습니다.
이동 평균 회전 전략에는 많은 최적화 가능성이 있으며, 다음의 몇 가지 측면에서 시작될 수 있습니다.
이동 평균의 주기 길이, 회귀일 수, 회귀선 배수 등과 같은 다양한 파라미터 설정을 테스트하여 최적의 파라미터를 찾습니다.
다중 또는 이동적 제약을 적용할 수 있는 손해 방지 장치를 추가하여 위험을 더 잘 통제할 수 있도록 한다.
다른 지표인 FILTER와 결합하여 부적절한 시장 환경에서 거래하는 것을 피합니다.
자본 관리를 최적화하고, 합리적인 포지션 규모와 리스크 을 설정한다.
테스트 및 최적화 매개 변수를 통해, 이 전략은 더 안정적인 거래 성능을 얻을 수 있도록 더욱 개선될 수 있다.
이동 평균 리트랙 전략은 매우 실용적인 단선 거래 전략이다. 그것은 가격이 단기간에 나타나는 역전 기회를 포착할 수 있고, 미리 설정된 입점과 중단점을 통해 거래를 할 수 있다. 전략 아이디어는 명확하고 간단하며, 이해하기 쉽고 구현된다. 또한, 특정 거래 위험도 존재하며, 변수 최적화, 위험 제어 등의 방법으로 더 발전시킬 필요가 있다.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MAC Pullback", overlay=true)
// Setting up timeperiod for testing
startPeriodYear = input(2014, "Backtest Start Year")
startPeriodMonth = input(1, "Backtest Start Month")
startPeriodDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0)
stopPeriodYear = input(2035, "Backtest Stop Year")
stopPeriodMonth = input(12, "Backtest Stop Month")
stopPeriodDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0)
// Moving Averages
ema14 = ema(close, 14)
ema28 = ema(close, 28)
sma56 = sma(close, 56)
// Plot
plot(ema14, title="ema14", linewidth=2, color=green)
plot(ema28, title="ema28", linewidth=2, color=red)
plot(sma56, title="sma56", linewidth=3, color=blue)
// Strategy
goLong = cross(ema14, sma56) and ema14 > ema28
goShort = cross(ema14, sma56) and ema14 < ema28
// Locate Swing Lows
leftBars = input(20)
rightBars=input(20)
swinglow = pivotlow(close, leftBars, rightBars)
plot(swinglow, style=cross, linewidth=8, color=#00FF00, offset=-rightBars)
if goLong == true and time >= testPeriodStart and time <= testPeriodStop
// We try to make sure that we're catching the first Pullback after the crossover
if ema14[12] < sma56[12]
pivotpoint = lowest(40)[0] //lowest value of the month as our swing low
// We calculate a Fib 1.272 extension (from the previous swing low to
// the crossover long entry's open) and use this as our entry target to short the Pullback
extensiontarget = ((close[1] - pivotpoint) * 1.27) + pivotpoint
shorttarget = ((close[1] - pivotpoint) * 0.618) + pivotpoint
strategy.order("Pullback", strategy.short, 5.0, limit=extensiontarget)
// I would like to use a trailing stop but for know we just hope to get
// filled if the pullback reaches all the way down to the 0.618.
// We also place a tight stop loss since we trying to short an uptrend
strategy.exit("Pullback Exit", "Pullback", limit=shorttarget, loss=400)