이 전략은 트레이딩 신호에 대한 과잉 구매 및 과잉 판매 수준을 결정하기 위해 Chande Momentum Oscillator (CMO) 를 사용합니다. 극한을 식별하기 위해 오시레이터를 매끄럽게하기 위해 3 기간 동안의 절대 CMO 값은 평균됩니다. 전형적인 평균 반전 오시레이터 거래 전략.
핵심 논리는 다음과 같습니다.
CMO는 가격 변화의 모멘텀을 반영한다. 높은 절대 값은 과잉 구매 / 과잉 판매 구역으로 들어가는 가격 차이를 나타낸다. 전략은 과잉 구매 / 과잉 판매 구역에 들어가는 가격 차이를 나타낸다. 전략은 과잉 구매 / 과잉 판매 구역에 들어가는 가격 차이를 나타낸다.
완화:
이 전략은 다음을 통해 강화될 수 있습니다.
이 전략은 CMO를 사용하여 평균 리버션 거래에 대한 과반 구매 / 과반 판매를 식별합니다. 여러 기간 평균화는 잘못된 신호를 피하는 데 도움이됩니다. CMO 자체는 오차를 측정하기위한 확실한 이론적 근거를 가지고 있습니다. 더 나은 매개 변수, 스톱 및 필터를 통해 개선하면 안정적인 오시레이터 거래 전략이 될 수 있습니다.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-14 07:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 ////////////////////////////////////////////////7//////////// // Copyright by HPotter v1.0 21/02/2017 // This indicator plots the absolute value of CMO averaged over three // different lengths. This indicator plots a classical-looking oscillator, // which is really an averaged value based on three different periods. // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="CMOabsav", shorttitle="CMOabsav") Length1 = input(5, minval=1) Length2 = input(10, minval=1) Length3 = input(20, minval=1) TopBand = input(58, minval=1) LowBand = input(5, minval=0) reverse = input(false, title="Trade reverse") hline(0, color=green, linestyle=hline.style_dashed) hline(TopBand, color=purple, linestyle=hline.style_solid) hline(LowBand, color=red, linestyle=hline.style_solid) xMom = close - close[1] xMomabs = abs(close - close[1]) nSum1 = sum(xMom, Length1) nSumAbs1 = sum(xMomabs, Length1) nSum2 = sum(xMom, Length2) nSumAbs2 = sum(xMomabs, Length2) nSum3 = sum(xMom, Length3) nSumAbs3 = sum(xMomabs, Length3) nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3) pos = iff(nRes > TopBand, 1, iff(nRes < LowBand, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="CMOabsav")