모멘텀 오실레이터 기반 전략 최적화


생성 날짜: 2024-02-20 13:54:49 마지막으로 수정됨: 2024-02-20 13:54:49
복사: 0 클릭수: 612
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

모멘텀 오실레이터 기반 전략 최적화

개요

이 전략은 동력 지표 변화 비율 ((ROC) 을 기반으로 최적화 개선을 하는 전략이다. 원래의 ROC 전략에 비해 이 전략은 다음과 같은 최적화를 한다:

  1. 최대 역사 ROC 값을 도입하고, 현재 ROC 동성은 최대 역사 ROC에 비해 동력의 상대 값을 얻는다.
  2. 운동량 상대값을 부드럽게 처리하여 신호를 생성한다.
  3. 구매/판매 신호의 하락을 추가합니다.

이러한 최적화 수단으로, 많은 비효율적 신호를 필터링하여 전략을 더 안정적이고 신뢰할 수 있게 할 수 있습니다.

전략 원칙

이 전략의 핵심 지표는 변화의 비율이다. ROC는 주식 가격의 일정한 주기의 변화의 속도를 측정한다. 이 전략은 먼저 9주기의 ROC 값을 계산한다. 그 다음에는 이 ROC 지표의 지난 200주기의 최대 값을 기록하고, 현재 ROC가 최대 역사 ROC의 비율을 계산하여 동력의 상대 강도를 얻는다. 예를 들어, 지난 200일 동안 ROC이 100을 넘어서면, 그날의 ROC이 80일 때 상대 강도는 80%이다.

이 상대적 강도는 길이 10의 SMA를 통해 부드럽게 처리하고, 단기 변동을 필터링하여, 부드러운 곡선을 얻는다. 부드러운 곡선이 3일 연속으로 상승하고, 값이 -80% 이하일 때, 주식 가격 하락이 느려지기 시작하고, 바닥의 징후가 생기는 것으로 간주하고, 따라서 더 많은 것을 한다. 부드러운 곡선이 3일 연속으로 하락하고, 값이 80% 이상일 때, 주식 가격 상승이 느려지기 시작하고, 상단의 징후가 생기는 것으로 간주하고, 따라서 평지한다.

우위 분석

이 전략은 원래의 ROC 전략에 비해 다음과 같은 장점이 있습니다.

  1. 역사 ROC 최대값 비교를 도입하여 동력 지표의 상대적 높이를 잘 측정할 수 있으며, 절대값이 높지 않은 무효 신호를 필터링한다.
  2. 부드러운 처리 필터 노이즈, 신호를 더 안정적이고 신뢰할 수 있도록.
  3. 매매 마이너스를 설정하여 무효 거래를 줄여줍니다.

전체적으로, 이 전략은 ROC 지표에 대한 효과적인 2차 가공을 수행하여 실판 거래에 더 적합하게 만들었습니다.

위험 분석

이 전략에는 다음과 같은 위험들이 있습니다.

  1. ROC 지표는 시장의 흐름을 파악할 수 없으며, 약간의 오해가 있다. 황소와 곰의 전환 기간에 부딪히면, 이 전략은 실패할 수 있다.
  2. 구매 및 판매 값은 완벽하지 않으며, 값이 너무 높거나 너무 낮게 설정되면 전략의 성능에 영향을 미칩니다.
  3. SMA 변수 설정이 잘못되면 전략 효과에도 영향을 미칠 수 있다.

위와 같은 위험을 줄이기 위해, 트렌드 지표와 결합하여 큰 트렌드를 판단 할 수 있습니다. 절벽 파라미터를 조정하여 최적의 파라미터를 테스트하십시오. SMA 주기 파라미터를 최적화하십시오.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 트렌드 지표와 결합하여 시장의 전반적인 흐름을 판단하여, 상반기 전환 시 실패를 피한다.
  2. 서로 다른 ROC 길이 변수를 테스트하고, 가장 최적의 변수 조합을 찾기 위해 매매한 절댓값 변수를 테스트한다.
  3. SMA 평준화 매개 변수를 최적화하여 최적의 매개 변수를 찾습니다.
  4. 손해 방지 장치를 추가하십시오.

요약하다

이 전략은 ROC 지표에 기초하여 2차 개발을 위한 최적화 전략이다. 이 전략은 역사 최대값 비교, SMA 평형화 및 매매 하락 등의 수단을 도입하여 무효 신호를 필터링하여 전략을 더 안정화 할 수 있다. 주요 장점은 신호 품질이 높으며 실장에 적합하다. 추세, 변수 최적화 등과 결합한 후속 개선이 가능하여 전략 성능을 더욱 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Rate Of Change Mod Strategy", shorttitle="ROC", format=format.price, precision=2)
//length = input.int(9, minval=1)
//source = input(close, "Source")
//roc = 100 * (source - source[length])/source[length]
//plot(roc, color=#2962FF, title="ROC")
//hline(0, color=#787B86, title="Zero Line")

length = input.int(9, minval=1, title="Length")
maxHistory = input(200, title="Max Historical Period for ROC")
lenghtSmooth = input.int(10, minval=1, title="Length Smoothed ROC")
lenghtBUY = input.int(-80, title="Buy Threshold")
lenghtSELL = input.int(80, title="Buy Threshold")

source = close
roc = 100 * (source - source[length]) / source[length]

// Calculate the maximum ROC value in the historical period
maxRoc = ta.highest(roc, maxHistory)

// Calculate current ROC as a percentage of the maximum historical ROC
rocPercentage = (roc / maxRoc) * 100


rocPercentageS = ta.sma(rocPercentage, lenghtSmooth)
if ta.rising(rocPercentageS, 3) and rocPercentageS < lenghtBUY
    strategy.entry("Buy", strategy.long)

if ta.falling(rocPercentageS, 3) and rocPercentageS > lenghtSELL
    strategy.close("Buy")


plot(rocPercentage, color=color.new(color.blue, 0), title="Percentage ROC")
plot(rocPercentageS, color=color.new(#21f32c, 0), title="Percentage ROC")
hline(0, color=color.new(color.gray, 0), title="Zero Line")