볼륨 가격 확인 전략을 활용한 고급 되돌림 거래 삼각형 돌파

SMA RSI TSL EMA 三角形突破 交易量确认 动态止损 趋势跟踪 斐波那契
생성 날짜: 2025-06-03 09:57:46 마지막으로 수정됨: 2025-06-03 09:57:46
복사: 0 클릭수: 314
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

볼륨 가격 확인 전략을 활용한 고급 되돌림 거래 삼각형 돌파 볼륨 가격 확인 전략을 활용한 고급 되돌림 거래 삼각형 돌파

개요

고급 회수 거래 삼각형 돌파구와 양값 확인 전략은 기술 형태 인식, 거래량 확인 및 동적 위험 관리를 결합한 양적 거래 방법이다. 이 전략은 1시간 차트 최적화를 위한 것으로, 각각 삼각형 돌파구와 양값 확인 원칙에 기반한 두 개의 독립적인 입문 설정을 제공한다. 전략의 핵심 아이디어는 높은 확률의 돌파구를 포착하는 동시에, 동적으로 스톱로스를 추적하여 위험을 효과적으로 관리하는 것이다. 특히 이윤이 특정 마이너스에 도달했을 때 손실을 자동으로 폐쇄하여 수익을 잠금하는 것이다. 이 이중 입문 조건 메커니즘은 전략이 다른 시장에서 유연성을 유지할 수 있도록 하고, 지능적인 스톱로스는 위험과 수익을 균형을 잡는 데 도움이 된다.

전략 원칙

이 전략은 두 가지 중요한 입문 설정과 잘 설계된 출구 메커니즘에 기반하여 작동합니다.

입구 설정 1 - 골든 트라이글러브

  • 가장 가까운 높고 낮은 점의 축을 사용하여 삼각형 모양을 검출한다
  • 가격 종결 시 삼각형의 꼭대기보다 높고 동시에 50주기 SMA보다 높을 때 포지션 브레이크를 확인합니다.
  • 은 을 뚫고 입성했다.
  • 이 설정은 통합 이후의 초기 동력 거래에 특히 적합합니다.

입시 설정 2 - 가격과 거래량 확인

  • 매출액이 급증한 것은 평균값의 회귀를 기준으로 합니다.
    • 50 SMA를 넘어서서 상반기 마감에 다시 올라갔습니다.
    • 최소 1개의 “상장일”을 요구합니다.
    • 거래량은 50주기 SMA보다 높아야 하며, 이전 4일 동안 매일보다 높아야 합니다.
  • 거래량 확정일 종료시 입점
  • 삼각형 패턴이 눈에 띄지 않지만 축적력이 강할 때 특히 효과적입니다.

탈퇴 전략 - 동적 추적 중지

  • 초기 스톱 손실은 최대 입시 가격 아래 10%로 설정됩니다.
  • 이윤이 10%에 도달했을 때, 추적 중지 손실이 5%로 강화됩니다.
  • 이 메커니즘은 거래자가 수익을 유지하면서 트렌드를 계속 유지할 수 있게 해줍니다.

코드 구현에서, 전략은 간소화된 축점인 삼각형 형태를 인식하고, 현재 가격과 SMA를 비교하여 가격 움직임을 확인한다. 거래량 확인을 위해, 전략은 거래량이 이동 평균보다 높지 않은지 확인하고, 이전 몇 주기의 거래량을 확인한다. 동적 추적 스톱은 거래에서 달성된 최고 가격을 지속적으로 업데이트하고, 그에 따른 스톱 레벨을 계산함으로써 실현된다.

