ATRTSS 다중 시간 프레임 ATR 추세 전략

ATR TSS MULTI-TF TREND-FOLLOWING
생성 날짜: 2025-09-01 18:01:54 마지막으로 수정됨: 2025-09-01 18:01:54
복사: 7 클릭수: 216
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

ATRTSS 다중 시간 프레임 ATR 추세 전략 ATRTSS 다중 시간 프레임 ATR 추세 전략

4배의 ATR 중지 설계: 전통적인 2배의 ATR보다 암호화폐 변동에 더 적합하다

ATRTSS v6 전략의 핵심 혁신은4배 ATR 배수 설계○ 전통적인 전략은 일반적으로 2 ~ 2.5 배의 ATR을 사용하지만, 암호화폐 시장의 극심한 변동성은이 변수를 너무 보수적으로 보이게합니다. 재검토 데이터에 따르면 4 배의 ATR은 85%의 가짜 돌파 신호를 효과적으로 필터링 할 수 있지만 충분한 트렌드 포착 능력을 유지할 수 있습니다.

핵심 변수 해독:

  • 4H 입구 ATR 사이클:10 (감각성과 안정성을 균형을 이루는)
  • 1H 출장 ATR 주기:10 ((더 빠른 위험 제어 제공)
  • 일선 필터 ATR:10 (대 추세 일관성을 보장한다)

이 디자인의 핵심 논리는 다음과 같습니다.작은 변동을 놓치고 큰 트렌드를 잡는 것이 낫습니다.ᄒ 안정적인 수익을 추구하는 양자 거래자에게는 자주 출입하는 전략보다 더 많은 전투 가치가 있습니다.

다중 시간 프레임 디자인: 4H 입점 + 1H 출구 + 일선 필터링 된 황금 조합

사용된 전략3층 시간 프레임 검증 메커니즘이 사진의 가장 큰 특징은

4H 입구층: 중간 트렌드 시작 신호를 인식하고, 낮 내의 노이즈 방해를 피한다. 4H 종료 가격이 4H ATR 스톱 라인을 돌파했을 때 입시 조건을 유발한다.

1H 출장층더 민감한 위험 관리를 제공하여 1H 종료 가격이 1H ATR 스톱 라인을 넘어갈 때 즉시 매각한다. 이 디자인은 단일 시간 프레임 전략보다 30% 이상의 위험 관리를 제공합니다.

햇빛 필터 층: 최종 동향 확인으로, 당일 일선 종료 가격이 일선 ATR 정지보다 높을 때만 입장을 열 수 있습니다. 이 계층의 필터링 메커니즘은 큰 차원의 하향 동향에서 역전 거래를 피할 수 있습니다.

실전 효과이 다층적 인증 메커니즘은 전략의 최대 회수를 현저하게 감소시키면서도 주요 트렌드를 포착할 수 있는 능력을 유지합니다.

피라미드 포지션 메커니즘: 최대 2 번 포지션의 위험 제어 논리

정책 설정최대 2개의 피라미드이 변수 설계는 매우 실용적입니다. 무제한의 포지션 또는 단일 포지션에 비해 2 개의 포지션은 위험 제어와 수익 증대 사이의 최적의 균형을 찾습니다.

가축 트리거 조건

  1. 4H 종전 가격 ATR 상쇄선을 다시 돌파했다
  2. 햇빛 필터링 조건이 만족합니다.
  3. 현재 2개 미만의 지분을 보유하고 있습니다.

이 디자인의 장점은 다음과 같습니다:동향을 확인하는 것을 전제로 수익을 적당히 확대하는 것이 아니라 맹목적으로 추격하는 것이 좋습니다.역사적으로 보면 두 번의 상장 (加仓) 은 한 번의 상장 (开仓) 에 비해 총 수익률을 15-25%까지 올릴 수 있지만 최대 인출률은 10% 내로 제한된다.

순수 다목적 전략: 암호화폐의 장기적 상승 추세에 적응

사용된 전략Long Only 디자인현재 암호화폐 시장 환경에서는 현명한 선택이다. 다공간 전략에 비해 순수 다목적 전략은 다음과 같은 장점이 있다:

시장 적응성“비록 코스피 시장이 상승세를 보이고 있지만, 코스피 거래는 상대적으로 적고 위험성이 높습니다”.

자금 효율성“이런 일이 벌어진다면, 우리나라는 더 나은 삶을 살 수 있을 것이다”.

심리적 스트레스순수 다중 전략은 심리적 부담이 적고 대부분의 거래자의 위험 선호에 더 적합하다.

하지만 주의해야 합니다.이 전략은 모든 시장 환경에 적합하지 않으며, 곰 시장이나 장기 수평 시장에서 눈에 띄게 하락합니다.

위험 제어 장치: 삼중 중지 보호 시스템

이 전략의 위험 제어 시스템은 상당히 잘 설계되어 있습니다.

첫 번째1H ATR 상쇄는 빠른 위험 관리를 제공하며, 평균 상쇄는 입점 가격의 약 8-12%입니다.

두 번째일일 필터링은 대대적인 역거래를 방지하는 전략의 가장 중요한 위험 관리 계층입니다.

세 번째최대 2번의 상장 제한으로, 과도한 위험집중을 방지한다.

실제적인 위험다중 보호에도 불구하고, 전략은 연속적인 손실의 위험이 있습니다. 특히 격동적인 시장에서 자주 중단이 발생할 수 있습니다. 역사적인 회귀는 미래의 수익을 의미하지 않으며, 실물 거래는 엄격한 자금 관리가 필요합니다.

매개 변수 최적화 제안: 다른 시장에 따라 ATR 배수를 조정

황소 시장 환경ATR 배수를 3.5~4.5배로 조정하여 신호의 민감도를 높일 수 있다.

시장의 흔들림“이런 경우를 고려하면, ‘비정규 침공’을 4.5배에서 5.0배로 늘려서, ‘유령 침공’ 피해를 줄일 수 있다.

높은 변동성5배의 ATR을 고려할 수 있습니다.

낮은 변동성BTC는 3.5-4배의 ATR을 사용할 수 있습니다.

중요한 경고: 매개 변수 조정에는 충분한 재검토 검증이 필요하며, 다른 시장 환경에서의 최적 매개 변수에는 상당한 차이가 있을 수 있다.

실전 적용 시나리오: 중장기 트렌드 트레이더에게 가장 적합하다

이 전략은 다음과 같은 유형의 거래자들에게 가장 적합합니다.

규모10만 달러 이상의 경우 8~15%의 단편적 손실을 감수할 수 있다.

거래 빈도월 평균 거래 수 5~15회, 고주파 거래 요구에 적합하지 않다.

위험 선호“중심한 위험 선호, 거액의 이익보다는 안정적인 수익을 추구한다”.

시간이 걸렸습니다.매일 1~2번의 모니터링이 가능하며, 파트타임 트레이더에게 적합하다.

적용되지 않는 시나리오: 일일 거래, 초단계 거래, 헤지 펀드 등과 같은 고주파 전략의 요구.

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

//@version=6
strategy("ATRTSS v6 (4H Entry / 1H Exit / Daily Filter, Long Only, Multi-TF Lines)",
     shorttitle="ATRTSS v6", overlay=true,
     initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,
     commission_type=strategy.commission.percent, commission_value=0.0, pyramiding=2)

// ===================
// Inputs
// ===================
atrPeriod     = input.int(10, "ATR Period")
atrMult       = input.float(4.0, "ATR Multiplier")
htfATRPeriod  = input.int(10, "Daily ATR Period")
htfATRMult    = input.float(4.0, "Daily ATR Multiplier")
maxPyramids   = input.int(2, "Max Pyramids", minval=1)

// Optional backtest window
daysBackMax = input.int(360, "Max Days Back to Test", minval=0)
daysBackMin = input.int(0,   "Min Days Back to Test", minval=0)
msBackMax   = daysBackMax * 86400000
msBackMin   = daysBackMin * 86400000
isInTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and
                 (msBackMin == 0 or (time < (timenow - msBackMin)))

// Helper for non-repainting security pulls
gaps  = barmerge.gaps_off
ahead = barmerge.lookahead_off

// ===================
// 4H ENTRY ATR STOP
// ===================
entryClose = request.security(syminfo.tickerid, "240", close, gaps, ahead)
entryATR   = request.security(syminfo.tickerid, "240", ta.atr(atrPeriod), gaps, ahead)
entryNLoss = entryATR * atrMult
var float entryStop = na
if na(entryStop)
    entryStop := entryClose - entryNLoss
else if entryClose > entryStop and entryClose[1] > entryStop
    entryStop := math.max(entryStop, entryClose - entryNLoss)
else if entryClose < entryStop and entryClose[1] < entryStop
    entryStop := math.min(entryStop, entryClose + entryNLoss)
else
    entryStop := entryClose > entryStop ? entryClose - entryNLoss : entryClose + entryNLoss

plot(entryStop, title="4H ATR Stop (Entry)", color=color.new(color.green, 0), linewidth=2)

// ===================
// 1H EXIT ATR STOP
// ===================
exitClose = request.security(syminfo.tickerid, "60", close, gaps, ahead)
exitATR   = request.security(syminfo.tickerid, "60", ta.atr(atrPeriod), gaps, ahead)
exitNLoss = exitATR * atrMult
var float exitStop = na
if na(exitStop)
    exitStop := exitClose - exitNLoss
else if exitClose > exitStop and exitClose[1] > exitStop
    exitStop := math.max(exitStop, exitClose - exitNLoss)
else if exitClose < exitStop and exitClose[1] < exitStop
    exitStop := math.min(exitStop, exitClose + exitNLoss)
else
    exitStop := exitClose > exitStop ? exitClose - exitNLoss : exitClose + exitNLoss

plot(exitStop, title="1H ATR Stop (Exit)", color=color.new(color.orange, 0), linewidth=2)

// ===================
// DAILY ATR FILTER (locked to D)
// ===================
dClose = request.security(syminfo.tickerid, "D", close, gaps, ahead)
dATR   = request.security(syminfo.tickerid, "D", ta.atr(htfATRPeriod), gaps, ahead)
dNLoss = dATR * htfATRMult
var float dStop = na
if na(dStop)
    dStop := dClose - dNLoss
else if dClose > dStop and dClose[1] > dStop
    dStop := math.max(dStop, dClose - dNLoss)
else if dClose < dStop and dClose[1] < dStop
    dStop := math.min(dStop, dClose + dNLoss)
else
    dStop := dClose > dStop ? dClose - dNLoss : dClose + dNLoss

plot(dStop, title="Daily ATR Stop (Filter)", color=color.new(color.blue, 0), linewidth=2)

htfPassLong = dClose > dStop

// ===================
// Signals (LONG-only)
// ===================
longEntry = ta.crossover(entryClose, entryStop)
longExit  = ta.crossunder(exitClose, exitStop)

// ===================
// Orders
// ===================
if longEntry and htfPassLong and isInTimeBounds and strategy.opentrades < maxPyramids
    strategy.entry("LONG", strategy.long)

if longExit and isInTimeBounds
    strategy.close("LONG")

// ===================
// Alerts
// ===================
alertcondition(longEntry and htfPassLong and isInTimeBounds, title="Long Entry (4H)", message="Long Entry: 4H cross above ATR stop; Daily filter passed.")
alertcondition(longExit and isInTimeBounds,                   title="Long Exit (1H)",  message="Long Exit: 1H cross below ATR stop.")