점진적 진입 전략으로 평균 반전

저자:차오장, 날짜: 2024-01-29 15:47:24
태그:

img

전반적인 설명

헤저랩스가 설계한 계층적 엔트리 전략의 평균 반전은 금융 시장에서 평균 반전 기법에 초점을 맞춘 고급 거래 전략 스크립트입니다. 이동 평균에 대한 가격 움직임에 기초한 계층적 엔트리에 중점을 둔 체계적인 접근 방식을 선호하는 거래자에게 적합합니다.

전략 논리

이 전략의 중심은 모든 입출출이 회전하는 간단한 이동 평균 (SMA) 이다. 거래자는 다른 거래 스타일과 시간 틀에 맞게 MA 길이를 사용자 정의 할 수 있습니다.

이 전략의 독특한 특징은 인크리멘탈 엔트리 시스템이다. 가격이 특정 비율로 MA에서 벗어날 때 첫 번째 포지션을 시작합니다. 거래자가 정의하는 바와 같이 가격이 MA에서 더 멀어짐에 따라 추가 단계로 추가 엔트리가 이루어집니다. 이것은 증가하는 변동성을 활용하는 것을 목표로합니다.

이 전략은 시장의 변화 조건에 적응하기 위해 가격이 MA보다 낮을 때 길고 MA보다 높을 때 짧게 입점함으로써 지위를 지능적으로 관리합니다.

출구는 가격이 MA에 닿을 때 결정되며 최적화 된 결과를 위해 잠재적 인 반전 지점에서 포지션을 닫는 것이 목표입니다.

calc_on_every_tick가 활성화되면 전략은 빠른 반응을 보장하기 위해 지속적으로 시장을 평가합니다.

이점 분석

증가식 입시로 평균 회귀 전략은 다음과 같은 주요 장점을 가지고 있습니다.

  1. 감정적 간섭을 줄이기 위해 매우 체계화되었습니다.
  2. 급격한 진입은 높은 변동성 동안 더 큰 이익을 얻습니다.
  3. MA 기간과 같은 사용자 정의 가능한 매개 변수는 다른 도구에 적합합니다.
  4. 지능형 위치 관리 자동으로 긴 / 짧은 조정
  5. 포지션 폐쇄에 최적의 출구 타겟 전환

위험 분석

고려해야 할 위험은 다음과 같습니다.

  1. 기술 지표에 대한 신뢰에서 나오는 문제점
  2. 추세 불일치로 인해 연장 유출
  3. 부적절한 MA 설정으로 인해 빈번한 중단
  4. 추가 입금으로 인해 포지션 크기가 커집니다.

출구 최적화, 트렌드 필터 추가, 위 위험을 완화하기 위해 위치 크기를 줄일 수 있습니다.

더 나은 기회

이 전략은 다음과 같이 강화될 수 있습니다.

  1. 불리한 거래를 피하기 위해 트렌드 필터를 추가합니다.
  2. 변동성으로 진입 증가율을 최적화
  3. 수익을 확보하기 위해 트레일링 스톱을 포함
  4. 다른 이동 평균을 실험하고
  5. 거짓 신호를 줄이기 위한 필터 사용

결론

증분 입구와 함께 평균 반전 전략은 체계화된 증수 포지션 사이징 접근 방식을 사용하여 평균 반전 기술에 초점을 맞추고 있습니다. 사용자 정의 설정으로 다른 거래 도구에 적응 할 수 있습니다. 시장 범위에서 잘 수행되며 단기 체계적인 거래자에게 적합합니다.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)

// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)

// Calculating Moving Average
ma = ta.sma(close, maLength)

// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)

var float lastBuyPrice = na
var float lastSellPrice = na

// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
    diff = math.abs(price1 - price2) / price2 * 100
    diff

// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
    pricePercentDiff(price, ma) >= initialPercent

// Enhanced Entry Logic for Buy and Sell
if (low < ma)
    if (na(lastBuyPrice))
        if (initialEntryCondition(low, ma, initialPercent))
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low
    else
        if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low

if (high > ma)
    if (na(lastSellPrice))
        if (initialEntryCondition(high, ma, initialPercent))
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high
    else
        if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high

// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
    strategy.close("Buy")
    lastBuyPrice := na

if (close <= ma and strategy.position_size < 0)
    strategy.close("Sell")
    lastSellPrice := na

// Reset last order price when position is closed
if (strategy.position_size == 0)
    lastBuyPrice := na
    lastSellPrice := na


더 많은