다이내믹 머니 매니지먼트 슈퍼트렌드 트렌드 추종 5배 위험-보상 전략

ATR supertrend 趋势跟踪 动态资金管理 风险控制 金字塔加仓 分组交易
생성 날짜: 2025-03-31 11:53:06 마지막으로 수정됨: 2025-03-31 11:53:06
복사: 0 클릭수: 357
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다이내믹 머니 매니지먼트 슈퍼트렌드 트렌드 추종 5배 위험-보상 전략 다이내믹 머니 매니지먼트 슈퍼트렌드 트렌드 추종 5배 위험-보상 전략

개요

다이내믹 펀드 매니지먼트 방식의 슈퍼트렌드 트렌드 추적 5배 리스크 수익 전략은 슈퍼트렌드 지표에 기반한 고급 트렌드 추적 시스템으로, 트렌드 판단과 정밀한 펀드 관리 기술을 결합하여 거래당 포지션 크기를 동적으로 계산하여 위험을 통제한다. 이 전략의 핵심 특징은 ATR (Average True Range) 를 사용하여 시장의 변동성을 파악하고, 같은 방향으로 거래하는 신호 그룹을 관리하며, 각 거래 그룹에 대해 고정된 5:1 리스크 수익 비율을 설정한다.

전략 원칙

