Tiga Strategi SuperTrend yang Terdiri

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

img

Gambaran umum

Ini adalah strategi yang membuat keputusan perdagangan berdasarkan tiga indikator SuperTrend yang tumpang tindih.

Logika Strategi

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.

Keuntungan

  1. Mekanisme filter tiga menghindari sinyal palsu dan meningkatkan kualitas sinyal
  2. SuperTrend sendiri memiliki kemampuan pengurangan kebisingan yang baik
  3. Beberapa kombinasi hiperparameter dapat dikonfigurasi agar sesuai dengan lebih banyak lingkungan pasar
  4. Kinerja historis yang baik dengan rasio laba atas risiko yang tinggi

Risiko

  1. Beberapa sinyal penyaringan dapat kehilangan beberapa kesempatan
  2. Tidak berkinerja baik di berbagai pasar
  3. Membutuhkan optimasi kombinasi dari tiga set hyperparameter
  4. Waktu perdagangan terkonsentrasi rentan terhadap peristiwa mendadak

Hal berikut dapat dipertimbangkan untuk mengurangi risiko:

  1. Sesuaikan kondisi penyaringan, tetap satu atau dua SuperTrends
  2. Tambahkan strategi stop loss
  3. Mengoptimalkan hyperparameter untuk meningkatkan tingkat menang

Arahan Optimasi

  1. Uji lebih banyak kombinasi parameter untuk menemukan hiperparameter optimal
  2. Tambahkan algoritma pembelajaran mesin untuk optimasi parameter real-time
  3. Tambahkan strategi stop loss untuk mengendalikan kerugian tunggal
  4. Masukkan indikator lain untuk mengidentifikasi tren dan kisaran
  5. Memperpanjang waktu perdagangan untuk menghindari risiko pada satu titik waktu

Kesimpulan

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

Lebih banyak