
이 전략은 주로 전날 거래의 최고 가격, 최저 가격 및 종결 가격을 그날의 지원 및 저항 지점으로 사용하며, 저항 지점을 돌파 할 때 더 많이 하고, 지원 지점을 다시 테스트 할 때 공백을 낸다. 전형적인 돌파 전략이다.
코드는 먼저 지원 저항 지점을 계산하는 함수를 정의합니다. 이 함수는 전 거래일 최고 가격, 최저 가격 및 종식 가격을 추출하여 당일 지원 저항 지점으로 사용합니다.
이 함수를 호출하면 3가지의 값이 나오고, 그림이 나타난다.
재측정 논리에서는, 만약 종결 가격이 전날 최저 가격보다 낮아지고 현재 가격이 그 최저 가격보다 높으면 브레이크를 구성한다. 더 많이 한다. 만약 종결 가격이 전날 최고 가격보다 높고 현재 가격이 그 최고 가격보다 낮은 것이 브레이크를 구성한다.
이런 획기적인 모델로 트렌드를 판단하고 거래 신호를 생성할 수 있다.
대책:
이 전략은 전체적으로 전형적인 브레이크 전략으로, 단순하고 직관적이며, 전 거래일 데이터를 통해 당일 지지 저항을 구성하고, 그 브레이크를 재검토한다. 장점은 구현을 이해하기 쉽고, 지지 저항을 직접 볼 수 있다는 것이다. 단점은 가짜 브레이크 위험이 존재하고, 트렌드 지속성을 결정할 수 없다는 것이다. 다음 단계는 브레이크 효과를 확인하고, 위험을 제어하고, 자금 관리를 최적화하는 등의 측면에서 최적화할 수 있다.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)