전략적 이점

  1. 이중 입학두 개의 독립적인 입문 설정을 제공함으로써 전략은 다른 시장 환경에 적응하여 유리한 거래 기회를 잡을 가능성을 높입니다. 시장이 명백한 통합 기간에 있을 때, 설정 1은 돌파구를 잡을 수 있습니다. 시장 패턴이 덜 분명하지만 강력한 축적 징후가있을 때, 설정 2는 역할을 할 수 있습니다.

  2. 리스크 관리 통합: 내장된 동적 추적 스톱 손실 메커니즘은 시장의 변동에 자동으로 적응하여 자본을 보호하면서 수익을 증가시킬 수 있습니다. 특히 수익이 기본 경계에 도달하면 자동으로 손실을 막는 기능을 강화하여 수익을 고정시키고 수익을 버리는 모순을 효과적으로 균형을 맞추고 있습니다.

  3. 필터 가짜 돌파구: SMA 필터링과 거래량 확인을 결합하여, 전략은 가짜 브레이크의 위험을 감소시킵니다. 가격은 형태를 뚫는 것뿐만 아니라 SMA 상위에서 유지해야합니다. 설정 2는 또한 상당한 거래량 지원을 필요로하며, 이는 신호 품질을 크게 향상시킵니다.

  4. 시각 보조전략: 전략은 거래 중 배경 색상, 실시간 대지판 및 다양한 그래프 요소를 포함한 풍부한 시각적 지표를 제공하여 거래자가 전략 상태와 신호를 쉽게 모니터링 할 수 있습니다.

  5. 유연한 시간 프레임의 최적화: 전략은 1시간 차트에 최적화되어 있지만, 그 매개 변수는 다른 시간 프레임에 맞게 조정될 수 있어 전략의 적용 범위를 늘린다.

전략적 위험

  1. 시장 조건 의존성이 전략은 수평 상반기 시장에서 가장 잘 작동하며, 강렬한 하향 추세 또는 높은 변동성 시장에서 좋지 않을 수 있습니다. 곰 시장 환경에서 가짜 돌파구가 증가하여 연속 손실이 발생할 수 있습니다.

  2. 슬라이드 포인트와 실행 위험: 실제 거래에서, 특히 유동성이 낮은 시장에서, 입수 및 중단 지점은 전략의 전반적인 성과에 영향을 미치는 슬라이드 지점을 경험할 수 있습니다. 이러한 위험을 줄이기 위해, 시장 가격 대신 제한 가격 목록을 사용하는 것이 고려 될 수 있습니다.

  3. 매개 변수 최적화 도전전략은 여러 파라미터에 의존합니다. (SMA 길이는, 상쇄율 등) 이러한 파라미터는 특정 시장과 시간 프레임에 따라 최적화되어야 합니다. 잘못된 파라미터 설정은 과도한 적합성이나 저성능으로 이어질 수 있습니다.

  4. 과도한 거래의 위험특정 시장 조건에서, 전략은 과도한 신호를 생성하여 과도한 거래와 거래 비용을 증가시킬 수 있습니다. 추가 필터 또는 냉각 기간을 적용하면 이러한 위험을 줄일 수 있습니다.

  5. 손해제 최적화 균형동적 중지 메커니즘이 이 전략의 장점이지만, 너무 긴축한 중지 설정은 수익성있는 거래를 조기 퇴출할 수 있으며, 너무 넓은 설정은 수익 회전으로 이어질 수 있습니다. 특정 시장의 변동성에 따라 중지 파라미터를 신중하게 조정해야합니다.

