모멘텀과 슈퍼트렌드 조합 거래 전략

저자:차오장, 날짜: 2023-12-27 16:37:58
태그:

img

1. 전략 개요

이 전략은 모멘텀과 슈퍼트렌드 조합 거래 전략이라고 불립니다. 이 전략의 주요 아이디어는 두 지표의 장점을 더 정확한 입출과 출출을 위해 모멘텀 지표와 슈퍼트렌드 지표를 결합하는 것입니다.

특히, 모멘텀 지표는 가격 움직임의 가속화 또는 둔화 및 트렌드 변화의 판단에 사용됩니다. 슈퍼 트렌드는 가격이 상승 또는 하락 채널을 통과하고 트렌드 변화를 판단하는 데 사용됩니다. 둘의 조합은 트렌드 역전 지점을 더 정확하게 파악 할 수 있습니다.

2. 세부 전략 원칙

  1. 운동량 표시기 부분

    가격의 N-day 운동량 값을 계산하고 운동량 값의 1일 운동량을 계산합니다. N-day 운동량 > 0과 1일 운동량 > 0이면 긴 신호입니다. N-day 운동량 < 0과 1일 운동량 < 0이면 짧은 신호입니다.

  2. 슈퍼트렌드 지표 부분

    가격의 ATR 값을 계산하고, ATR을 기반으로 상향 채널 라인과 하향 채널 라인을 그립니다. 가격이 하단에서 상향 채널을 통과하면 긴 신호이고, 가격이 상단에서 하향 채널을 통과하면 짧은 신호입니다.

  3. 입력 논리

    모멘텀 지표의 긴 신호와 슈퍼트렌드의 긴 신호의 AND 동작을 동시에 발생했을 때 최종 긴 입문 신호를 생성하기 위해 사용한다. 모멘텀 지표의 짧은 신호와 슈퍼트렌드의 짧은 신호의 AND 동작을 동시에 발생했을 때 최종 짧은 입문 신호를 생성하기 위해 사용한다.

3. 이점 분석

  1. 동력 지표를 사용하여 트렌드 반전 지점을 파악하기 위해 가격 움직임의 가속화 또는 둔화를 결정합니다.

  2. 슈퍼트렌드 지표를 사용하여 가격 돌파 경로를 결정하여 돌파 지점을 캡처합니다.

  3. 두 종류의 지표의 상호 검증은 잘못된 신호를 줄이고 항목의 정확성을 향상시킬 수 있습니다.

  4. 두 지표의 출구 논리 조합은 추세 추적 출구를 가능하게 해 조기 출구를 방지합니다.

4. 위험 분석

  1. N-day 운동 지표의 잘못된 매개 변수 설정은 트렌드 반전 지점을 놓칠 수 있습니다.

  2. SuperTrend의 잘못된 매개 변수 설정은 부정확한 채널 도영 및 잘못된 신호로 이어질 수 있습니다.

  3. 두 지표의 상호 검증은 어떤 기회를 놓칠 수 있습니다.

  4. 전략의 잠재력을 극대화하기 위해 최적의 매개 변수 쌍을 찾기 위해 매개 변수 조합을 조정해야합니다.

대응 솔루션:

  1. 최적의 매개 변수를 찾기 위해 앞뒤 분석을 사용하세요.

  2. 실시간 매개 변수 최적화를 위한 매개 변수 최적화 모듈 추가

  3. 두 지표의 조합 논리를 조정하고 포괄적으로 고려하십시오.

5. 최적화 방향

  1. 시장 조건에 따라 실시간 조정을 위해 적응 매개 변수 최적화 모듈을 추가

  2. 표시 신호의 정확성을 판단하는 데 도움이 되는 기계 학습 모델을 추가

  3. 더 많은 지표를 확장하여 지표 집합을 형성하고 투표 메커니즘을 사용하여 입력 신호를 생성하십시오.

  4. 데이터에 기반한 입출시점 판단을 위해 전통적인 지표 대신 딥러닝 모델을 사용

6. 요약

이 전략은 엔트리의 정확성을 향상시키기 위해 두 번 검증을 통해 모멘텀 및 슈퍼 트렌드 지표의 장점을 결합하고 출입의 타이밍을 판단하기 위해 지표를 사용합니다. 지표의 단일 사용에 비해 잘못된 신호를 줄이고 더 높은 승률을 달성 할 수 있습니다. 매개 변수 최적화, 머신 러닝 및 기타 확장 기술을 통해 전략 효과의 추가 개선이 여전히 가능하며 심도있는 연구와 응용을받을 가치가 있습니다.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Momentum + SuperTrend Strategy", overlay=true)

// Momentum Strategy
length = input(12)
price = close
momentum(seria, length) =>
    mom = seria - seria[length]
    mom
mom0 = momentum(price, length)
mom1 = momentum(mom0, 1)
momLongCondition = mom0 > 0 and mom1 > 0
momShortCondition = mom0 < 0 and mom1 < 0

// SuperTrend Strategy
Periods = input(10)
Multiplier = input(3.0)
changeATR = input(true)
src = input(hl2)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

// Combined Entry Conditions
longCondition = momLongCondition and buySignal
shortCondition = momShortCondition and sellSignal

// Strategy Entries
if (longCondition)
    strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
    strategy.cancel("MomLE")

if (shortCondition)
    strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
    strategy.cancel("MomSE")

// Plot SuperTrend on the chart
upPlot = plot(trend == 1 ? up : na, title="SuperTrend Up", color=color.green, linewidth=2)
dnPlot = plot(trend == -1 ? dn : na, title="SuperTrend Down", color=color.red, linewidth=2)

// Highlight the SuperTrend region
fill(upPlot, dnPlot, color = trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90), title="SuperTrend Highlight")

// Plot SuperTrend Buy/Sell signals on the chart
plotshape(series=buySignal, title="SuperTrend Buy Signal", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sellSignal, title="SuperTrend Sell Signal", color=color.red, style=shape.triangledown, size=size.small)
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © naveen1119

더 많은