Trend Berasaskan Volume Mengikut Strategi Dagangan

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

img

Ringkasan

Ini adalah trend mengikuti strategi perdagangan berdasarkan penunjuk osilator jumlah yang diubah suai. Ia menggunakan purata bergerak jumlah untuk mengenal pasti isyarat jumlah yang meningkat dan menentukan entri atau keluar. Sementara itu, ia menggabungkan penilaian trend harga untuk mengelakkan isyarat yang salah semasa turun naik harga.

Logika Strategi

  1. Mengira purata bergerak volum vol_sum dengan panjang vol_length dan meluruskannya dengan purata bergerak tempoh vol_smooth.
  2. Menghasilkan Isyarat panjang apabila vol_sum meningkat di atas ambang dan Isyarat pendek apabila vol_sum jatuh di bawah ambang.
  3. Untuk menapis Isyarat palsu, hanya mengambil masa yang lama apabila trend harga yang diperiksa di bar arah masa lalu adalah ke atas dan sebaliknya.
  4. Tetapkan dua nilai ambang ambang dan ambang2. ambang menjana Isyarat perdagangan manakala ambang2 bertindak sebagai stop loss.
  5. Menguruskan pesanan terbuka / menutup melalui logik mesin keadaan.

Analisis Kelebihan

  1. Penunjuk jumlah menangkap perubahan dalam kuasa beli / jual pasaran untuk Isyarat yang lebih tepat.
  2. Menggabungkan dengan trend harga mengelakkan isyarat yang salah semasa turun naik harga.
  3. Dua nilai ambang lebih baik mengawal risiko.

Analisis Risiko

  1. Penunjuk jumlah mempunyai lag dan mungkin terlepas titik perubahan harga.
  2. Tetapan parameter yang salah membawa kepada perdagangan berlebihan atau kelewatan isyarat.
  3. Stop loss mungkin berlaku semasa lonjakan dalam jumlah dagangan.

Risiko boleh dikurangkan dengan menyesuaikan parameter, mengoptimumkan pengiraan penunjuk, dan menggabungkan pengesahan lain.

Arahan pengoptimuman

  1. Pengoptimuman parameter adaptif berdasarkan keadaan pasaran.
  2. Masukkan penunjuk lain seperti indeks turun naik untuk mengesahkan lebih lanjut Isyarat.
  3. Penyelidikan menggunakan model pembelajaran mesin untuk meningkatkan ketepatan isyarat.

Kesimpulan

Strategi ini menggunakan pengayun jumlah yang dipertingkatkan dengan trend harga untuk menentukan entri dan keluar dengan dua nilai ambang kerugian berhenti. Ia adalah sistem trend berikut yang stabil dengan ruang pengoptimuman dalam penyesuaian parameter, penapisan isyarat dan strategi kerugian berhenti. Secara keseluruhan ia mempunyai nilai praktikal yang bernilai penyelidikan dan pengoptimuman lanjut.


/*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 lanjut