Strategi Penembusan Saluran Bergolak

Penulis:ChaoZhang, Tarikh: 2023-11-15 16:01:09
Tag:

img

Ringkasan

Ini adalah strategi perdagangan pecah berdasarkan penunjuk saluran. Ia menggunakan ciri goyangan jalur saluran untuk pergi lama apabila harga pecah di atas jalur atas dan pergi pendek apabila pecah di bawah jalur bawah. Ia tergolong dalam kategori strategi trend berikut.

Logika Strategi

Strategi ini mula-mula menggunakan SMA untuk mengira garisan tengah saluran. Band atas ditetapkan sebagai garisan tengah ditambah nilai parameter, dan band bawah adalah garisan tengah dikurangkan nilai parameter, membentuk saluran harga. Ia kemudian menilai sama ada harga keluar dari band atas atau bawah, digabungkan dengan lonjakan dalam jumlah dagangan sebagai isyarat pembukaan. Apabila harga jatuh kembali ke saluran, ia berfungsi sebagai isyarat penutupan.

Secara khusus, logik dagangan adalah seperti berikut:

  1. Mengira garis tengah: SMA (dekat, N)

  2. Garis atas: garisan tengah + nilai parameter

  3. Garis bawah: garis tengah - nilai parameter

  4. Apabila harga pecah di atas band atas, jika jumlah dagangan lebih besar daripada 2x tempoh sebelumnya, pergi panjang.

  5. Apabila harga jatuh kembali ke saluran, tutup kedudukan panjang.

  6. Apabila harga pecah di bawah band bawah, jika jumlah dagangan lebih besar daripada 2x tempoh sebelumnya, pergi pendek.

  7. Apabila harga jatuh kembali ke saluran, tutup kedudukan pendek.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Menggunakan penunjuk saluran boleh dengan berkesan mengesan trend harga.

  2. Digabungkan dengan lonjakan dalam jumlah dagangan menapis pecah palsu dengan baik.

  3. Kembali ke saluran berfungsi sebagai mekanisme hentian kerugian dan mengehadkan kerugian setiap perdagangan.

  4. Ciri-ciri goyangan sesuai menangkap trend jangka sederhana.

  5. Logik yang mudah menjadikannya mudah difahami dan dilaksanakan.

Analisis Risiko

Terdapat juga beberapa risiko:

  1. Perdagangan arah yang sama berturut-turut apabila harga melekat di satu sisi saluran untuk jangka masa panjang, meningkatkan risiko kerugian.

  2. Tetapan parameter saluran yang tidak betul boleh menyebabkan isyarat palsu yang berlebihan.

  3. Kriteria yang salah untuk lonjakan jumlah dagangan mungkin terlepas isyarat penembusan sebenar.

  4. Mekanisme stop loss mungkin terlalu konservatif, terlepas pergerakan yang lebih besar.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter saluran untuk menyesuaikan dengan ciri pasaran yang berbeza.

  2. Meningkatkan kriteria kedudukan terbuka, seperti mempertimbangkan persilangan MA atau corak candlestick, untuk mengelakkan pecah palsu.

  3. Mengoptimumkan mekanisme stop loss, membenarkan julat stop loss yang lebih luas untuk mengelakkan keluarnya.

  4. Tambahkan peraturan saiz kedudukan untuk menyesuaikan saiz kedudukan dan penggunaan modal berdasarkan keadaan pasaran.

  5. Sertakan lebih banyak penunjuk untuk menentukan arah trend keseluruhan, mengelakkan perdagangan terhadap trend utama.

Ringkasan

Ringkasnya, ini adalah strategi trend berikut yang mudah dan praktikal. Dengan menggunakan osilasi saluran, ia dapat menangkap trend jangka menengah dengan berkesan. Tetapi penyesuaian parameter diperlukan untuk menyesuaikan dengan pasaran yang berbeza, dan risiko harus dipantau. Pengoptimuman lanjut dengan lebih banyak penunjuk dan teknik dapat meningkatkan kestabilan dan keuntungan.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Copyright, 2022, Cache_that_pass.  You are free to use this script however you see fit and reproduce it in any manner.

//@version=5

            //////  Name the strategy between the 2 quotation marks.  Consider setting commission type and value in strategy header to match exchanges rates. //////

strategy("Oscillating SSL Channel Strategy", "O-SSL Strat", overlay=true, pyramiding=1, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 100, calc_on_order_fills=true)



            //////  Inputs and calculations used by script  //////

period = input(title='Period', defval=25)
len = input(title='Period', defval=25)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

            //////  Show me the money  //////

plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))


            //////  Trade execution logic  //////  
            
//pseudo-code//
        //Go long when high (or maybe close) breaks above the sslUp and volume is 2x or > Volume[1] and sslUp > sslDown
        //Close the above longs when sslUp crosses under sslDown (or set takeprofit and stop loss exits)
        //
        //Go short when low is lower than the sslUp and volume is 2x or > Volume[1] and sslDown > sslUp
        //Close shorts when sslDown crosses under sslUp

longCondition1 = (sslUp > sslDown)
longCondition2 = ta.crossover(high, sslUp)
//longCondition3 = (volume >= (volume[1]*1.89))
longCondition = ((longCondition1) and (longCondition2))// and (longCondition3))

longExit = ta.crossunder(sslUp, sslDown)

            //////  Bring It  //////
if (longCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (longExit)
    strategy.close("Bring It", comment="Sling It")


shortCondition1 = (sslDown) > (sslUp)
shortCondition2 = ta.crossunder(low, sslUp)
//shortCondition3 = (volume >= (volume[1]*1.89))
shortCondition = ((shortCondition1) and (shortCondition2))// and (shortCondition3))

shortExit = ta.crossunder(sslDown, sslUp)

            //////  Bring It  //////
if (shortCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (shortExit)
    strategy.close("Bring It", comment="Sling It")

            //////  Sling It  //////
if (shortCondition)
    strategy.entry("Sling It", strategy.short)

            //////  Bling It  //////
if (shortExit)
    strategy.close("Sling It", comment="Bring It")



Lebih lanjut