Strategi SuperTrend Berganda yang Terdiri

Penulis:ChaoZhang, Tarikh: 2024-02-26 10:04:18
Tag:

img

Ringkasan

Ini adalah strategi yang membuat keputusan dagangan berdasarkan tiga penunjuk SuperTrend yang bertindih.

Logika Strategi

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.

Kelebihan

  1. Mekanisme penapis tiga mengelakkan isyarat palsu dan meningkatkan kualiti isyarat
  2. SuperTrend sendiri mempunyai keupayaan pengurangan bunyi yang baik
  3. Pelbagai kombinasi hiperparameter boleh dikonfigurasi untuk sesuai dengan lebih banyak persekitaran pasaran
  4. Prestasi sejarah yang baik dengan nisbah pulangan risiko yang tinggi

Risiko

  1. Beberapa isyarat penapisan boleh kehilangan beberapa peluang
  2. Tidak berprestasi baik di pasaran yang berbeza
  3. Menghendaki pengoptimuman gabungan tiga set hiperparameter
  4. Waktu dagangan tertumpu mudah terdedah kepada peristiwa tiba-tiba

Perkara berikut boleh dipertimbangkan untuk mengurangkan risiko:

  1. Sesuaikan keadaan penapisan, simpan satu atau dua SuperTrends
  2. Tambah strategi stop loss
  3. Mengoptimumkan hyperparameter untuk meningkatkan kadar kemenangan

Arahan pengoptimuman

  1. Uji lebih banyak kombinasi parameter untuk mencari hiperparameter optimum
  2. Tambah algoritma pembelajaran mesin untuk pengoptimuman parameter masa nyata
  3. Tambah strategi stop loss untuk mengawal kerugian tunggal
  4. Menggabungkan penunjuk lain untuk mengenal pasti trend dan julat
  5. Memperpanjang masa dagangan untuk mengelakkan risiko pada satu masa

Kesimpulan

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))

Lebih lanjut