이 전략은 SuperTrend 지표의 트렌드 판단 메커니즘을 기반으로 하고, 분단 거래와 동적 포지션 관리의 고급 기술을 결합한다. 주요 작동 원리는 다음과 같다:

  1. 슈퍼 트렌드 지표 계산먼저 ATR값을 계산하고, 그 다음 중점 가격을 기반으로 ((HL2) 더하기 ATR 곱셈을 더하여 기본 하차를 얻는다. 중요한 혁신은 재귀 평준화 기술을 사용하여 최종 궤도대를 계산하는 데 있습니다. 이것은 지표의 안정성과 신뢰성을 향상시킵니다.

  2. 트렌드 판단 논리: 종결 가격과 전기 최종 궤도带의 관계를 비교하여 트렌드를 결정한다. 종결 가격이 궤도를 돌파할 때, 트렌드는 상승으로 바뀌고, 궤도를 돌파할 때, 트렌드는 하락으로 바뀌고, 다른 상황에서는 원래의 트렌드를 유지한다.

  3. 신호 생성 메커니즘: 트렌드가 하락에서 상승으로 전환할 때 구매 신호를 생성한다. 트렌드가 상승에서 하락으로 전환할 때 판매 신호를 생성한다.

  4. 분단 거래 관리전략은 같은 방향의 거래를 한 그룹으로 분류하고, 각 거래 그룹에 대한 초기 스톱 로즈 수준을 기록한다. 이것은 시스템을 통합적으로 여러 관련 거래를 관리하고, 자금 효율성을 높일 수 있게 한다.

  5. 동적 위치 계산공식에 따르면math.floor(strategy.equity * 0.01 / stopDistance)매 거래의 포지션 크기를 계산하여 매 매 매매가 계좌의 1%만 위험을 감수하도록하십시오.

  6. 리스크/보너스 설정시스템 자동으로 거래 그룹 당 5:1의 리스크 수익률을 설정합니다. 즉, 정지 목표는 정지 거리의 5 배로 설정되어 전략의 기대 수익률을 크게 향상시킵니다.

  7. 스마트 출전 메커니즘세 가지 출구 조건이 포함되어 있습니다. 중지 손실 (초기 슈퍼 트렌드 수준), 중지 손실 (지상 손실의 5 배) 및 트렌드 반전 상태 출구 손실 (지상 손실, 중지 목표에 도달하거나 보호 지점으로 이동).

전략적 이점

이 전략에는 몇 가지 중요한 장점이 있습니다.

  1. 과학적인 위험 관리: 동적 포지션 조정으로, 각 거래가 총 자본의 1%만 위험을 감수하고, 단일 거래의 하향 위험을 효과적으로 제어한다.

  2. 트렌드 추적 능력 강화분단 거래 메커니즘은 동일한 트렌드에 여러 번 입문하는 시스템을 허용하여 지속적인 강한 트렌드의 수익을 더 충분히 포착 할 수 있습니다.

  3. 최적화된 리스크/이익률1:5:1의 고정 리스크 수익 설정은 성공한 거래의 수익을 손실된 거래의 손실보다 훨씬 높게 만들고, 장기적으로 시스템의 기대 수익을 향상시킬 수 있다.

  4. 유연한 포지션 관리: 현재 시장의 변동성과 계정 규모의 역동성에 따라 입문 포지션을 계산하여 고정 포지션으로 인한 위험 불균형 문제를 피합니다.

  5. 지능형 역관리트렌드가 역전되면, 시스템은 현재의 적자를 바탕으로 지능적으로 출구 방법을 선택합니다. 손실을 받아들이고, 이익을 얻거나, 보금자리로 이동하고, 새로운 방향으로 이동합니다.

  6. 회수 평평 SuperTrend: 회귀 계산을 통해 최종 궤도역을 계산하여 거짓 신호를 줄이고, 추세 판단의 신뢰도를 높였다.

  7. 완전 자동화전략: 모든 매개 변수와 조건이 명확하게 정의되어 있으며, 거래가 완전히 자동화되고, 인적 개입과 정서적 영향을 줄일 수 있습니다.

전략적 위험

이 전략은 훌륭하게 설계되었지만, 몇 가지 잠재적인 위험이 있습니다.

  1. 과도한 저축 위험: 매번 1%의 위험을 감수하지만, 500로 피라미딩을 설정하면 강력한 일방적 추세에서 과도한 포지션을 쌓을 수 있습니다. 피라미딩 매개 변수를 개인의 위험 감수 능력에 따라 낮추는 것이 좋습니다.

  2. 급격한 반전 위험: 시장의 급격한 변동이 있을 때 가격이 스톱로스 수준을 뛰어넘는 경우가 발생할 수 있으며, 실제 손실은 예상보다 1% 이상이 될 수 있습니다. 높은 변동성 시장에서 위험 비율을 줄이거나 추가 변동성 필터를 추가하는 것이 좋습니다.

  3. 매개변수 민감도전략적 성능은 ATR 주기 및 곱셈 변수에 민감하며, 다른 변수 조합은 다른 시장 조건에서 성능에 큰 차이를 보인다. 철저한 변수 최적화 및 재검토를 통해 특정 시장에 적합한 최적의 변수를 찾는 것이 좋습니다.

  4. 트렌드 시장 의존: 트렌드 추적 시스템으로서, 이 전략은 간격적인 변동 시장에서 자주 손실 거래가 발생할 수 있다. 시장 환경 필터를 추가하는 것을 고려하고, 트렌드가 명확한 경우에만 전략을 활성화하십시오.

  5. 자금 관리 위험: 단일 리스크는 1%로 제한되지만, 동시에 활동하는 여러 거래 그룹으로 인해 전체 리스크가 일시적으로 허용되는 수준을 초과할 수 있습니다. 예를 들어, 최대 허용되는 동시에 손실이 5%를 초과하지 않는 계정과 같은 추가적인 전체 리스크 제한을 설정하는 것이 좋습니다.

전략 최적화 방향

전략의 설계와 잠재적인 위험에 따라 다음과 같은 최적화 방향을 고려할 수 있습니다.

  1. 추세 강도 필터 추가: ADX 또는 비슷한 지표와 결합하여, 트렌드가 충분히 강할 때만 거래하여, 흔들리는 시장에서 가짜 신호를 줄여줍니다.adxValue = ta.adx(14)계산하고 설정strongTrend = adxValue > 25추가적인 입시 조건으로

  2. 동적 리스크 수익률: 시장의 변동성에 따라 자동으로 조정하는 리스크 수익률, 낮은 변동성 기간 동안 더 높은 수익률을 사용, 높은 변동성 기간 동안 수익률을 낮추기. 장기 ATR을 현재 ATR의 비율에 대해 계산하여 동적으로 조정할 수 있습니다.

  3. 이윤의 일부를 추가하는 것: 일부 포지션의 배당 수익 시스템을 설계합니다. 예를 들어, 2배의 스톱 라인즈에 도달하면 25%의 수익, 3배에 도달하면 25%의 수익, 50%의 포지션을 유지하면 5배의 목표를 추구합니다. 이것은 전체적인 수익 가능성을 높일 수 있습니다.

  4. 지능형 상장 조건 최적화: 트렌드 신호 이외에, 포지션을 추가하는 추가 조건, 예를 들어 특정 흐름이 이동한 후에만 포지션을 허용하도록 요구하고, 가격이 정리될 때 과도한 포지션을 피한다.

  5. 통합된 다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 확인을 추가하고, 여러 시간 프레임의 트렌드가 일치할 때만 거래하여 입시 품질을 향상시킵니다.

  6. 최대 출구 제한을 추가: 계좌의 총위험점 상한을 설정하고, 상한이 도달하면 (예: 총자금의 5%), 위험이 감소할 때까지 새로운 출입 신호를 일시 중지한다.

  7. 수퍼트렌드 계산을 최적화: 여러 주기 또는 여러 배수를 사용하는 SuperTrend 지표의 조합을 고려하여 투표 시스템을 통해 트렌드 판단의 정확성을 향상시킵니다.

요약하다

다이내믹 펀드 매니지먼트형 SuperTrend 트렌드 추적 5배 리스크 수익 전략은 정확한 트렌드 식별과 과학적인 펀드 관리를 완벽하게 결합한 고도로 완성된 트렌드 추적 시스템이다. 다이내믹 포지션 계산, 분할 거래 관리 및 최적화된 5:1 리스크 수익 설정으로 이 전략은 위험을 통제하면서 트렌드를 포착하는 능력을 최대화한다.

이 전략의 핵심 장점은 매번 입출할 때마다 일정한 비율의 위험만 감수하는 것을 보장하는 지능적인 자금 관리 시스템이며, 강한 추세에서 수익을 증대하기 위해 여러 번 상장하는 것을 허용합니다. 최적화된 슈퍼 트렌드 지표 계산은 추세 판단의 신뢰성을 높이고, 다양 한 출구 메커니즘은 수익을 효과적으로 보호합니다.

잠재적인 위험들, 예를 들어, 과도한 포장과 유동적인 시장에 대한 의존성 같은 것들이 있음에도 불구하고, 이러한 위험들은 유동적인 강도 필터를 추가하고, 리스크 수익률을 동적으로 조정하고, 최대 포장을 제한하는 등의 권장된 최적화 조치들을 통해 효과적으로 관리될 수 있다.

과학적이고 체계적인 트렌드 추적 방법을 찾는 거래자에게는 이 전략은 직접적으로 적용할 수 있고, 추가적인 개인 맞춤화의 기초로 사용할 수 있는 견고한 프레임워크를 제공합니다. 신중한 파라미터 선택과 지속적인 전략 모니터링을 통해 이 시스템은 다양한 시장 환경에서 안정적인 장기적인 성능을 얻을 수 있습니다.

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

//@version=6
strategy("Grouped SuperTrend Strategy 5x – All Signals", overlay=true, initial_capital=100000, default_qty_type=strategy.fixed, default_qty_value=0, pyramiding=500, calc_on_order_fills=true)

// INPUTS
atrPeriod     = input.int(10, title="ATR Period")
atrMultiplier = input.float(3.0, title="ATR Multiplier")

// CALCULATE ATR & BASIC BANDS
atrValue    = ta.atr(atrPeriod)
hl2         = (high + low) / 2
upperBasic  = hl2 + atrMultiplier * atrValue
lowerBasic  = hl2 - atrMultiplier * atrValue

// CALCULATE FINAL BANDS (recursive smoothing)
var float finalUpperBand = na
var float finalLowerBand = na
finalUpperBand := na(finalUpperBand[1]) ? upperBasic : (upperBasic < finalUpperBand[1] or close[1] > finalUpperBand[1] ? upperBasic : finalUpperBand[1])
finalLowerBand := na(finalLowerBand[1]) ? lowerBasic : (lowerBasic > finalLowerBand[1] or close[1] < finalLowerBand[1] ? lowerBasic : finalLowerBand[1])

// DETERMINE TREND
var int trend = 1
trend := nz(trend[1], 1)
if close > finalUpperBand[1]
    trend := 1
else if close < finalLowerBand[1]
    trend := -1
else
    trend := nz(trend[1], 1)
    
// SUPER TREND VALUE: For an uptrend use finalLowerBand, for a downtrend use finalUpperBand.
superTrend = trend == 1 ? finalLowerBand : finalUpperBand

// SIGNALS: A change in trend generates a signal.
buySignal  = (trend == 1 and nz(trend[1], 1) == -1)
sellSignal = (trend == -1 and nz(trend[1], 1) == 1)

// Plot SuperTrend
plot(superTrend, color = trend == 1 ? color.green : color.red, title="SuperTrend")

// POSITION SIZING FUNCTION: Risk 1% of equity per signal based on the stop distance.
calc_qty(stopDistance) =>
    stopDistance > 0 ? math.floor(strategy.equity * 0.01 / stopDistance) : 0

// ─── GROUPING VARIABLES ─────────────────────────────
// When a new group trade is initiated (position goes from flat to non‑zero),
// record the SuperTrend value as the group’s initial stop.
var float groupInitialStop = na
if strategy.position_size == 0
    groupInitialStop := na
if strategy.position_size != 0 and strategy.position_size[1] == 0
    groupInitialStop := superTrend

// Declare groupStopDistance and groupProfitTarget with explicit type.
var float groupStopDistance = na
var float groupProfitTarget = na
if strategy.position_size > 0
    groupStopDistance := strategy.position_avg_price - groupInitialStop
    groupProfitTarget := strategy.position_avg_price + 5 * groupStopDistance
else if strategy.position_size < 0
    groupStopDistance := groupInitialStop - strategy.position_avg_price
    groupProfitTarget := strategy.position_avg_price - 5 * groupStopDistance

// ─── ENTRY LOGIC ─────────────────────────────
// Every SuperTrend signal is taken.
// For same‑direction signals (or when flat), add to the group.
// For reversal signals, exit the existing group per our conditions and then enter the new direction.

// LONG ENTRIES
if buySignal
    // Reversal: if currently short, exit short first.
    if strategy.position_size < 0
        // For shorts, a loss is when close > avg entry.
        if close > strategy.position_avg_price
            strategy.close("Short", comment="Short Reversal Loss Exit")
        // For shorts, profit when price is below the profit target.
        else if close <= groupProfitTarget
            strategy.close("Short", comment="Short Reversal Profit Target Exit")
        else
            // Otherwise, update exit to break-even.
            strategy.exit("Short_BE", from_entry="Short", stop=strategy.position_avg_price, comment="Short BE Trailing")
        // Enter new long trade.
        stopDist = close - superTrend
        qty = calc_qty(stopDist)
        if qty > 0
            strategy.entry("Long", strategy.long, qty=qty, comment="Long Entry on Reversal")
        // Reset group initial stop for new group.
        groupInitialStop := superTrend
    else
        // Flat or already long – add to the long group.
        stopDist = close - superTrend
        qty = calc_qty(stopDist)
        if qty > 0
            strategy.entry("Long", strategy.long, qty=qty, comment="Long Add Entry")

// SHORT ENTRIES
if sellSignal
    if strategy.position_size > 0
        // Reversal: if currently long, exit long first.
        if close < strategy.position_avg_price
            strategy.close("Long", comment="Long Reversal Loss Exit")
        else if close >= groupProfitTarget
            strategy.close("Long", comment="Long Reversal Profit Target Exit")
        else
            strategy.exit("Long_BE", from_entry="Long", stop=strategy.position_avg_price, comment="Long BE Trailing")
        // Enter new short trade.
        stopDist = superTrend - close
        qty = calc_qty(stopDist)
        if qty > 0
            strategy.entry("Short", strategy.short, qty=qty, comment="Short Entry on Reversal")
        groupInitialStop := superTrend
    else
        // Flat or already short – add to the short group.
        stopDist = superTrend - close
        qty = calc_qty(stopDist)
        if qty > 0
            strategy.entry("Short", strategy.short, qty=qty, comment="Short Add Entry")

// ─── EXIT ORDERS ─────────────────────────────
// Set default aggregated exit orders based on the group’s initial stop and profit target.
if strategy.position_size > 0
    strategy.exit("LongExit", from_entry="Long", stop=groupInitialStop, limit=groupProfitTarget)
if strategy.position_size < 0
    strategy.exit("ShortExit", from_entry="Short", stop=groupInitialStop, limit=groupProfitTarget)