동적 ATR 그리드 되돌림 포착 양적 거래 전략

ATR RSI 高频交易 网格交易 回撤策略 止盈追踪 动态波动率过滤
생성 날짜: 2025-04-07 13:47:24 마지막으로 수정됨: 2025-04-07 13:47:24
복사: 0 클릭수: 712
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

동적 ATR 그리드 되돌림 포착 양적 거래 전략 동적 ATR 그리드 되돌림 포착 양적 거래 전략

개요

동적 ATR 격자 회수 캡처 양적 거래 전략은 단기 거래자를 위해 설계된 고주파 거래 전략으로 시장 회수 기회를 포착하는 것을 목적으로 한다. 이 전략은 ATR ((평균 실제 파도) 에 기반한 동적 격자 시스템을 사용하여 최적의 진입 지점을 정의하여 정확한 거래 실행을 보장한다. 신호 정확성을 높이고 오류 입구를 줄이기 위해 변동율 필터링과 RSI ((상대적으로 약한 지표) 에 기반한 확인 메커니즘을 통합한다. 이 전략은 단선 거래에 특화되어 있으며 현재 시장 조건에 따라 동적으로 거래 수준을 조정할 수 있다. 격자 시스템은 회수 기회를 포착하는 데 도움을 주며, 사전 정의된 이익 목표 및 추적 중지 장치로 거래를 엄격하게 관리한다.

전략 원칙

이 전략의 핵심 원칙은 ATR 계산을 기반으로 한 동적 격자 시스템과 RSI 필터를 결합한 응용이다. 전략은 먼저 10주기 ATR 값을 계산하고 그레드 인자 ((설정 0.2) 를 사용하여 15개의 격자 가격을 만듭니다. 이러한 격자 가격은 거래 의사 결정의 기본 틀을 형성한다.

거래 논리는 크게 4가지로 나니다.

  1. 그리드 계산: 현재 종식 가격과 ATR 값과 격자 인수의 곱셈을 사용하여 15개의 격자 가격을 동적으로 생성합니다. 이 가격은 시장의 변동에 따라 조정됩니다.
  2. 변동율 필터: 가격 변동과 가격의 비율을 계산하여, 시장의 변동성이 충분히 큰 경우에만 거래를 수행하는 것을 보장하고, 낮은 변동성 영역에서 거래를 피하십시오.
  3. RSI 확인: 14주기 RSI를 추가 거래 확인 조건으로 사용한다. 멀티 헤드 거래는 RSI가 30보다 낮아야 한다. (오버 소매), 공백 거래는 RSI가 70보다 높아야 한다. (오버 소매).
  4. 입력 논리다단 입시 조건은 가격이 첫 번째 격자 수준보다 낮고, 시장의 변동성은 “거래되지 않는 지역” 설정 값보다 높으며, RSI는 30보다 낮습니다. 공허 입시 조건은 가격이 마지막 격자 수준보다 높고, 변동성은 조건을 충족하며, RSI는 70보다 높습니다.

거래가 트리거되면, 전략은 수익 목표와 ATR 기반의 추적 스톱로드를 설정한다. 수익 목표가 0.2%로 기본 설정되어 있고, 추적 스톱로드는 ATR 값을 편향 이동으로 사용하여 시장의 변동성에 적응하여 이미 수익을 보호한다.

전략적 이점

이 전략에 대한 코드의 심층적인 분석을 통해 다음과 같은 중요한 장점을 요약할 수 있습니다.

  1. 역동적인 적응력: 전략은 ATR을 사용하여 격자 수준을 계산하여 현재 시장의 변동적 동력에 따라 조정할 수 있습니다. 이것은 높은 변동의 기간 동안 격자 간격이 넓어지고 낮은 변동의 기간 동안 격자 간격이 좁아져서 전략이 다른 시장 환경에 적응 할 수 있음을 의미합니다.

  2. 다중 필터링 장치이 전략은 가격 격자, 변동률 필터링 및 RSI 지표를 입시 조건으로 결합합니다. 이러한 다층 필터링 메커니즘은 가짜 신호를 크게 줄이고 거래 품질을 향상시킵니다.

  3. 정확한 입구: 격자 시스템은 입시 수준을 미리 정의하여, 바람직하지 않은 가격 수준에서 거래를 쫓는 상황을 피하고, 실행 규율을 강화합니다.

  4. 리스크 관리 통합이 전략은 수익 목표를 내장하고, 손실을 추적하는 장치를 갖추고 있으며, 각 거래에 대해 명확한 위험 관리 규칙이 있는지 확인합니다.

  5. 과매매, 잡기이 전략은 RSI 지표와 결합하여 가격 초과 또는 초과 지역에서 거래 할 수 있으며 역동 거래의 성공률을 증가시킵니다.

  6. 시각 보조: 코드에는 격자 수준과 거래 입시 표기의 시각화가 포함되어 있으며, 거래자가 전략 작동 상황을 직관적으로 관찰할 수 있도록 해, 분석 및 전략 조정을 쉽게 할 수 있습니다.

전략적 위험

이 전략은 훌륭하게 설계되었지만 몇 가지 위험 요소가 있습니다.

  1. 자주 거래하는 위험: 고주파수 전략으로서, 많은 거래가 발생할 수 있으며, 특히 수수료가 높은 시장에서 높은 거래 비용을 초래할 수 있다. 해결책은 거래 주파수를 줄이거나 단위 수익을 높이기 위해 격자 인자 및 수익 목표를 조정하는 것이다.

  2. 동향시장의 역동적 위험이 전략은 본질적으로 회수 캡처 전략이며, 강한 트렌드 시장에서 반향 거래가 자주 발생하여 연속 손실을 초래할 수 있습니다. 해결책은 트렌드 필터를 추가하여 강한 트렌드를 식별 할 때 반향 거래를 중지하는 것입니다.

  3. 매개변수 민감도: 전략 효과는 ATR 길이, 그리드 인자 및 수익 목표와 같은 매개 변수 설정에 크게 의존합니다. 다른 시장과 시간 주기에는 다른 매개 변수 조합이 필요할 수 있습니다.

  4. 무거래 구역 설정의 민감성: 너무 높은 거래없는 구역 값은 좋은 기회를 놓치게 할 수 있으며, 너무 낮은 값은 낮은 변동성 환경에서 바람직하지 않은 거래를 수행 할 수 있습니다. 특정 시장의 전형적인 변동성 특성에 따라이 파라미터를 조정해야합니다.

  5. 손해 방지 장치의 결함: 전략에는 추적 스톱이 포함되어 있지만, 하드 스톱 설정이 부족하여 극한 시장 조건에서 큰 손실을 입을 수 있습니다. 고정 점수 또는 퍼센트에 기반한 하드 스톱 제한을 추가하는 것이 좋습니다.

전략 최적화 방향

코드 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 트렌드 필터를 추가합니다.중·장기 경향 지표를 통합하여 강한 추세 시장에서 역전 거래를 피합니다. 이것은 회수 전략이 주류를 따르는 데 더 잘 작동하기 때문에 손실 거래의 수를 크게 줄일 수 있습니다.

  2. 동적 수익 목표: 현재 수익률 목표는 0.2%로 고정되어 있으며, ATR 기반의 동적 값으로 변경될 수 있으며, 이는 높은 변동성이있는 기간에 더 높은 목표를 설정하고 낮은 변동성이있는 기간에 더 보수적인 목표를 설정할 수 있습니다. 이것은 다양한 시장 조건에서 전략의 적응성을 향상시킬 것입니다.

  3. 시간 필터거래 시간 창 필터를 추가하여, 변동성이 비정상적인 시장 개시, 종료 시간 또는 중요한 경제 데이터가 발표되는 동안 거래를 피하십시오. 이것은 단기 비정상적인 변동으로 인한 잘못된 신호를 줄일 수 있습니다.

  4. RSI 조건: 현재 RSI는 고정된 3070 값을 사용한다. RSI의 평균과 표준 차이를 계산하는 것과 같은 동적 값을 사용하는 것을 고려할 수 있다. RSI가 평균에서 특정 표준 차이를 벗어났을 때 신호를 유발한다. 이 방법은 다른 시장의 RSI 특성에 더 잘 적응할 수 있다.

  5. 거래량 확인이 증가입시 조건에 거래량 확인을 추가하여 거래량이 눈에 띄는 경우에만 거래가 수행되도록합니다. 이는 신호 품질을 향상시키고 시장 소음으로 인한 잘못된 거래를 줄일 수 있습니다.

  6. 그리드 밀도를 최적화: 현재 전략은 15개의 고정된 격자 지점을 사용하며, 시장의 변동성 동성에 따라 격자 수와 밀도를 조정하는 것을 고려할 수 있다. 높은 변동성 시장에서는 격자 밀도를 증가시킬 수 있고, 낮은 변동성 시장에서는 격자 지점을 줄여 전략의 유연성을 높일 수 있다.

요약하다

동적 ATR 격자 회수 캡처 양적 거래 전략은 ATR 동적 격자 및 RSI 필터링을 결합한 고주파 거래 시스템으로, 단기 시장 회수를 캡처하기 위해 특별히 설계되었다. 그것은 시장의 변동성에 기반한 동적 격자 시스템을 사용하여 기술적으로 합리적인 가격 수준에서 거래를 보장하면서 RSI 필터링과 변동률 검사를 통해 신호 품질을 향상시킵니다.

이 전략의 주요 장점은 다양한 시장 환경에 동적으로 적응할 수 있는 능력과 엄격한 거래 규칙에 있다. 그러나 강한 트렌드 시장에서는 도전을 받을 수 있다. 트렌드 필터를 추가하고, 격자 밀도를 최적화하고, 동적인 수익 목표를 구현하는 등의 조치를 통해 전략의 거칠성과 성능을 더욱 강화할 수 있다.

이 전략은 경험있는 짧은 라인 거래자에게 가격 회전을 포착하는 체계화된 방법을 제공하며, 특히 변동성이 높은 시장 환경에 적합합니다. 그러나, 모든 거래 전략과 마찬가지로 실제 적용 전에 충분한 회전과 변수 최적화가 이루어져야하며, 적절한 자금 관리 규칙과 함께 사용해야합니다.

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

//@version=6
strategy("Smart Grid Scalping (Pullback) Strategy[BullByte]", overlay=true, shorttitle="SGS Scalping")

// ===== Input Parameters =====
atrLength    = input(10, title="ATR Length")             // ATR period for volatility measurement
gridFactor   = input(0.2, title="Grid Factor")             // Multiplier to determine grid spacing based on ATR
profitTarget = input(0.002, title="Profit Target (0.1% = 0.001)")
noTradeZone  = input(0.005, title="No Trade Zone (%)")     // Defines a price range where trades are avoided

// ===== ATR Calculation =====
atrValue = ta.atr(atrLength)

// ===== Grid Level Calculation =====
gridLevels = array.new_float(15)  // Create an array to hold 15 grid levels
for i = 0 to 14
    array.set(gridLevels, i, close + (i + 1) * atrValue * gridFactor)


// ===== Trading Logic =====
// Additional RSI filter for extra confirmation
rsiValue = ta.rsi(close, 14)

// Conditions for entry:
// - Long: Price is below the first grid level, volatility is above the no trade zone, and RSI indicates oversold (<30).
// - Short: Price is above the last grid level, volatility is above the no trade zone, and RSI indicates overbought (>70).
longCondition  = close < array.get(gridLevels, 0) and (high - low) / low > noTradeZone and rsiValue < 30
shortCondition = close > array.get(gridLevels, 14) and (high - low) / high > noTradeZone and rsiValue > 70

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// ===== Take Profit with Trailing Stop Logic =====
if (strategy.position_size > 0)
    strategy.exit("Take Profit", "Long", 
                  limit=close * (1 + profitTarget), 
                  trail_price=close * (1 + profitTarget * 0.5), 
                  trail_offset=atrValue)

if (strategy.position_size < 0)
    strategy.exit("Take Profit", "Short", 
                  limit=close * (1 - profitTarget), 
                  trail_price=close * (1 - profitTarget * 0.5), 
                  trail_offset=atrValue)

// ===== Plot Trade Entry Labels =====
// Plot labels only on the bar where the position is initiated
longEntry  = strategy.position_size > 0 and (strategy.position_size[1] <= 0)
shortEntry = strategy.position_size < 0 and (strategy.position_size[1] >= 0)

plotshape(longEntry, location=location.belowbar, 
     color=color.new(color.green, 0), style=shape.labelup, text="LONG", textcolor=color.white, size=size.normal)

plotshape(shortEntry, location=location.abovebar, 
     color=color.new(color.red, 0), style=shape.labeldown, text="SHORT", textcolor=color.white, size=size.normal)