
이 전략의 이름은 역동량 지표와 슈퍼트렌드 조합 거래 전략이다. 이 전략의 주요 아이디어는 역동량 지표와 슈퍼트렌드 지표를 조합하여 두 가지 지표의 장점을 활용하여 더 정확한 엔트리와 엑시트를 달성하는 것이다.
구체적으로, 동력 지표는 가격 운동의 가속화 또는 감속을 판단하고, 트렌드의 변화를 판단하기 위해 사용된다. 슈퍼 트렌드는 가격이 상승 또는 하락 채널을 뚫고, 트렌드의 변화를 판단하기 위해 사용된다. 둘의 조합은 트렌드의 전환점을 더 정확하게 포착할 수 있다.
가격의 N일 동력값을 계산하고, 동력값의 1일 동력을 계산한다. N일 동력>0과 1일 동력>0일 때, 더 많은 신호로; N일 동력 과 1일 동력 일 때, 빈 신호로.
가격의 ATR 값을 계산하고 ATR에 따라 상승 채널 라인과 하강 채널 라인을 그리십시오. 가격이 아래에서 상승 채널을 돌파 할 때 다중 신호를하고, 가격이 위에서 하락 채널을 돌파 할 때 공백 신호를하십시오.
동력 지표의 다중 신호와 SuperTrend의 다중 신호를 과 으로 조작하고, 동시에 발생하면 최종 다중 엔트리 신호를 수행한다. 동력 지표의 하위 신호와 SuperTrend의 하위 신호를 과 으로 조작하고, 동시에 발생하면 최종 하위 엔트리 신호를 수행한다.
동력 지표를 사용하여 가격 움직임의 가속화 또는 감속을 판단하고 트렌드 전환점을 잡습니다.
슈퍼 트렌드 지표를 사용하여 가격 돌파구를 판단하고 돌파구를 잡습니다.
두 지표는 서로 검증되어 잘못된 신호를 줄이고 엔트리의 정확도를 높일 수 있습니다.
두 가지 지표가 결합된 Exit logic는 트렌드 추적 탈퇴를 가능하게 하고, premature exit를 방지한다.
N 일 운동량 지표 파라미터를 잘못 설정하면 트렌드 전환점을 놓칠 수 있다.
슈퍼트렌드 파라미터가 잘못 설정되어 있고, 채널이 정확하지 않아서 잘못된 신호가 발생할 수 있다.
두 지표가 서로를 확인하고, 몇 가지 기회를 놓칠 수도 있습니다.
최적의 쌍을 찾기 위해 변수 모음을 조정하고, 전략 잠재력을 최대한 끌어내야 한다.
그 해결책은 다음과 같습니다.
워크-포워드 분석을 사용하여 최적의 변수를 찾아보세요.
매개 변수 최적화 모듈을 추가하여 매개 변수를 실시간으로 최적화한다.
두 가지 지표의 조합 논리를 조정하고, 종합적으로 고려한다.
매개 변수를 추가하여 시장 환경에 따라 매개 변수를 실시간으로 조정할 수 있도록 최적화 모듈을 조정합니다.
기계 학습 모델을 추가하여 지표 신호의 정확성을 판단합니다.
더 많은 지표를 확장하여 지표 집합을 구성하고, 투표 메커니즘을 사용하여 엔트리 신호를 생성합니다.
데이터에 기반한 접근으로 엔트리 및 엑시트 시기를 판단하기 위해 전통적인 지표를 대체하는 딥러닝 모델을 사용합니다.
이 전략은 동력 지표와 SuperTrend 지표의 장점을 통합하여, 이중 검증을 통해 Entry의 정확도를 높이고, 지표를 사용하여 Exit의 타이밍을 판단한다. 단일 지표 사용에 비해 가짜 신호를 줄일 수 있으며, 더 높은 승률을 얻을 수 있다. 변수 최적화, 기계 학습 등의 기술 확장으로 전략 효과는 더 향상될 수 있으며, 더 깊은 연구와 응용에 가치가 있다.
/*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