
슈퍼동력전략은 여러 동력지표들을 종합적으로 사용하여, 여러 동력지표들이 동시에 부진하거나 부진할 때, 구매하거나 판매하는 작업을 수행한다. 이 전략은 여러 동력지표들을 조합함으로써, 가격 트렌드를 더 정확하게 포착할 수 있으며, 단일 지표에 의한 잘못된 신호를 피할 수 있다.
이 전략은 4개의 에버젯의 RMI 지표와 1개의 데 동력 흔들림 지표를 동시에 사용한다. RMI 지표는 가격 동력을 기반으로 계산되어 가격 상승과 하락의 힘을 판단한다. 데 MO는 가격 변화를 계산하여 시장의 과매매 상황을 판단한다.
RMI5에서 구매 라인을 통과하고, RMI4에서 구매 라인을 통과하고, RMI3에서 구매 라인을 통과하고, RMI2에서 구매 라인을 통과하고, RMI1에서 구매 라인을 통과하고, Chande MO에서 구매 라인을 통과하면 구매 작업이 수행됩니다.
RMI5 아래에서 판매 라인을 통과할 때, RMI4 위에서 판매 라인을 통과할 때, RMI3 위에서 판매 라인을 통과할 때, RMI2 위에서 판매 라인을 통과할 때, RMI1 위에서 판매 라인을 통과할 때, 그리고 Chande MO 아래에서 판매 라인을 통과할 때, 판매 작업을 수행한다.
RMI5는 다른 RMI 지표와 반대 방향으로 설정되어 있으며, 이는 트렌드를 더 잘 식별하여 피라미드 조작을 할 수 있다.
여러 지표를 통합하여 트렌드를 더 정확하게 판단하여 단일 지표의 잘못된 신호를 피합니다.
더 큰 수준의 트렌드를 식별할 수 있는 다중 시기를 포함하는 지표
역 RMI 지표는 트렌드 식별과 피라미드 조작을 보조할 수 있습니다.
데 MO는 과매도에서 잘못된 거래를 방지하는 데 도움이 됩니다.
과다한 지표 조합, 복잡한 변수 설정, 세심한 테스트와 최적화
여러 지표가 동시에 변하면 잘못된 신호가 발생할 수 있습니다.
여러 지표를 종합하면 거래 빈도가 낮을 수 있습니다.
다양한 품종과 시장 환경에 적합한 지표 파라미터를 고려해야 합니다.
테스트 지표 매개 변수 설정, 최적화 매개 변수 전략 안정성을 높이기 위해
신호 품질에 미치는 영향을 평가하기 위해 몇 가지 지표를 추가하거나 줄이도록 시도하십시오.
특정 시장 상황에서의 잘못된 신호를 방지하기 위해 필터링 조건을 도입할 수 있습니다.
지표의 매매선 위치를 조정하여 최적의 변수 조합을 찾습니다.
위험을 통제하기 위한 손해제도 도입을 고려
이 전략은 여러 가지 동적 지표를 종합적으로 사용함으로써 시장 추세를 판단하는 능력을 향상시킵니다. 그러나 파라미터를 설정하는 것은 복잡하며 신중하게 테스트하고 최적화하고 지속적으로 개선하고 조정해야합니다. 적절하게 사용하면 우수한 거래 신호를 얻을 수 있으며 시장 추세를 추적하는 데 약간의 장점이 있습니다. 그러나 거래자는 여전히 위험을 주의하고 최적의 파라미터 포지션을 찾고 위험 제어 장치에 참여하여 안정적인 거래를해야합니다.
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Super Momentum Strat", shorttitle="SMS", format=format.price, precision=2)
//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
src = input(close, "Price", type = input.source)
highlightBreakouts = input(title="Highlight Overbought/Oversold Breakouts ?", type=input.bool, defval=true)
CMOlength = input(9, minval=1, title="Alpha Chande Momentum Length")
//CMO
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, CMOlength)
sm2 = sum(m2, CMOlength)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)+50
plot(chandeMO, "Chande MO", color=color.blue)
obLevel = input(75, title="Chande Sellline")
osLevel = input(25, title="Chande Buyline")
hline(obLevel, color=#0bc4d9)
hline(osLevel, color=#0bc4d9)
///
///RMIS
//
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
//
///
///
//RMI1
length1 = input(title="RMI1 Length", type=input.integer, minval=1, defval=8)
momentumLength1 = input(title="RMI1 Momentum ", type=input.integer, minval=1, defval=3)
up1 = rma(max(change(src, momentumLength1), 0), length1)
down1 = rma(-min(change(src, momentumLength1), 0), length1)
rmi1 = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1))
obLevel1 = input(57, title="RMI1 Sellline")
osLevel1 = input(37, title="RMI1 Buyline")
rmiColor1 = rmi1 > obLevel1 ? #0ebb23 : rmi1 < osLevel1 ? #ff0000 : #ffe173
plot(rmi1, title="RMI 1", linewidth=2, color=rmiColor1, transp=0)
hline(obLevel1, color=#0b57d9)
hline(osLevel1, color=#0b57d9)
//RMI2
length2 = input(title="RMI2 Length", type=input.integer, minval=1, defval=12)
momentumLength2 = input(title="RMI2 Momentum ", type=input.integer, minval=1, defval=3)
up2 = rma(max(change(src, momentumLength1), 0), length2)
down2 = rma(-min(change(src, momentumLength1), 0), length2)
rmi2 = down2 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up2 / down2))
obLevel2 = input(72, title="RMI2 Sellline")
osLevel2 = input(37, title="RMI2 Buyline")
rmiColor2 = rmi1 > obLevel1 ? #0ebb23 : rmi2 < osLevel2 ? #ff0000 : #c9ad47
plot(rmi2, title="RMI 2", linewidth=2, color=rmiColor2, transp=0)
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)
//RMI3
length3 = input(title="RMI3 Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI3 Momentum ", type=input.integer, minval=1, defval=53)
up3 = rma(max(change(src, momentumLength3), 0), length3)
down3 = rma(-min(change(src, momentumLength3), 0), length3)
rmi3 = down3 == 0 ? 100 : up3 == 0 ? 0 : 100 - (100 / (1 + up3 / down3))
obLevel3 = input(46, title="RMI3 Sellline")
osLevel3 = input(24, title="RMI3 Buyline")
rmiColor3 = rmi3 > obLevel3 ? #0ebb23 : rmi3 < osLevel3 ? #ff0000 : #967d20
plot(rmi3, title="RMI 3", linewidth=2, color=rmiColor3, transp=0)
hline(obLevel3, color=#cf0bd9)
hline(osLevel3, color=#cf0bd9)
//RMI4
length4 = input(title="RMI4 Length", type=input.integer, minval=1, defval=520)
momentumLength4 = input(title="RMI4 Momentum ", type=input.integer, minval=1, defval=137)
up4 = rma(max(change(src, momentumLength4), 0), length4)
down4 = rma(-min(change(src, momentumLength4), 0), length4)
rmi4 = down4 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up4 / down4))
obLevel4 = input(0, title="RMI4 Sellline")
osLevel4 = input(100, title="RMI4 Buyline")
rmiColor4 = rmi4 > obLevel4 ? #0ebb23 : rmi4 < osLevel4 ? #ff0000 : #7a630b
plot(rmi4, title="RMI 4", linewidth=2, color=rmiColor4, transp=0)
hline(obLevel4, color=#bd1150)
hline(osLevel4, color=#bd1150)
//RMI5
length5 = input(title="RMI5 Length", type=input.integer, minval=1, defval=520)
momentumLength5 = input(title="RMI5 Momentum ", type=input.integer, minval=1, defval=137)
up5 = rma(max(change(src, momentumLength5), 0), length5)
down5 = rma(-min(change(src, momentumLength5), 0), length5)
rmi5 = down5 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up5 / down5))
buy5 = input(0, title="RMI5 Buy Above")
sell5 = input(47, title="RMI5 Sell Below")
rmiColor5 = rmi5 > buy5 ? #0ebb23 : rmi5 < sell5 ? #ff0000 : #7a630b
plot(rmi5, title="RMI 5", linewidth=2, color=rmiColor5, transp=0)
hline(buy5, color=#bd1150)
hline(sell5, color=#bd1150)
///
///END RMIS
//
//
// Relative Momentum Index script may be freely distributed under the MIT license.
//
///
///
hline(50, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
//alerts
longcondition1 = crossover(chandeMO, osLevel)
shortcondition1 = crossunder(chandeMO, obLevel)
longcondition2 = rmi5>buy5 and rmi4<osLevel4 and rmi3<osLevel3 and rmi2<osLevel2 and rmi1<osLevel1 and longcondition1
shortcondition2 = rmi5<sell5 and rmi4>obLevel4 and rmi3>obLevel3 and rmi2>obLevel2 and rmi1>obLevel1 and shortcondition1
if testPeriod()
if longcondition2
strategy.entry("Buy", strategy.long)
if shortcondition2
strategy.entry("Sell", strategy.short)