Ini adalah strategi yang membuat keputusan perdagangan berdasarkan tiga indikator SuperTrend yang tumpang tindih.
Strategi ini menggunakan fungsi ta.supertrend() untuk menghitung tiga indikator SuperTrend dengan pengaturan parameter yang berbeda, yaitu SuperTrend1 dengan 10 hari dan pengganda 3, SuperTrend2 dengan 14 hari dan pengganda 2, dan SuperTrend3 dengan 20 hari dan pengganda 2.5. Sinyal beli dihasilkan ketika harga melintasi di atas ketiga garis SuperTrend. Sinyal jual dihasilkan ketika harga melintasi di bawah ketiga garis SuperTrend.
Indikator SuperTrend menggabungkan indikator ATR untuk secara efektif melacak perubahan tren harga. Strategi tiga SuperTrends yang tumpang tindih membuat sinyal lebih andal, sehingga menangkap keuntungan yang lebih besar di pasar tren.
Hal berikut dapat dipertimbangkan untuk mengurangi risiko:
Strategi ini membuat keputusan berdasarkan tiga SuperTrends yang tumpang tindih, yang dapat secara efektif mengidentifikasi arah tren. Ini memiliki keuntungan seperti kualitas sinyal yang tinggi dan parameter yang dapat dikonfigurasi. Pada saat yang sama, ada juga risiko tertentu. Parameter dan waktu keluar perlu disesuaikan untuk beradaptasi dengan lingkungan pasar yang berbeda. Secara keseluruhan, strategi ini berkinerja sangat baik dan layak untuk penelitian dan aplikasi lebih lanjut.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Combined Supertrend Strategy - Ajit Prasad', overlay=true) // Function to calculate Supertrend supertrendFunc(atrLength, factor) => [supertrend, direction] = ta.supertrend(factor, atrLength) [supertrend, direction] // Input parameters for the first Supertrend atrPeriod1 = input(10, 'ATR Length 1') factor1 = input(3, 'Factor 1') // Calculate the first Supertrend [supertrend1, direction1] = supertrendFunc(atrPeriod1, factor1) // Input parameters for the second Supertrend atrPeriod2 = input(14, 'ATR Length 2') // Change values as needed factor2 = input(2, 'Factor 2') // Change values as needed // Calculate the second Supertrend [supertrend2, direction2] = supertrendFunc(atrPeriod2, factor2) // Input parameters for the third Supertrend atrPeriod3 = input(20, 'ATR Length 3') // Change values as needed factor3 = input(2.5, 'Factor 3') // Change values as needed // Calculate the third Supertrend [supertrend3, direction3] = supertrendFunc(atrPeriod3, factor3) // Define market opening and closing times marketOpenHour = 9 marketOpenMinute = 15 marketCloseHour = 15 marketCloseMinute = 30 exitTimeHour = 15 exitTimeMinute = 10 // Fetch historical close values using security function histClose = request.security(syminfo.tickerid, "D", close) // Buy condition buyCondition = close > supertrend1 and close > supertrend2 and close > supertrend3 and close[1] <= supertrend1[1] // Sell condition sellCondition = close < supertrend1 and close < supertrend2 and close < supertrend3 and close[1] >= supertrend1[1] // Exit conditions buyExitCondition = close < supertrend1[1] or close < supertrend2[1] or close < supertrend3[1] sellExitCondition = close > supertrend1[1] or close > supertrend2[1] or close > supertrend3[1] // Execute orders with market timing if true // Buy condition without 'and not' strategy.entry('Buy', strategy.long, when = buyCondition) // Sell condition without 'and not' strategy.entry('Sell', strategy.short, when = sellCondition) // Close conditions strategy.close('Buy', when = buyExitCondition ) strategy.close('Sell', when = sellExitCondition) // Close all trades at 3:10 pm IST if true strategy.close_all() // Plot Supertrends plot(supertrend1, 'Supertrend 1', color=color.new(color.green, 0), style=plot.style_linebr) plot(supertrend2, 'Supertrend 2', color=color.new(color.red, 0), style=plot.style_linebr) plot(supertrend3, 'Supertrend 3', color=color.new(color.blue, 0), style=plot.style_linebr) // Plot labels plotshape(buyCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.large, text='Buy Signal', textcolor=color.new(color.white, 0)) plotshape(sellCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.large, text='Sell Signal', textcolor=color.new(color.white, 0))