
이중 트렌드 돌파 전략은 트렌드 라인, 평균 라인 교차 및 가격 채널 돌파를 포함한 여러 가지 기술 지표를 통합하여 시장 추세 변화를 식별하고 추세 반전의 기회를 잡기 위해 사용된다. 이 전략은 추세 추적과 돌파 신호를 결합하여 입출소가 비교적 안정적이지만 허위 돌파의 위험이 있습니다.
이 전략은 우선 중심축의 고점과 중심축의 저점으로 다공계 트렌드를 구분하고, 가격이 트렌드 라인을 돌파할 때 잠재적인 트렌드 반전을 나타냅니다. ATR 방법을 사용하여 기울기를 계산하여 실제 변동에 더 가깝게 만듭니다.
이 전략은 단기 5일선과 장기 34일선을 사용하여, 빠른 평균선 교차 전략을 구축한다. 짧은 평균선 상에 긴 평균선을 가로지르는 것은 구매 신호이며, 아래로 가로지르는 것은 판매 신호이다. 빠른 평균선을 사용하여 단기 트렌드를 포착하고, 느린 평균선은 긴 트렌드를 추적한다.
이 전략은 또한 5 일간의 가격 통로를 설정하여 상반기 구매를 돌파하고 하반기 판매를 돌파하여 단기 가격 돌파구를 포착합니다.
이 세 가지 기술 지표 신호의 통합은 이 전략에 적용되며, 잘못된 거래를 방지하기 위해 안정적인 이중 판단 메커니즘을 형성한다.
여러 기술 지표가 통합되어 신호가 안정적이라고 판단하여 가짜 침입으로 인한 손실을 줄였습니다.
빠른 평균선과 가격 채널은 단기 가격 추세 변화를 적시에 파악할 수 있다. 느린 평균선과 추세선은 장기 추세를 추적하고, 입출구는 비교적 안정적이다.
코드 구조는 명확하고, 지표 매개 변수는 조정할 수 있으며, 다른 주기, 품종에 대해 조정 및 최적화를 할 수 있다.
트렌드 판단과 돌파 신호를 결합하여, 트렌드 황소 시장에서 시장 상황이 더 급진적이면 이익을 얻는데 도움이 됩니다. 범위 정리에서, 돌파 신호 거래 빈도는 감소하여 큰 흔들림을 피하는 데 도움이 됩니다.
특히 가격 변동이 있는 상황에서는 손실이 발생할 수 있습니다.
평균선 교차는 지연 신호이며, 큰 트렌드 반전이 발생할 경우, 상향 구매 또는 하향 판매의 위험이 있습니다.
여러 가지 기술 지표가 통합되며, 매개 변수를 최적화할 때 많은 테스트와 계산이 필요하며, 시간이 오래 걸립니다.
가짜 돌파 위험을 위해 거래량 지표에 필터링을 추가할 수 있습니다. 예를 들어, 돌파 할 때 거래량이 증가해야하거나 K 선의 종결 가격이 돌파되지 않은 전 최고 또는 전 최저 등이 있습니다.
높은 가격으로 구매할 위험을 추적하기 위해, RSI 지표가 과매매하지 않도록 과매매 과매매 지표의 필터 조건을 설정할 수 있습니다. 또는 스톱 라인을 설정하여 스톱 손실을 가속화하십시오.
매개 변수 최적화 문제를 해결하기 위해, 기계 학습 방법을 사용하여 최적화를 지원하여 많은 역사 데이터에서 최적의 매개 변수 조합을 찾을 수 있습니다.
거래량 지표 또는 과매매 과매매 지표에 트렌드 신뢰성을 추가하고, 가짜 돌파구가 손실을 초래하지 않도록 엄격한 필터링 조건을 설정하십시오.
다른 거래 품종에 대해 평균선 변수 설정과 가격 통로 변수를 조정하여 그 품종의 특성에 더 적합하게 만듭니다.
단위 손실을 제어하기 위해 손해 방지 전략을 추가하고, 이동 손해 방지, 단위 손해 방지 등의 방법을 사용한다.
적응적인 방법을 사용하여 시장이 흔들림 정비 단계에 들어갈 때 포지션 개시 횟수를 줄이고, 추세가 분명할 때 거래 횟수를 늘립니다.
Deep Learning을 활용하여 매매점을 판단하고, 전통적인 기술 지표를 보조하거나 대체하는 모델을 훈련시키고, 더 효과적인 거래 전략을 찾기 위해 Deep Learning의 일반화 능력을 활용합니다.
이 전략은 여러 가지 일반적인 기술 지표를 통합하여 이중 판단 시스템을 형성하여 트렌드 변화를 효과적으로 식별하고 재검토에서 좋은 안정성을 나타냅니다. 그러나 필터링 조건, 스톱 손실 전략, 매개 변수 조정 및 기계 학습 방법을 사용하여 최적화를 통해 특정 가짜 돌파 위험을 주의해야하며 전략의 실전 성능을 더욱 향상시킬 수 있습니다.
/*backtest
start: 2024-02-11 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FinanceUpPvtLtd
//@version=5
strategy("FINANCE UP FREE STRATEGY (+919665229664)", overlay=true)
// Script 01 - Trendlines
length_tl = input.int(14, 'Swing Detection Lookback')
mult_tl = input.float(1., 'Slope', minval=0, step=.1)
calcMethod_tl = input.string('Atr', 'Slope Calculation Method', options=['Atr', 'Stdev', 'Linreg'])
backpaint_tl = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')
upCss_tl = input(color.teal, 'Up Trendline Color', group='Style')
dnCss_tl = input(color.red, 'Down Trendline Color', group='Style')
showExt_tl = input(true, 'Show Extended Lines')
var upper_tl = 0.
var lower_tl = 0.
var slope_ph_tl = 0.
var slope_pl_tl = 0.
var offset_tl = backpaint_tl ? length_tl : 0
n_tl = bar_index
src_tl = close
ph_tl = ta.pivothigh(length_tl, length_tl)
pl_tl = ta.pivotlow(length_tl, length_tl)
slope_tl = switch calcMethod_tl
'Atr' => ta.atr(length_tl) / length_tl * mult_tl
'Stdev' => ta.stdev(src_tl, length_tl) / length_tl * mult_tl
'Linreg' => math.abs(ta.sma(src_tl * n_tl, length_tl) - ta.sma(src_tl, length_tl) * ta.sma(n_tl, length_tl)) / ta.variance(n_tl, length_tl) / 2 * mult_tl
slope_ph_tl := ph_tl ? slope_tl : slope_ph_tl
slope_pl_tl := pl_tl ? slope_tl : slope_pl_tl
upper_tl := ph_tl ? ph_tl : upper_tl - slope_ph_tl
lower_tl := pl_tl ? pl_tl : lower_tl + slope_pl_tl
var upos_tl = 0
var dnos_tl = 0
upos_tl := ph_tl ? 0 : close > upper_tl - slope_ph_tl * length_tl ? 1 : upos_tl
dnos_tl := pl_tl ? 0 : close < lower_tl + slope_pl_tl * length_tl ? 1 : dnos_tl
// var uptl_tl = line.new(na, na, na, na, color=upCss_tl, style=line.style_dashed, extend=extend.right)
// var dntl_tl = line.new(na, na, na, na, color=dnCss_tl, style=line.style_dashed, extend=extend.right)
// if ph_tl and showExt_tl
// uptl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? ph_tl : upper_tl - slope_ph_tl * length_tl)
// uptl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? ph_tl - slope_tl : upper_tl - slope_ph_tl * (length_tl + 1))
// if pl_tl and showExt_tl
// dntl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? pl_tl : lower_tl + slope_pl_tl * length_tl)
// dntl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? pl_tl + slope_tl : lower_tl + slope_pl_tl * (length_tl + 1))
plot(backpaint_tl ? upper_tl : upper_tl - slope_ph_tl * length_tl, 'Upper', color=ph_tl ? na : upCss_tl, offset=-offset_tl)
plot(backpaint_tl ? lower_tl : lower_tl + slope_pl_tl * length_tl, 'Lower', color=pl_tl ? na : dnCss_tl, offset=-offset_tl)
plotshape(upos_tl > upos_tl[1] ? low : na, "Upper Break", shape.labelup, location.absolute, upCss_tl, text="B", textcolor=color.white, size=size.tiny)
plotshape(dnos_tl > dnos_tl[1] ? high : na, "Lower Break", shape.labeldown, location.absolute, dnCss_tl, text="B", textcolor=color.white, size=size.tiny)
alertcondition(upos_tl > upos_tl[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos_tl > dnos_tl[1], 'Downward Breakout', 'Price broke the up-trendline downward')
// Script 02 - Channel Breakout
length_channel = input.int(title="Channel Length", minval=1, maxval=1000, defval=5)
upBound_channel = ta.highest(high, length_channel)
downBound_channel = ta.lowest(low, length_channel)
if (not na(close[length_channel]))
strategy.entry("LE-LE", strategy.long, stop=upBound_channel + syminfo.mintick, comment="LE-LE")
strategy.entry("BECH-DE", strategy.short, stop=downBound_channel - syminfo.mintick, comment="BECH-DE")
// Script 03 - MA Cross
shortlen_ma = input.int(5, "Short MA Length", minval=1)
longlen_ma = input.int(34, "Long MA Length", minval=1)
short_ma = ta.sma(close, shortlen_ma)
long_ma = ta.sma(close, longlen_ma)
plot(short_ma, color=#FF6D00, title="Short MA")
plot(long_ma, color=#43A047, title="Long MA")
plot(ta.cross(short_ma, long_ma) ? short_ma : na, color=#2962FF, style=plot.style_cross, linewidth=4, title="Cross")