이 전략은 유동 평균과 슈퍼 트렌드 지표를 결합하여 트렌드를 추적합니다. 트렌드가 상승할 때 길고 트렌드가 하락할 때 짧습니다.
가중된 이동 평균 MA를 계산합니다. 기간 동안 가중된 평균 가격을 계산하기 위해 부피를 가중으로 사용하십시오.
MA를 기반으로 Hull 이동 평균을 계산합니다. Hull 이동 평균은 가격 변화에 더 민감합니다.
슈퍼 트렌드 지표를 계산합니다. 슈퍼 트렌드는 트렌드 변화를 식별하기 위해 ATR을 결합합니다. 상부와 하부 대역을 계산합니다.
상단단위보다 더 가까이 갈 때, 길게 갈 때, 하단단위보다 더 가까이 갈 때, 짧게 갈 때
오픈, 클로즈, 하이 및 로우와 같은 보조 지표를 그래프하여 가격 움직임을 시각적으로 관찰합니다.
지표의 크로스오버를 기반으로 거래 결정을 내립니다.
이 전략은 이동 평균과 슈퍼 트렌드를 결합하여 더 정확한 트렌드 검출을 가능하게합니다.
Hull Moving Average는 가격 변화에 더 민감하게 반응하여 적절한 시점에 트렌드 전환을 돕습니다.
슈퍼 트렌드는 시장의 변동성에 적응하기 위해 상위와 하위 대역을 동적으로 조정합니다.
보조 지표는 지표 신호로 의사결정을 돕기 위해 가격 움직임을 시각적으로 표시합니다.
이 전략은 이동 평균 기간, 슈퍼 트렌드 멀티플라이커 등에 대한 매개 변수 최적화를 허용합니다.
윙사 (Whipsaws) 는 범위에 묶인 시장에서 잘못된 신호를 생성하여 불필요한 거래를 유발할 수 있습니다.
여러 가지 지표를 모니터링하면 전략의 구현이 상대적으로 복잡해질 수 있습니다.
매개 변수들은 각기 다른 제품의 특성에 맞게 적절하게 조정되어야 합니다.
단일 포지션의 손실을 제한하기 위해 엄격한 스톱 로스가 필요합니다.
높은 거래 빈도는 위원회로부터의 영향 통제를 요구합니다.
시장에 더 민감한 것을 찾기 위해 다른 이동 평균을 테스트하십시오.
다른 슈퍼 트렌드 멀티플리커를 테스트하여 트렌드 변화를 파악합니다.
변동성이 증가할 때 포지션 크기를 줄이기 위해 변동성 인덱스를 포함합니다.
범위를 제한하는 기간 동안 잘못된 신호를 피하기 위해 뷰레이크 조건을 추가합니다.
스톱 로스 전략을 최적화하여 시장 조건에 더 적응할 수 있도록 합니다.
이 전략은 트렌드를 추적하기 위해 이동 평균과 슈퍼 트렌드를 모두 사용하여 트렌드 방향을 판단합니다. 이점은 더 정확한 트렌드 검출을 위해 지표들 간의 상호 검증입니다. 그러나 잘못된 신호에 주의해야 합니다. 이 전략은 매개 변수 최적화와 위험 통제를 통해 더욱 향상될 수 있습니다. 강력한 트렌드 특성을 가진 기기들에 대한 트렌드 다음 운영에 적합합니다.
/*backtest start: 2022-11-07 00:00:00 end: 2023-11-13 00:00:00 period: 1d basePeriod: 1h 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/ // © rajukpatel //@version=5 strategy('My RK Strategy with Alert', shorttitle='My RK Strategy with Alert', overlay=true ) src5 = input(close) tf = input(1440) len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7 ma = ta.ema(src5 * volume, len5) / ta.ema(volume, len5) //script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/ src1 = ma p(src1, len5) => n = 0.0 s = 0.0 for i = 0 to len5 - 1 by 1 w = (len5 - i) * len5 n += w s += src5[i] * w s s / n hm = 2.0 * p(src1, math.floor(len5 / 3)) - p(src1, len5) vhma = p(hm, math.floor(math.sqrt(len5))) lineColor = vhma > vhma[1] ? color.lime : color.red plot(vhma, title='VHMA', color=lineColor, linewidth=3) hColor = true vis = true hu = hColor ? vhma > vhma[2] ? #00ff00 : #ff0000 : #ff9800 vl = vhma[0] ll = vhma[1] m1 = plot(vl, color=hu, linewidth=1, transp=60) m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80) fill(m1, m2, color=hu, transp=70) // b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7 // res5 = input.timeframe('D') o = request.security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on) c = request.security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on) hz = request.security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on) l = request.security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on) col = c >= o ? color.lime : color.red ppo = plot(b ? o >= c ? hz : l : o, color=col, title='Open', style=plot.style_stepline, transp=100) ppc = plot(b ? o <= c ? hz : l : c, color=col, title='Close', style=plot.style_stepline, transp=100) plot(b and hz > c ? hz : na, color=col, title='High', style=plot.style_circles, linewidth=2, transp=60) plot(b and l < c ? l : na, color=col, title='Low', style=plot.style_circles, linewidth=2, transp=60) fill(ppo, ppc, col, transp=90) // // INPUTS // st_mult = input.float(1, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01) st_period = input.int(50, title='SuperTrend Period', minval=1) // CALCULATIONS // up_lev = l - st_mult * ta.atr(st_period) dn_lev = hz + st_mult * ta.atr(st_period) up_trend = 0.0 up_trend := c[1] > up_trend[1] ? math.max(up_lev, up_trend[1]) : up_lev down_trend = 0.0 down_trend := c[1] < down_trend[1] ? math.min(dn_lev, down_trend[1]) : dn_lev // Calculate trend var trend = 0 trend := c > down_trend[1] ? 1 : c < up_trend[1] ? -1 : nz(trend[1], 1) // Calculate SuperTrend Line st_line = trend == 1 ? up_trend : down_trend // Plotting //plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend") buy = ta.crossover(c, st_line) sell = ta.crossunder(c, st_line) signal = input(false) /////////////// Plotting /////////////// plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.new(color.lime, 0)) plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0)) if buy strategy.entry('My Long Entry Id', strategy.long) if sell strategy.entry('My Short Entry Id', strategy.short)