Tren berdasarkan volume mengikuti strategi perdagangan

Penulis:ChaoZhang, Tanggal: 2024-01-29 15:04:18
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan yang mengikuti tren berdasarkan indikator osilator volume yang dimodifikasi. Ini menggunakan rata-rata bergerak volume untuk mengidentifikasi sinyal volume yang meningkat dan menentukan entri atau keluar. Sementara itu, ini menggabungkan penilaian tren harga untuk menghindari sinyal yang salah selama osilasi harga.

Logika Strategi

  1. Hitung volume rata-rata bergerak vol_sum dengan panjang vol_length dan rata-rata dengan rata-rata bergerak periode vol_smooth.
  2. Menghasilkan sinyal panjang ketika volume meningkat di atas ambang batas dan sinyal pendek ketika volume turun di bawah ambang batas.
  3. Untuk menyaring sinyal palsu, hanya membutuhkan waktu lama ketika tren harga yang diperiksa di bar arah masa lalu naik dan sebaliknya.
  4. Tetapkan dua nilai ambang ambang dan ambang 2. ambang menghasilkan sinyal perdagangan sementara ambang 2 bertindak sebagai stop loss.
  5. Mengelola perintah buka/tutup melalui logika mesin state.

Analisis Keuntungan

  1. Indikator volume menangkap perubahan daya beli/penjualan pasar untuk sinyal yang lebih akurat.
  2. Menggabungkan dengan tren harga menghindari sinyal yang salah selama perubahan harga.
  3. Dua nilai ambang untuk mengontrol risiko dengan lebih baik.

Analisis Risiko

  1. Indikator volume memiliki lag dan mungkin melewatkan titik balik harga.
  2. Pengaturan parameter yang salah menyebabkan over-trading atau keterlambatan sinyal.
  3. Stop loss dapat terjadi selama lonjakan volume perdagangan.

Risiko dapat dikurangi dengan menyesuaikan parameter, mengoptimalkan perhitungan indikator, dan menggabungkan konfirmasi lainnya.

Arahan Optimasi

  1. Optimasi adaptif dari parameter berdasarkan kondisi pasar.
  2. Masukkan indikator lain seperti indeks volatilitas untuk lebih memverifikasi sinyal.
  3. Penelitian yang menerapkan model pembelajaran mesin untuk meningkatkan akurasi sinyal.

Kesimpulan

Strategi ini menggunakan osilator volume yang ditingkatkan dengan tren harga untuk menentukan entri dan keluar dengan dua nilai ambang stop loss. Ini adalah sistem trend berikut yang stabil dengan ruang optimasi dalam penyesuaian parameter, penyaringan sinyal dan strategi stop loss. Secara keseluruhan memiliki nilai praktis yang layak penelitian lebih lanjut dan optimasi.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('Volume Advanced', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end    = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

source = close 
vol_length  = input(34, title = "Volume - Length")
vol_smooth  = input(200,title = "Volume - Smoothing")
volriselen  = input(21,  title = "Volume - Risinglength")
volfalllen  = input(13, title = "Volume - Fallinglength")
threshold   = input(1,"threshold")
threshold2  = input(1.2,step=0.1, title="Threshold 2")
direction = input(13,"amount of bars")


volsum  = sum(volume, vol_length) / (sum(volume, vol_smooth) / (vol_smooth / vol_length))


LongEntry  = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close > close[direction]
ShortEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close < close[direction]
LongExit1  = falling (volsum,volfalllen)
ShortExit1 = falling (volsum,volfalllen)
LongExit2= (crossover(volsum, threshold2) and close < close[direction])


_state = 0
_prev = nz(_state[1])
_state := _prev

if _prev == 0
    if LongEntry
        _state := 1
        _state
    if ShortEntry
        _state := 2
        _state
if _prev == 1
    if ShortEntry or LongExit1
        _state := 0
        _state
if _prev == 2
    if LongEntry or ShortExit1
        _state := 0
        _state

_bLongEntry = _state == 1 
_bLongClose = _state == 0 

long_condition = _bLongEntry and close > close[direction]
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  _bLongClose or LongExit2
strategy.close('BUY', when=short_condition)

plot(volsum,      color = color.green,    title="Vol_Sum")
plot(threshold, color = color.fuchsia, transp=50, title="Threshold")
plot(threshold2, color=color.white, transp = 50, title="Threshold 2")

Lebih banyak