리소스 로딩... 로딩...

스토카스틱 오시레이터 기반의 변동성 범위 거래 전략

저자:차오장, 날짜: 2024-06-17 14:52:10
태그:ATR

img

전반적인 설명

이 전략은 스토카스틱 오시레이터를 활용하여 과잉 구매 및 과잉 판매 시장을 파악하고, 사전 정의된 위험 및 보상 매개 변수로 거래를 시작하여 변동적인 거래 범위 내에서 가격 변동을 활용합니다. 이 전략의 주된 아이디어는 거래 범위의 낮은 끝에 구매하고 높은 끝에 판매하는 것입니다.

전략 논리

  1. 스토카스틱 오시레이터가 과잉 판매 수준을 넘어설 때 (20), 전략은 긴 포지션에 진입합니다. 과잉 구매 수준을 넘어설 때 (80), 전략은 짧은 포지션에 진입합니다.
  2. 스톱 로즈와 트레이프 레벨은 평균 실제 범위 (ATR) 의 2배를 기준으로 설정되며 각 거래는 계정 자본의 1%를 위험에 빠뜨립니다.
  3. 과잉 거래를 방지하기 위해 전략은 각 거래 사이에 최소 20 바를 적용하여 냉각 기간을 허용하고 윙사우를 피합니다.

전략적 장점

  1. 이 전략은 변동적인 거래 범위 내에서 가격 변동을 포착하고 낮은 지점에서 구매하고 높은 지점에서 판매하여 잠재적으로 이익을 얻을 수 있습니다.
  2. ATR에 기반한 스톱 로스 및 영업 취득 수준과 거래당 1%의 고정 리스크를 포함한 엄격한 리스크 관리 조치를 취하여 마감 및 단일 거래 손실을 제어하는 데 도움이됩니다.
  3. 거래 사이 최소 간격 (20 바) 을 설정함으로써 전략은 빈번한 거래 및 시장 소음에 속이는 것을 피합니다.
  4. 전략 논리는 명확하고 이해하기 쉽고 구현하기 쉽고 다양한 시장 환경에서 적용하기에 적합합니다.

전략 위험

  1. 전략의 성공은 거래 범위의 올바른 식별에 크게 달려 있습니다. 범위가 잘못 식별되면 거래 손실로 이어질 수 있습니다.
  2. 만약 시장이 거래 범위를 벗어나 트렌드를 형성한다면, 전략은 트렌드를 따르는 기회를 놓칠 수 있습니다.
  3. 기존의 위험 관리 조치에도 불구하고 극심한 시장 조건에서 전략은 여전히 예상보다 더 큰 손실을 겪을 수 있습니다.
  4. 전략 매개 변수 (예를 들어, 과잉 구매/ 과잉 판매 수준, ATR 배수) 는 다른 시장 조건에 최적화되어야 합니다. 부적절한 매개 변수는 저성능으로 이어질 수 있습니다.

전략 최적화 방향

  1. 다른 기술적 지표 (예를 들어, MACD, RSI) 를 결합하여 거래 신호를 확인하고 신호 신뢰성을 향상시키는 것을 고려하십시오.
  2. 동적인 스톱 로스 및 취리 메커니즘을 도입합니다. 예를 들어 가격이 유리한 방향으로 움직일 때 스톱 로스 수준을 조정하여 잠재적으로 더 높은 수익을 얻을 수 있습니다.
  3. 거래 범위 식별을 위해 정확성을 향상시키기 위해 기계 학습 알고리즘과 같은 더 고급 기술을 사용하도록 탐구하십시오.
  4. 트렌드 시장에서는 트렌드 필터를 도입하여 트렌드에 반대하는 거래를 피하는 것을 고려하십시오.

요약

스토카스틱 오시레이터 (Stochastic Oscillator) 를 기반으로 하는 변동성 범위 거래 전략은 미리 정의된 거래 범위 내에서 오시레이터의 과잉 구매 및 과잉 판매 신호를 활용하려고 시도합니다. 전략은 엄격한 위험 관리 및 거래 간격을 통해 위험을 제어합니다. 전략에는 특정 장점이 있지만 성공은 거래 범위를 올바르게 식별하는 데에 크게 달려 있습니다. 미래의 최적화 방향은 다른 기술적 지표들을 결합하고, 동적 스톱 로스 및 영리 레벨을 도입하고, 더 고급한 범위 식별 기술을 사용하여 트렌드 필터를 추가하는 것을 포함합니다. 실무에서 전략을 적용 할 때 개인 선호도와 위험 관용에 따라 매개 변수 및 위험 관리 규칙을 조정하는 것을 확인하십시오.


/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Range Trading with Stochastic", overlay=true)

// Input Parameters
overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100)
stochLength = input.int(14, title="Stochastic Length", minval=1)
riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01)
barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1)

// Calculate Stochastic Oscillator
k = ta.sma(ta.stoch(close, high, low, stochLength), 3)
d = ta.sma(k, 3)

// Variables to Track Time Since Last Trade
var lastTradeBar = 0
barsSinceLastTrade = bar_index - lastTradeBar

// Risk Management
atr = ta.atr(14)
stopLoss = 2 * atr
takeProfit = 2 * atr
riskAmount = strategy.equity * riskPerTrade / 100
positionSize = 1

// Entry Conditions
longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades

// Entry/Exit Orders
if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
    lastTradeBar := bar_index // Update last trade bar
if shortCondition
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
    lastTradeBar := bar_index // Update last trade bar

// Plot Stochastic
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
hline(overboughtLevel, color=color.red, title="Overbought")
hline(oversoldLevel, color=color.green, title="Oversold")



관련

더 많은