이 전략은 두 가지 기하급수적 이동 평균 (EMA) 과 스토카스틱 오시레이터를 결합한 양적 거래 시스템이다. 이는 20 기간 및 50 기간 EMA를 사용하여 과소 구매 및 과소 판매 구역에서 거래 기회를 식별하는 동시에 스토카스틱 오시레이터를 사용하여 트렌드와 동력의 완벽한 혼합을 달성합니다. 전략은 고정 스톱 손실 및 이익 목표를 포함하여 엄격한 위험 관리 조치를 구현합니다.
핵심 논리는 트렌드 식별, 엔트리 타이밍 및 리스크 제어라는 세 가지 구성 요소로 구성됩니다. 트렌드 식별은 주로 빠른 EMA (20 기간) 및 느린 EMA (50 기간) 의 상대적 위치에 의존하며, 빠른 라인이 느린 라인 위에있을 때 상승 추세가 확인되며 그 반대의 경우입니다. 엔트리 신호는 스토카스틱 오시레터 크로스오버에 의해 확인되며, 과잉 구매 및 과잉 판매 구역에서 높은 확률 트레이드를 찾습니다. 리스크 제어에는 고정 비율의 스톱 로스와 2: 1 수익 목표가 사용되며 각 거래에 대한 명확한 리스크 리워드 비율을 보장합니다.
이 전략은 트렌드 및 모멘텀 지표를 결합하여 완전한 거래 시스템을 구축합니다. 그것의 핵심 강점은 명확한 논리적 틀과 엄격한 위험 통제에 있습니다. 실제 적용은 특정 시장 조건에 따라 매개 변수 최적화를 필요로합니다. 지속적인 개선 및 최적화를 통해 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 수 있습니다.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("EMA + Stochastic Strategy", overlay=true) // Inputs for EMA emaShortLength = input.int(20, title="Short EMA Length") emaLongLength = input.int(50, title="Long EMA Length") // Inputs for Stochastic stochK = input.int(14, title="Stochastic %K Length") stochD = input.int(3, title="Stochastic %D Smoothing") stochOverbought = input.int(85, title="Stochastic Overbought Level") stochOversold = input.int(15, title="Stochastic Oversold Level") // Inputs for Risk Management riskRewardRatio = input.float(2.0, title="Risk-Reward Ratio") stopLossPercent = input.float(1.0, title="Stop Loss (%)") // EMA Calculation emaShort = ta.ema(close, emaShortLength) emaLong = ta.ema(close, emaLongLength) // Stochastic Calculation k = ta.stoch(high, low, close, stochK) d = ta.sma(k, stochD) // Trend Condition isUptrend = emaShort > emaLong isDowntrend = emaShort < emaLong // Stochastic Signals stochBuyCrossover = ta.crossover(k, d) stochBuySignal = k < stochOversold and stochBuyCrossover stochSellCrossunder = ta.crossunder(k, d) stochSellSignal = k > stochOverbought and stochSellCrossunder // Entry Signals buySignal = isUptrend and stochBuySignal sellSignal = isDowntrend and stochSellSignal // Strategy Execution if buySignal strategy.entry("Buy", strategy.long) stopLoss = close * (1 - stopLossPercent / 100) takeProfit = close * (1 + stopLossPercent * riskRewardRatio / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLoss, limit=takeProfit) if sellSignal strategy.entry("Sell", strategy.short) stopLoss = close * (1 + stopLossPercent / 100) takeProfit = close * (1 - stopLossPercent * riskRewardRatio / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLoss, limit=takeProfit) // Plotting plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA")