Strategi Trend Following Cross Golden Cross adalah strategi perdagangan kuantitatif yang menggunakan kedua-dua garis trend sokongan / rintangan dan purata bergerak sebagai isyarat alternatif untuk mengikuti trend. Strategi ini mengambil kira tahap harga pada jangka masa yang berbeza, menggabungkan isyarat pecah melalui tahap sokongan dan rintangan utama dengan isyarat salib emas dan salib kematian dari penunjuk trend, untuk membuka kedudukan semasa perubahan trend awal untuk sasaran keuntungan mengesan trend jangka menengah hingga panjang.
Strategi ini terdiri daripada empat komponen utama:
Secara khusus, strategi pertama menggunakan fungsi permintaan Keselamatan untuk mendapatkan tertinggi tertinggi dan terendah tertinggi dalam tempoh 30 hari dan 30 minggu yang lalu masing-masing, merangka garis sokongan dan rintangan dinamik. Ia kemudian menggabungkan isyarat salib emas dan salib kematian dari SMA 10 tempoh untuk menapis peluang pecah. Isyarat panjang dihasilkan apabila harga memecahkan di atas tahap sokongan 30 hari dan SMA 10 tempoh, sementara isyarat pendek dihasilkan apabila harga memecahkan di bawah tahap rintangan 30 minggu dan SMA 10 tempoh.
Strategi ini mempertimbangkan kedua-dua tahap sokongan / rintangan jangka menengah dan jangka panjang, yang membolehkannya menangkap peluang trend yang lebih besar.
Kelebihan utama strategi ini termasuk:
Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi ini:
Penyelesaian:
Terdapat ruang untuk penambahbaikan lanjut:
Strategy Breakout Trendlines Dual Golden Cross Death Cross Trend Following secara berkesan menggabungkan sokongan / rintangan jangka menengah hingga panjang dan penunjuk purata bergerak untuk menapis isyarat menguntungkan semasa trend utama, menjadikannya strategi perdagangan kuantitatif yang agak matang. Masih ada ruang yang besar untuk pengoptimuman melalui mekanisme stop loss, parameter adaptif dll. Menggabungkan pembelajaran mesin juga dapat meningkatkan ketahanan.
/*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)