Trend yang dioptimumkan parameter mengikut strategi kuantitatif

Penulis:ChaoZhang, Tarikh: 2024-01-02 11:01:22
Tag:

img

Ringkasan

Idea utama strategi ini adalah untuk menilai dan mengesan trend harga dengan menggabungkan penunjuk peratusan dan pengoptimuman parameter. Strategi ini menghasilkan isyarat perdagangan dengan membandingkan harga semasa dengan peratusan harga dalam tempoh sejarah tertentu untuk menangkap kesan cermin dan mengesan trend untuk pulangan yang berlebihan.

Prinsip Strategi

Strategi ini menggunakan penunjuk peratusan untuk menentukan trend harga. Peratusan mewakili kekuatan relatif harga semasa dalam tempoh yang dilihat. Parameter len menunjukkan panjang tempoh sejarah untuk dilihat.

Julat nilai peratusan adalah dari 0 hingga 100. Apabila nilai peratusan adalah dekat dengan 0, ia bermakna harga semasa adalah berhampiran dengan harga terendah dalam tempoh yang dilihat dan berada di kawasan yang kurang dinilai. Apabila ia adalah berhampiran dengan 100, ia bermakna harga semasa adalah berhampiran dengan harga tertinggi dalam tempoh yang dilihat dan berada di kawasan yang terlalu dinilai.

Strategi ini juga memperkenalkan parameter skala sebagai offset untuk memindahkan julat 0 hingga 100 ke julat skala ke julat skala 100+. Dua garis isyarat level_1 dan level_2 juga ditetapkan, di mana level_1 menunjukkan tahap panjang dan level_2 menunjukkan tahap pendek.

Apabila penunjuk peratusan harga melintasi level_1 ke atas, isyarat panjang dihasilkan. Apabila melintasi level_2 ke bawah, isyarat pendek dihasilkan. Syarat keluar bertentangan dengan isyarat masuk.

Kelebihan Strategi

  1. Gunakan penunjuk peratusan peringkat untuk menentukan kekuatan trend harga, mengelakkan terperangkap atau mengejar tertinggi
  2. Menggunakan kaedah pengoptimuman parameter untuk menyesuaikan skala offset dan ambang garis isyarat untuk produk dan kitaran yang berbeza untuk meningkatkan kestabilan
  3. Menggabungkan trend berikut dan idea perdagangan pembalikan purata untuk mengesan trend dengan tepat pada masanya selepas memecahkan garis isyarat

Analisis Risiko

  1. Penilaian yang salah mengenai trend yang mengakibatkan kerugian yang tidak perlu
  2. Cenderung menghasilkan isyarat yang salah apabila turun naik harga dan trend tidak jelas
  3. Tetapan parameter yang tidak betul boleh membawa kepada perdagangan yang terlalu kerap atau jumlah dagangan yang tidak mencukupi

Untuk menangani risiko di atas, parameter seperti len, skala, tahap boleh diselaraskan untuk pengoptimuman.

Arahan pengoptimuman

Terdapat ruang untuk pengoptimuman lagi strategi:

  1. Titik Stop Loss boleh diperkenalkan untuk mengurangkan kerugian perdagangan tunggal
  2. Penunjuk seperti purata bergerak boleh dimasukkan untuk pengesahan untuk menapis beberapa isyarat yang salah
  3. Kaedah pembelajaran mesin boleh digunakan untuk mengoptimumkan parameter secara automatik
  4. Boleh berjalan secara selari di pelbagai bingkai masa

Kesimpulan

Idea keseluruhan strategi ini jelas, menggunakan kaedah kuantitatif pengoptimuman parameter untuk menilai dan mengesan trend harga. Ia mempunyai beberapa nilai praktikal tetapi masih memerlukan ujian dan pengoptimuman lanjut untuk mengurangkan risiko dan meningkatkan keuntungan yang stabil.


/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Alex_Dyuk

//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)

prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)

longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
    strategy.close("Long")
    
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
    strategy.close("Short")

    

Lebih lanjut