전략 최적화 방향

  1. 트렌드 필터에 가입하세요: 더 광범위한 트렌드 지표 (예를 들어 더 긴 이동 평균 또는 ADX) 를 통합하면 전략이 유리한 시장 방향에서만 거래 할 수 있습니다. 예를 들어, 조건이 추가 될 수 있습니다.

  2. 거래량 확인 논리를 최적화합니다.: 현재 거래량 확인은 이전 4 주기의 거래량보다 더 많은 거래량을 요구합니다. 이는 시장 조건에 따라 너무 엄격하거나 충분하지 않을 수 있습니다. 시장의 변동성 동력에 따라 조정되는 거래량 절감을 조정하여 설정 2의 효과를 높일 수 있습니다.

  3. 통합 시간 필터: 특정 거래 시기는 다른 시점보다 이 전략에 더 적합할 수 있다. 시간 필터를 추가하여 불리한 시간에 거래하는 것을 피하는 것은 전체적인 성과를 향상시킬 수 있다.

  4. 일부 수익 잠금: 현재의 탈퇴 전략은 이중적이다 ((지유 전부 또는 전부 탈퇴) ᄂ. 분기 탈퇴 시스템을 구현하여, 이익이 증가함에 따라 순차적으로 포지션 규모를 줄이고, 일부 상향 잠재력을 유지하면서 수익의 일부를 잠금 할 수 있다 ᄂ.

  5. 관련 자산 확인을 추가합니다.: 일부 시장에서, 관련 자산의 확인은 신호 품질을 향상시킬 수 있습니다. 예를 들어, 주식 거래에서, 부문 또는 산업의 강도는 추가 필터로 사용할 수 있습니다. 외환에서, 관련 통화 쌍의 행동은 추가 확인을 제공 할 수 있습니다.

  6. 통합 시장 변동성 조정: 시장의 변동성 (ATR 또는 역사적인 변동성) 에 따라 스톱 레벨을 동적으로 조정하여 전략을 다른 시장 조건에 더 잘 적응시킬 수 있습니다. 낮은 변동성 환경에서 더 긴밀한 스톱을 사용하고 높은 변동성 환경에서 더 넓은 스톱을 사용합니다.

요약하다

고급 회수 거래 삼각형 돌파구와 양 가격 확인 전략은 기술 형태 식별, 동적 원칙 및 거래량 분석을 결합한 포괄적 인 거래 방법을 제공합니다. 두 가지 상호 보완 된 입시 설정을 제공함으로써 전략은 다양한 시장 조건에서 유연성을 유지하며, 동적 추적 중지 메커니즘은 최적화된 위험 관리를 제공합니다.

이 전략의 주요 장점은 여러 가지 입문 기준과 통합 된 위험 관리로 인해 일일에서 단기 파동에 이르기까지 다양한 거래 스타일에 적합합니다. 그러나 시장 조건 의존성과 변수 최적화 과제는 주의해야 할 주요 위험입니다.

트렌드 필터를 추가하여 거래량 확인 논리를 최적화하거나 변동성 조정을 구현함으로써 거래자는 전략의 성능을 더욱 향상시킬 수 있습니다. 궁극적으로, 이 전략은 개인 위험 선호도 및 시장 특성에 따라 사용자 정의 할 수있는 견고한 프레임 워크를 제공하여 기술 주도, 위험 제어 된 거래 방법을 찾는 거래자에게 귀중한 도구가됩니다.

전략 소스 코드
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © eemani123

//@version=5
strategy("Golden Triangle Strategy (1H, Setup 1 & 2)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
smaLength = input.int(34, title="SMA Length (1H Optimized)", minval=1)
volumeSmaLength = input.int(34, title="Volume SMA Length", minval=1)
trailingStopPct = input.float(6.0, title="Initial Trailing Stop Loss (%)", minval=0.1)
tightenPct = input.float(5.0, title="Tightened TSL (%)", minval=0.1)
profitTrigger = input.float(10.0, title="Tighten TSL After Profit (%)", minval=1)
maxLookback = input.int(10, title="Max Lookback Bars for Setup 2", minval=1)
pivotStrength = input.int(2, title="Pivot Strength (Shorter for 1H)", minval=1)

// === SMA Calculations ===
smaPrice = ta.sma(close, smaLength)
smaVolume = ta.sma(volume, volumeSmaLength)

// === Setup 1: Golden Triangle (simplified with pivots) ===
pivotHigh = ta.pivothigh(high, pivotStrength, pivotStrength)
pivotLow = ta.pivotlow(low, pivotStrength, pivotStrength)

var float triangleTop = na
var float triangleBottom = na

if not na(pivotHigh)
    triangleTop := pivotHigh
if not na(pivotLow)
    triangleBottom := pivotLow

triangleBreakout = ta.crossover(close, triangleTop) and close > smaPrice
enterSetup1 = triangleBreakout

// === Setup 2: Price & Volume Confirmation ===
priceBelowSMA = ta.barssince(close < smaPrice) <= maxLookback
priceConfirm = close > smaPrice and close > close[1]
volumeConfirm = volume > smaVolume and volume > volume[1] and volume > volume[2] and volume > volume[3] and volume > volume[4]
enterSetup2 = priceConfirm and priceBelowSMA and volumeConfirm

// === Entry & TSL Tracking ===
var bool inTradeSetup1 = false
var bool inTradeSetup2 = false
var float entryPrice1 = na
var float entryPrice2 = na
var float highestSinceEntry1 = na
var float highestSinceEntry2 = na
var float trailingStop1 = na
var float trailingStop2 = na

// === Entry Conditions ===
if enterSetup1 and not inTradeSetup1
    strategy.entry("Buy Setup 1", strategy.long)
    entryPrice1 := close
    highestSinceEntry1 := close
    inTradeSetup1 := true

if enterSetup2 and not inTradeSetup2
    strategy.entry("Buy Setup 2", strategy.long)
    entryPrice2 := close
    highestSinceEntry2 := close
    inTradeSetup2 := true

// === Update Trailing Stops with Tightening ===
if inTradeSetup1
    highestSinceEntry1 := math.max(highestSinceEntry1, high)
    profit1 = (highestSinceEntry1 - entryPrice1) / entryPrice1 * 100
    activePct1 = profit1 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop1 := highestSinceEntry1 * (1 - activePct1 / 100)

if inTradeSetup2
    highestSinceEntry2 := math.max(highestSinceEntry2, high)
    profit2 = (highestSinceEntry2 - entryPrice2) / entryPrice2 * 100
    activePct2 = profit2 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop2 := highestSinceEntry2 * (1 - activePct2 / 100)

// === Exit Conditions ===
if inTradeSetup1 and close < trailingStop1
    strategy.close("Buy Setup 1", comment="TSL Hit - Setup 1")
    inTradeSetup1 := false
    entryPrice1 := na
    highestSinceEntry1 := na
    trailingStop1 := na

if inTradeSetup2 and close < trailingStop2
    strategy.close("Buy Setup 2", comment="TSL Hit - Setup 2")
    inTradeSetup2 := false
    entryPrice2 := na
    highestSinceEntry2 := na
    trailingStop2 := na

// === Plotting ===
plot(smaPrice, color=color.orange, title="SMA")
//plot(triangleTop, title="Triangle Top", color=color.red, style=plot.style_linebr, linewidth=2)
//plot(triangleBottom, title="Triangle Bottom", color=color.green, style=plot.style_linebr, linewidth=2)
plot(inTradeSetup1 ? trailingStop1 : na, color=color.red, title="Trailing Stop - Setup 1", linewidth=2,style=plot.style_linebr)
plot(inTradeSetup2 ? trailingStop2 : na, color=color.blue, title="Trailing Stop - Setup 2", linewidth=2,style=plot.style_linebr)

plotshape(enterSetup1, title="Triangle Breakout Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(enterSetup2, title="Volume Confirmed Entry", location=location.belowbar, color=color.blue, style=shape.circle, size=size.small)

// === Alerts ===
alertcondition(enterSetup1, title="Setup 1 Buy", message="Golden Triangle Breakout (Setup 1) - BUY")
alertcondition(enterSetup2, title="Setup 2 Buy", message="Volume + Price Confirmation (Setup 2) - BUY")

// === Background highlight during trades ===
bgcolor(inTradeSetup1 or inTradeSetup2 ? color.new(color.green, 85) : na, title="In-Trade Highlight")


// === Weekly Fibonacci Pivot Levels (R3 / S3) ===
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyLow = request.security(syminfo.tickerid, "W", low)
weeklyClose = request.security(syminfo.tickerid, "W", close)

weeklyPivot = (weeklyHigh + weeklyLow + weeklyClose) / 3
weeklyRange = weeklyHigh - weeklyLow
fibR3 = weeklyPivot + 1.000 * weeklyRange
fibS3 = weeklyPivot - 1.000 * weeklyRange

// === Plot R3 and S3 ===
plot(fibR3, title="Weekly Fib R3", color=color.fuchsia, linewidth=2, style=plot.style_circles)
plot(fibS3, title="Weekly Fib S3", color=color.teal, linewidth=2, style=plot.style_circles)
// === Weekly Fibonacci Pivot Levels (R3 / S3) ===