Menggabungkan pelbagai penunjuk teknikal


Tarikh penciptaan: 2023-12-20 11:04:15 Akhirnya diubah suai: 2023-12-20 11:04:15
Salin: 0 Bilangan klik: 662
1
fokus pada
1621
Pengikut

Menggabungkan pelbagai penunjuk teknikal

Gambaran keseluruhan

Strategi ini menggunakan gabungan pelbagai petunjuk teknikal untuk mewujudkan strategi perdagangan garis pendek yang serba boleh. Strategi ini mempunyai pelbagai cara perdagangan seperti trend-following, penembusan perdagangan, dan perdagangan pembalikan, yang dapat disesuaikan dengan kebanyakan keadaan pasaran, dan merupakan strategi garis pendek yang sangat umum dan praktikal.

Prinsip Strategi

  1. Strategi ini menggunakan indikator candle body channel untuk menilai arah dan kekuatan trend semasa dengan menggabungkan harga tertinggi dan terendah.
  2. Kedua, menggunakan penunjuk EMA rata-rata yang biasa untuk menentukan arah trend garis panjang tengah. Menggunakan gabungan penunjuk EMA ganda untuk menyaring isyarat palsu.
  3. Strategi ini kemudiannya menggunakan Hull MA untuk menentukan sama ada harga semasa adalah lebih tinggi daripada harga jual. Hull MA mempunyai keupayaan untuk menentukan titik perubahan dengan lebih tepat.
  4. Akhirnya, strategi ini menggunakan fungsi keselamatan untuk membuka kitaran yang lebih tinggi untuk menentukan arah trend kitaran besar dan menghasilkan isyarat perdagangan.

Strategi ini menggabungkan beberapa substrategi di atas, yang membolehkan strategi ini menangkap trend dalam kitaran pertengahan dan juga menentukan arah keseluruhan berdasarkan kitaran panjang, sehingga mencapai strategi perdagangan umum yang serba boleh.

Analisis kelebihan

Kelebihan terbesar strategi ini adalah penggunaan pelbagai petunjuk teknikal untuk perdagangan gabungan, yang membolehkan pelbagai cara perdagangan serentak seperti trend tracking, perdagangan reverse, perdagangan terobosan, sangat universal dan sesuai untuk kebanyakan keadaan pasaran.

Secara khusus, kelebihan utama strategi ini ialah:

  1. Penggunaan indikator saluran badan lilin untuk menilai penembusan entiti dapat mengenal pasti isyarat penembusan secara berkesan.
  2. Penggunaan gabungan dua EMA untuk menyaring isyarat palsu dan meningkatkan ketepatan isyarat.
  3. Menggunakan Hull MA untuk menilai kawasan overbought dan oversold, mempunyai keupayaan untuk menilai titik perubahan dengan lebih tepat.
  4. Penggunaan garis K yang lebih tinggi untuk menghasilkan isyarat silang harga, dapat mengelakkan gangguan bunyi.
  5. Ia adalah gabungan pelbagai cara untuk berdagang yang menjadikan strategi ini lebih serba boleh dan universal.

Analisis risiko

Walaupun strategi ini menggabungkan pelbagai indikator, ia mewujudkan strategi perdagangan umum. Walau bagaimanapun, perdagangan mempunyai risiko tertentu, dengan risiko utama sebagai berikut:

  1. Transaksi yang diretas mudah disesatkan oleh penembusan palsu dan menghasilkan isyarat yang salah.
  2. Perdagangan reverse boleh menyebabkan kerugian dalam keadaan yang tidak menentu.
  3. Keupayaan penapisan gabungan dua EMA masih terhad dan mungkin memadamkan isyarat normal.
    1. Hull MA masih kurang tepat dalam penyesuaian kurva.

Untuk mengatasi risiko ini, kita boleh mengoptimumkan beberapa aspek:

  1. Menggunakan penunjuk yang lebih stabil untuk membantu penghakiman, untuk mengelakkan penembusan palsu.
  2. Tambah strategi hentikan kerugian dan kawal kerugian tunggal.
  3. Sesuaikan parameter EMA ganda untuk mencari kombinasi terbaik.
  4. Cuba untuk mengintegrasikan lebih banyak indikator untuk menilai pembelian dan penjualan berlebihan.

Arah pengoptimuman

Berdasarkan analisis di atas, strategi ini boleh dioptimumkan dari beberapa arah:

  1. Penghakiman tambahan menggunakan gabungan penunjuk yang lebih mainstream dan stabil, seperti Garis Persamaan Kalman, Blink, dan lain-lain.
  2. Meningkatkan strategi penangguhan kerugian dan mengawal kerugian tunggal.
  3. Pengoptimuman parameter untuk mencari kombinasi parameter yang optimum.
  4. Menambah penilaian model pembelajaran mesin, menggunakan AI untuk menilai kawasan overbought dan oversold.
  5. Menambah logik penghakiman adaptasi, menyesuaikan strategi mengikut keadaan pasaran yang berbeza.

ringkaskan

Strategi ini menggunakan pelbagai indikator untuk perdagangan gabungan, mewujudkan gabungan organik dari pelbagai cara perdagangan untuk mengikuti trend, melakukan perdagangan, dan membalikkan perdagangan, merupakan strategi perdagangan garis pendek yang sangat serba boleh dan universal. Kelebihan terbesar strategi ini adalah penyesuaian luas, boleh digunakan di kebanyakan persekitaran pasaran, merupakan strategi yang lebih umum. Sudah tentu, perdagangan tidak ada risiko tertentu, kita boleh melakukan pengoptimuman strategi dari memperkenalkan indikator yang lebih stabil, menambah stop loss, pengoptimuman parameter, aplikasi pembelajaran mesin dan banyak lagi aspek, sehingga kesan strategi ini dapat ditingkatkan.

Kod sumber strategi
/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////