Ini adalah strategi yang membuat keputusan dagangan berdasarkan tiga penunjuk SuperTrend yang bertindih.
Strategi ini menggunakan fungsi ta.supertrend() untuk mengira tiga penunjuk SuperTrend dengan tetapan parameter yang berbeza, iaitu SuperTrend1 dengan 10 hari dan pengganda 3, SuperTrend2 dengan 14 hari dan pengganda 2, dan SuperTrend3 dengan 20 hari dan pengganda 2.5. Isyarat beli dihasilkan apabila harga melintasi di atas ketiga-tiga garis SuperTrend. Isyarat jual dihasilkan apabila harga melintasi di bawah ketiga-tiga garis SuperTrend.
Penunjuk SuperTrend menggabungkan penunjuk ATR untuk mengesan perubahan trend harga dengan berkesan. Strategi tiga SuperTrends yang bertindih menjadikan isyarat lebih boleh dipercayai, dengan itu menangkap keuntungan yang lebih besar di pasaran trend.
Perkara berikut boleh dipertimbangkan untuk mengurangkan risiko:
Strategi ini membuat keputusan berdasarkan tiga SuperTrends yang bertindih, yang dapat mengenal pasti arah trend dengan berkesan. Ia mempunyai kelebihan seperti kualiti isyarat yang tinggi dan parameter yang boleh dikonfigurasikan. Pada masa yang sama, terdapat juga risiko tertentu. Parameter dan masa keluar perlu disesuaikan untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza. Secara keseluruhan, strategi ini berfungsi dengan sangat baik dan bernilai penyelidikan dan penerapan 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))