Strategi Waktu Indikator Ganda Momentum Kuadrat

Penulis:ChaoZhang, Tarikh: 2024-02-04 15:53:48
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk SuperTrend dengan teori Gelombang Elliott untuk membina alat perdagangan teknikal yang kukuh. Ia menggunakan analisis trend pelbagai peringkat untuk menyediakan perspektif pasaran yang lebih komprehensif yang dapat menangkap pembalikan trend yang berpotensi dan pergerakan harga yang signifikan.

Prinsip Strategi

Idea utamanya terletak pada pendekatan berbilang peringkat:

  1. Gunakan 4 penunjuk SuperTrend, masing-masing dengan panjang dan pengganda ATR yang berbeza untuk menilai trend dari jangka pendek ke jangka panjang
  2. Tentukan isyarat panjang dan pendek yang kukuh melalui konvergensi penunjuk
  3. Rujuk kepada kaedah pengenalan corak Elliott Wave untuk mengenal pasti tingkah laku pasaran yang serupa untuk mengesahkan isyarat perdagangan

Oleh itu, ia menggunakan pelbagai penunjuk dan menambah pengenalan corak untuk menjadikan strategi lebih kukuh.

Analisis Kelebihan

  1. Reka bentuk pelbagai penunjuk memberikan penilaian menyeluruh
  2. Inspirasi teori gelombang meningkatkan kestabilan melalui pengenalan corak
  3. Penyesuaian arah masa nyata menyesuaikan diri dengan perubahan pasaran
  4. Parameter yang boleh dikonfigurasi sesuai dengan produk dan jangka masa yang berbeza

Analisis Risiko

  1. Tetapan parameter bergantung pada pengalaman, memerlukan penyatu untuk menentukan kombinasi parameter yang optimum
  2. Reka bentuk pelbagai penunjuk adalah kompleks, meningkatkan beban pengiraan
  3. Tidak boleh mengelakkan penjanaan isyarat yang salah

Parameter boleh dioptimumkan untuk secara beransur-ansur menentukan optimum; pengkomputeran awan boleh meningkatkan prestasi pengkomputeran; hentian kerugian boleh mengawal risiko.

Arahan pengoptimuman

Pengoptimuman boleh dibuat dalam beberapa aspek:

  1. Tambah modul pelarasan parameter adaptif untuk menyesuaikan parameter secara dinamik berdasarkan keadaan pasaran
  2. Menggabungkan model pembelajaran mesin untuk membantu menilai kebolehpercayaan isyarat
  3. Gabungkan penunjuk sentimen, peristiwa berita dan lain-lain untuk menentukan rejimen pasaran
  4. Sokongan templat parameter pelbagai produk untuk mengurangkan beban kerja ujian

Ini akan menjadikan parameter strategi lebih pintar, pertimbangan lebih tepat, dan penerapan praktikal lebih mudah.

Ringkasan

Strategi ini secara komprehensif mempertimbangkan kedua-dua dimensi trend dan corak, memastikan ketahanan penilaian sambil meningkatkan fleksibiliti. Multi-penunjuk dan tetapan parameter memastikan penerapan pasaran penuh. Dengan penggabungan lebih lanjut kaedah pintar dan automatik, kepraktisan strategi dapat ditingkatkan dengan besar. Ia memberikan inspirasi dan rujukan yang berharga untuk kemajuan perdagangan teknikal.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )

// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])


// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
    atr = ta.atr(atrLength)
    up = hl2 - (multiplier * atr)
    dn = hl2 + (multiplier * atr)
    trend = 1
    trend := nz(trend[1], 1)
    up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ?   math.max(up, nz(up[1], 0)) : up
    dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
    trend := src > nz(dn[1], 0) ?  1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
    [up, dn, trend]

// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")

// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)


// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1

// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
    if longCondition
        strategy.entry("Long", strategy.long)
        // [Any additional logic for long entry]

if tradingDirection == "Short" or tradingDirection == "Both"
    if shortCondition
        strategy.entry("Short", strategy.short)
        // [Any additional logic for short entry]


// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] 
    strategy.close_all()

// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
    var color res = color.new(baseColor, 100)
    if currentBar <= length
        res := color.new(baseColor, int(100 * currentBar / length))
    res

// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)


// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")

// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")

// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")

// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")



Lebih lanjut