멀티 모멘텀 지표 조합 전략


생성 날짜: 2023-09-24 13:24:47 마지막으로 수정됨: 2023-09-24 13:24:47
복사: 0 클릭수: 823
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 실험적으로 Chande 운동 지표, RMI 지표, Triple HMA RSI, Double EVW RSI, Triple EMA RSI 등의 여러 운동 지표 조합을 사용하여 모든 지표가 동시에 신호를 발산할 때 트렌드 방향을 판단하고 출전한다. 다중 인자 실험 전략에 속한다.

전략 원칙

  1. Chande 동력 지표를 계산하고, 구매/판매 라인을 설정한다.

  2. RMI 지표, Triple HMA RSI, Double EVW RSI, Triple EMA RSI 등 여러 지표를 계산한다.

  3. 각 지표에 대한 구매 라인과 판매 라인을 설정하십시오.

  4. Chande 동력 지표가 구매 라인을 상향으로 가로질러 발생하면, 다른 지표가 각자의 구매 라인보다 낮은지 확인하십시오. 모든 지표가 동시에 조건을 충족하면 구매 신호가 발생합니다.

  5. 반대로, 만약 Chande 동력 지표 아래에서 판매 라인을 통과하고, 다른 지표가 동시에 각자의 판매 라인을 초과하면 판매 신호가 발생한다.

전략적 이점

  1. 여러 지표의 조합을 통해 서로 검증할 수 있고, 잘못된 판단을 피할 수 있다.

  2. 데 동력 지표는 트렌드 변화에 민감하여 전환을 효과적으로 포착할 수 있다.

  3. RMI 지표는 동력 수준을 보여주며, 과매매를 판단할 수 있다.

  4. HMA RSI, EVW RSI 등의 지표는 테스트 RSI를 계산하는 방식이 다르다.

  5. 다중 지표 조합 방식은 지표 효과를 테스트하는 데 유연합니다.

전략적 위험

  1. 다중 지표 조합 요구사항을 충족하기 어렵고, 신호가 적고, 기회를 놓칠 수 있다.

  2. 위험 통제 수단이 없는 것.

  3. 지표 효과는 시간대에 의존하며, 다른 주기에는 민감하지 않을 수 있다.

  4. 매개 변수가 최적화되지 않은 경우, 지표 매개 변수가 잘못 설정될 수 있습니다.

  5. 하지만, 이 전략은 충분히 검증될 수 없습니다.

대응방법:

  1. 지수 하락을 적절히 낮추고, 더 많은 거래 기회를 제공합니다.

  2. 모바일 스톱 또는 하드 스톱을 추가하여 단편 손실을 제어하십시오.

  3. 다른 주기 및 품종에서 테스트하여 최적의 파라미터를 찾습니다.

  4. 기계 학습이나 그리드 검색과 같은 방법을 사용하여 파라미터를 최적화하십시오.

  5. 더 많은 시장에서 재검토를 통해 전략의 안정성을 확보할 수 있습니다.

전략 최적화 방향

  1. 다양한 지표 변수 설정을 테스트하여 최적의 구성을 찾습니다.

  2. 다중 타임스케일 동력 지표를 추가한다.

  3. 트렌드 검출을 도입하고 역동적인 거래를 피하십시오.

  4. 기계학습을 통해 다중 지표 중량화를 향상시킵니다.

  5. 엑스포는 엑스포와 엑스포를 결합한 시스템으로, 경기장에 들어가는 시기를 선택한다.

요약하다

이 전략은 여러 동력 지표를 조합하여 더 신뢰할 수 있는 트렌드 전환점을 찾으려고 한다. 이러한 다원적 전략 아이디어는 강력한 확장성과 최적화 공간을 가지고 있으며, 파라미터 선택, 지표 중량, 위험 제어 등에서 시작하여 신호 품질을 보장하는 전제 조건에서 시스템 논리에 맞는 더 많은 거래 기회를 얻을 수 있다. 그러나 여전히 불충분한 재측량으로 인한 곡선 흡수 위험을 주의해야 한다.

전략 소스 코드
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © burgercrisis

//@version=4
strategy("RMI + Triple HMRSI + Double EVWRSI + TERSI Strategy")

//* 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)
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)
plot(chandeMO, "Chande MO", color=color.blue)




//RMI
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
length3 = input(title="RMI Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI Momentum ", type=input.integer, minval=1, defval=25)
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)))-50
//
//
// end RMI, end Alex Orekhov copywrite
//
//

lengthMA = input(7)
lengthRSI = input(14)
thrsi = hma(hma(hma(rsi(src, lengthRSI), lengthMA), lengthMA), lengthMA)
thrsi1 = (thrsi-50)*10

lengthMA2 = input(7)
lengthRSI2 = input(14)
devwrsi = ((ema(ema(vwma(rsi(src, lengthRSI2), lengthMA2), lengthMA2), lengthMA2))-50)*5

lengthMA3 = input(7)
lengthRSI3 = input(14)
tersi = ((ema(ema(ema(rsi(src, lengthRSI3), lengthMA3), lengthMA3), lengthMA3))-50)*10

rmirsi = ((thrsi*rmi3/25))

//Boundary Lines

obLevel1 = input(0, title="Chande Sellline")
osLevel1 = input(0, title="Chande Buyline")
hline(obLevel1, color=#0bc4d9)
hline(osLevel1, color=#0bc4d9)

obLevel2 = input(0, title="Triple HMRSI Sellline")
osLevel2 = input(0, title="Triple HMRSI Buyline")
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)

obLevel3 = input(0, title="DEVWRSI Sellline")
osLevel3 = input(0, title="DEVWRSI Buyline")
hline(obLevel3, color=#5a0bd9)
hline(osLevel3, color=#5a0bd9)

obLevel4 = input(0, title="TERSI Sellline")
osLevel4 = input(0, title="TERSI Buyline")
hline(obLevel4, color=#5a0bd9)
hline(osLevel4, color=#5a0bd9)

obLevel5 = input(0, title="RMI Sellline")
osLevel5 = input(0, title="RMI Buyline")
hline(obLevel5, color=#5a0bd9)
hline(osLevel5, color=#5a0bd9)

obLevel6 = input(0, title="RMI*RSI Sellline")
osLevel6 = input(0, title="RMI*RSI Buyline")
hline(obLevel6, color=#5a0bd9)
hline(osLevel6, color=#5a0bd9)

plot((thrsi1), title="THRSI")
plot(devwrsi, color=color.red, title="DEVWRSI")
plot(tersi, color=color.yellow, title="TERSI")
plot(rmirsi, color=color.purple, title="RMI*HMRSI")
plot(rmi3, color=color.orange, title="RMI")




longcondition1 = crossover(chandeMO, osLevel1)
shortcondition1 = crossunder(chandeMO, obLevel1)
longcondition2 = rmirsi<osLevel6 and rmi3<osLevel5 and tersi<osLevel4 and devwrsi<osLevel3 and thrsi1<osLevel2  and longcondition1
shortcondition2 = rmirsi>obLevel6 and rmi3>obLevel5 and tersi>obLevel4 and devwrsi>obLevel3 and thrsi1>obLevel2  and shortcondition1

if testPeriod()
    if longcondition2
        strategy.entry("Buy", strategy.long)
    if shortcondition2
        strategy.entry("Sell", strategy.short)






hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")