
이것은 이동 평균의 교차, 공급 및 수요 영역의 식별 및 동적 중지 손실을 결합한 통합 거래 전략이다. 이 전략은 단기 및 장기 이동 평균의 교차를 통해 거래 방향을 결정하며, 공급 및 수요 영역을 중요한 가격 지원 및 저항 지점으로 사용하고, 백분율 중지 손실과 함께 위험을 관리한다. 전략의 핵심은 특정 공급 및 수요 영역 근처에서만 입장을 열어 거래의 승률을 높이는 것이다.
전략은 9주기와 21주기의 간단한 이동 평균 (SMA) 을 사용하여 트렌드 방향을 판단한다. 가격이 수요 지역 (지원점) 1% 내에 있고, 단기 평균이 장기 평균을 상대로 넘어갈 때, 시스템은 여러 신호를 발산한다. 가격이 공급 지역 (저항점) 1% 내에 있고, 단기 평균이 장기 평균을 상대로 넘어갈 때, 시스템은 빈 신호를 발산한다. 공급 지역의 식별은 50주기 내의 눈에 띄는 높고 낮은 점을 기반으로 하며, 그 지점은 적어도 2개의 뿌리 확인 그래프를 갖도록 요구한다. 시스템은 진입 가격에 따라 자동으로 역동적인 손실을 설정한다.
이것은 고전적인 기술적 분석 방법을 현대적 위험 관리 개념과 결합한 전략 시스템이다. 전략은 중요한 가격 지역 근처에서 거래하고 이동 평균 교차 신호와 결합하여 비교적 신뢰할 수있는 거래 프레임 워크를 제공합니다. 동적 상쇄 스톱의 디자인은 다양한 시장 환경에 적응하는 데 도움이되지만, 전략의 실제 적용은 특정 시장 특성에 따라 최적화가 필요합니다.
/*backtest
start: 2024-12-01 00:00:00
end: 2025-02-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("MA Crossover with Demand/Supply Zones + Stop Loss/Take Profit", overlay=true)
// Input parameters for Moving Averages
shortLength = input.int(9, title="Short MA Length", minval=1)
longLength = input.int(21, title="Long MA Length", minval=1)
// Input parameters for Demand/Supply Zones
zoneLookback = input.int(50, title="Zone Lookback Period", minval=10)
zoneStrength = input.int(2, title="Zone Strength (Candles)", minval=1)
// Input parameters for Stop Loss and Take Profit
stopLossPerc = input.float(1.0, title="Stop Loss (%)", minval=0.1) / 100
takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1) / 100
// Calculate moving averages
shortMA = ta.sma(close, shortLength)
longMA = ta.sma(close, longLength)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Identify Demand and Supply Zones
var float demandZone = na
var float supplyZone = na
// Detect Demand Zones (Price makes a significant low and bounces up)
if (ta.lowest(low, zoneLookback) == low[zoneStrength] and close[zoneStrength] > open[zoneStrength])
demandZone := low[zoneStrength]
// Detect Supply Zones (Price makes a significant high and drops down)
if (ta.highest(high, zoneLookback) == high[zoneStrength] and close[zoneStrength] < open[zoneStrength])
supplyZone := high[zoneStrength]
// Draw Demand and Supply Zones using lines
var line demandLine = na
var line supplyLine = na
// Trade Logic: Only open trades near Demand/Supply Zones
isNearDemand = demandZone > 0 and close <= demandZone * 1.01 // Within 1% of demand zone
isNearSupply = supplyZone > 0 and close >= supplyZone * 0.99 // Within 1% of supply zone
// Calculate Stop Loss and Take Profit levels
stopLossLevel = strategy.position_avg_price * (1 - stopLossPerc) // Stop loss for long positions
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPerc) // Take profit for long positions
stopLossLevelShort = strategy.position_avg_price * (1 + stopLossPerc) // Stop loss for short positions
takeProfitLevelShort = strategy.position_avg_price * (1 - takeProfitPerc) // Take profit for short positions
// Generate buy/sell signals based on MA crossover and zones
if (ta.crossover(shortMA, longMA) and isNearDemand)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLossLevel, limit=takeProfitLevel)
if (ta.crossunder(shortMA, longMA) and isNearSupply)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLossLevelShort, limit=takeProfitLevelShort)
// Optional: Plot buy/sell signals on the chart
plotshape(series=ta.crossover(shortMA, longMA) and isNearDemand, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=ta.crossunder(shortMA, longMA) and isNearSupply, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")