이중 트렌드라인 브레이크오웃 골든 크로스 데스 크로스 트렌드 포워킹 전략은 트렌드 포워킹을 위한 대체 신호로 지원/저항 트렌드 라인 및 이동 평균을 모두 활용하는 양적 거래 전략이다. 이 전략은 중장기 트렌드를 추적하는 수익 목표를 위해 트렌드 지표에서 골든 크로스 및 데스 크로스 신호와 주요 지원 및 저항 수준을 통해 브레이크오웃 신호를 결합하여 다른 시간 프레임에서의 가격 수준을 고려하여 초기 트렌드 변화 중에 포지션을 오픈합니다.
이 전략은 네 가지 주요 구성 요소로 구성됩니다.
구체적으로, 전략은 먼저 지난 30 일 및 30 주 동안 각각 가장 높은 최고와 가장 낮은 최저를 얻기 위해 보안 요청 기능을 사용하여 동적 지원 및 저항 라인을 그래프링합니다. 그 다음 10 주간의 SMA에서 황금 십자가 및 죽음의 십자가 신호를 결합하여 브레이크 기회를 필터링합니다. 가격이 30 일 지원 수준과 10 주간의 SMA를 넘을 때 긴 신호가 생성되며 가격이 30 주간의 저항 수준과 10 주간의 SMA를 넘을 때 짧은 신호가 생성됩니다.
이 전략은 중장기 및 장기간 지지/저항 수준을 모두 고려하여 더 큰 트렌드 기회를 포착 할 수 있습니다. 이동 평균 필터를 사용하면 변화하는 트렌드 중에 잘못된 신호를 효과적으로 피합니다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략에는 몇 가지 위험 요소가 있습니다.
해결책:
추가 개선의 여지가 있습니다.
이중 트렌드 라인 브레이크오웃 골든 크로스 데스 크로스 트렌드 포워킹 전략은 주요 트렌드 중에 수익성있는 신호를 필터링하기 위해 중장기 지원 / 저항 및 이동 평균 지표를 효과적으로 결합하여 비교적 성숙한 양적 거래 전략으로 만들어집니다. 여전히 중지 손실 메커니즘, 적응 매개 변수 등을 통해 최적화 할 수있는 많은 공간이 있습니다. 기계 학습을 통합하면 안정성을 향상시킬 수 있습니다.
/*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"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © neosaid //@version=5 strategy("Support and resistant Strategy", overlay=true) // Function to check for breakout f_breakoutCondition(closingPrice, highestHigh, lowestLow) => closingPrice > highestHigh or closingPrice < lowestLow // Step 1: 30 Days Trend Line (Lower Lows) low30Days = request.security(syminfo.tickerid, "D", low) // Step 2: 30 Weeks Upper Trend Line (Higher Highs) high30Weeks = request.security(syminfo.tickerid, "W", high) // Step 3: Trend Line for Lowest Low within the Last Month var float lowestLowLastMonth = na for i = 0 to 29 lowestLowLastMonth := na(lowestLowLastMonth) ? low[i] : math.min(lowestLowLastMonth, low[i]) lowestLowLastMonthValue = lowestLowLastMonth[1] // Breakout Strategy highestHighLast3Candles = request.security(syminfo.tickerid, "D", ta.highest(close, 3)) lowestLowLast3Candles = request.security(syminfo.tickerid, "D", ta.lowest(close, 3)) // Additional conditions to filter signals buyCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close > low30Days sellCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close < high30Weeks // Additional filters to reduce the number of orders buyFilter = ta.crossover(close, ta.sma(close, 10)) // Buy only when price crosses above a 10-period SMA sellFilter = ta.crossunder(close, ta.sma(close, 10)) // Sell only when price crosses below a 10-period SMA buyCondition := buyCondition and buyFilter sellCondition := sellCondition and sellFilter // Plot Buy and Sell signals on the chart plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar) plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar) // Strategy entries strategy.entry("Buy", strategy.long, when = buyCondition) strategy.entry("Sell", strategy.short, when = sellCondition)