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