Volume Oscillator Strategi Crossover Purata Bergerak Jangka Panjang dan Pendek

Penulis:ChaoZhang, Tarikh: 2023-12-12 11:19:04
Tag:

img

Ringkasan

Strategi ini berdasarkan persilangan purata bergerak jangka panjang dan jangka pendek jumlah dagangan. Ia menggunakan EMA dari tempoh yang berbeza untuk mengira trend jangka panjang dan jangka pendek jumlah dagangan, dan membina osilator berdasarkan perbezaan mereka. Ia pergi lama apabila osilator melintasi di atas tahap sifar, dan pergi pendek apabila melintasi di bawah. Ia juga menggabungkan harga tinggi dan rendah sebelumnya untuk menentukan arah tertentu.

Logika Strategi

Indikator teras strategi ini ialah Volume Oscillator. Ia mencerminkan trend perubahan jumlah dagangan dengan mengira perbezaan antara purata bergerak eksponen jangka panjang dan jangka pendek. Formula konkrit adalah:

Volume Oscillator = (ShortEMA - LongEMA) / LongEMA * 100

Di sini ShortEMA dan LongEMA merujuk kepada EMA jangka pendek dan jangka panjang masing-masing. Apabila ShortEMA melintasi LongEMA, penunjuk menjadi positif, yang menunjukkan peningkatan jumlah dagangan. Apabila ShortEMA melintasi di bawah LongEMA, penunjuk menjadi negatif, yang menunjukkan jumlah dagangan yang berkurangan.

Selepas mengira osilator, strategi ini menggunakan persilangan dengan tahap sifar untuk menjana isyarat perdagangan. Ia menjadi panjang apabila osilator bertukar dari negatif ke positif, iaitu melintasi di atas tahap sifar, dan menjadi pendek apabila bertukar dari positif ke negatif, iaitu melintasi di bawah tahap sifar. Ini mencerminkan penukaran momentum jumlah perdagangan.

Di samping itu, strategi ini juga menggabungkan harga tinggi dan rendah sebelumnya untuk menentukan arah tertentu. iaitu apabila pengayun melintasi di atas tahap sifar, jika harga tinggi sebelumnya lebih besar daripada nilai mutlak harga rendah sebelumnya, ia menyiratkan isyarat panjang, jika tidak isyarat pendek. Ciri ini membantu menilai kekuatan pengembangan jumlah.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan jumlah dagangan sebagai penunjuk asas dapat menentukan kesediaan peserta pasaran dengan berkesan dan sangat praktikal.

  2. Memasukkan kedua-dua EMA jangka panjang dan jangka pendek boleh menangkap trend jangka menengah dan jangka pendek dan momentum jangka pendek secara serentak.

  3. Isyarat persimpangan yang dibentuk oleh penunjuk dan tahap sifar adalah mudah dan jelas untuk membuat keputusan.

  4. Menambah paras tertinggi dan terendah sebelum ini untuk menentukan arah boleh memanfaatkan saiz momentum jumlah dagangan dengan baik.

  5. Logik strategi adalah mudah, parameter fleksibel untuk pelarasan dan ia mempunyai daya adaptasi yang agak kuat.

Risiko

Beberapa risiko strategi ini perlu diperhatikan:

  1. Penunjuk jumlah boleh dipengaruhi oleh pecah pasaran palsu, menghasilkan isyarat yang salah.

  2. Dalam pasaran yang terikat julat, persimpangan jumlah boleh berlaku dengan kerap.

  3. Tinggi dan rendah sebelum ini hanya mencerminkan pengembangan terkini dan tidak dapat menentukan kelestarianannya.

  4. Parameter memerlukan pengoptimuman berasingan untuk produk dan tempoh masa yang berbeza.

  5. Penunjuk jumlah bertindak balas perlahan kepada perdagangan algoritma frekuensi tinggi, mungkin terlepas masa kemasukan yang terbaik.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Menambah penapis untuk mengelakkan isyarat palsu, contohnya mengesahkan dengan penunjuk harga.

  2. Mengoptimumkan tempoh EMA jangka panjang dan jangka pendek untuk menyamai ciri-ciri produk yang berbeza.

  3. Menetapkan parameter tempoh untuk paras tertinggi dan terendah sebelum ini untuk menggunakan harga maksimum dan minimum tempoh.

  4. Menentukan julat untuk kawasan giliran penunjuk bukannya satu tahap untuk mengelakkan perdagangan berlebihan.

  5. Menambah strategi stop loss untuk mengawal kerugian tunggal.

  6. Menggabungkan penunjuk berasaskan jumlah lain seperti VRP.

  7. Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara automatik.

Ringkasan

Ringkasnya, strategi crossover rata-rata bergerak jangka pendek menggunakan ciri pembalikan jumlah dengan baik dan mempunyai kuasa menilai yang kuat pada peringkat awal trend. Menambahkan paras tertinggi dan terendah sebelumnya untuk menentukan arah membuat keputusan perdagangan lebih tepat. Kawalan risiko juga penting untuk mencegah kerugian dari isyarat palsu. Strategi ini mempunyai ruang yang besar untuk pengoptimuman, dalam aspek seperti penyesuaian parameter dan menggabungkan penunjuk, untuk memendekkan kelewatan dagangan dan masa tindak balas terhadap perubahan pasaran.


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

//@version=3
strategy("SB_Volume_oscillator_Prev_high_low", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

shortlen = input(5, minval=1)
longlen = input(10, minval=1)
short = ema(volume, shortlen)
long = ema(volume, longlen)
osc = 100 * (short - long) / long
//hline(0, title="Zero")
//plot(osc)
zero=input(0.0)

low_val=input(0.0)
high_val=input(0.0)
prev_high_val=input(0.0)
prev_low_val=input(0.0)
where=input(0)
where:=nz(where[1])
low_val:=nz(low_val[1])
high_val:=nz(high_val[1])
prev_high_val:=nz(prev_high_val[1])
prev_low_val:=nz(prev_low_val[1])
if(crossover(osc,zero))
    high_val:=osc
    where:=1
    prev_low_val:=low_val
    low_val:=osc

if(crossunder(osc,zero))
    low_val:=osc
    where:=-1
    prev_high_val:=high_val
    high_val:=osc

if(where==1)
    if(high_val<osc)
        high_val:=osc
        
if(where==-1)
    if(low_val>osc)
        low_val:=osc


if (crossover(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)

if (crossunder(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)

Lebih lanjut