Tren Optimasi Parameter Mengikuti Strategi Kuantitatif

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

img

Gambaran umum

Ide utama dari strategi ini adalah untuk menilai dan melacak tren harga dengan menggabungkan indikator persentase peringkat dan optimasi parameter. Strategi menghasilkan sinyal perdagangan dengan membandingkan harga saat ini dengan persentase harga selama periode sejarah tertentu untuk menangkap efek cermin dan melacak tren untuk kelebihan pengembalian.

Prinsip Strategi

Strategi ini menggunakan indikator percentrank untuk menentukan tren harga. Percentrank mewakili kekuatan relatif harga saat ini selama periode yang dilihat. Parameter len menunjukkan panjang periode historis yang akan dilihat.

Jangkauan nilai percentrank adalah dari 0 sampai 100. Ketika nilai percentrank mendekati 0, itu berarti harga saat ini dekat dengan harga terendah dalam periode yang dilihat dan berada di area yang undervalued. Ketika mendekati 100, itu berarti harga saat ini dekat dengan harga tertinggi dalam periode yang dilihat dan berada di area yang overvalued.

Strategi ini juga memperkenalkan parameter skala sebagai offset untuk memindahkan kisaran 0 sampai 100 ke kisaran skala ke kisaran skala 100+. Dua garis sinyal level_1 dan level_2 juga ditetapkan, di mana level_1 menunjukkan tingkat panjang dan level_2 menunjukkan tingkat pendek.

Ketika indikator price percentrank melintasi level_1 ke atas, sinyal panjang dihasilkan. Ketika melintasi level_2 ke bawah, sinyal pendek dihasilkan. Kondisi keluar bertentangan dengan sinyal masuk.

Keuntungan dari Strategi

  1. Menggunakan indikator persentase peringkat untuk menentukan kekuatan tren harga, menghindari terjebak atau mengejar tertinggi
  2. Menerapkan metode optimasi parameter untuk menyesuaikan skala offset dan ambang garis sinyal untuk produk dan siklus yang berbeda untuk meningkatkan stabilitas
  3. Mengkombinasikan ide perdagangan trend berikut dan rata-rata reversi untuk melacak tren secara tepat waktu setelah menembus garis sinyal

Analisis Risiko

  1. Penilaian yang salah tentang tren yang mengakibatkan kerugian yang tidak perlu
  2. Cenderung menghasilkan sinyal yang salah ketika volatilitas harga dan tren tidak jelas
  3. Pengaturan parameter yang tidak benar dapat menyebabkan perdagangan yang terlalu sering atau volume perdagangan yang tidak cukup

Untuk mengatasi risiko di atas, parameter seperti len, skala, level dapat disesuaikan untuk optimasi. indikator lain juga dapat dimasukkan untuk konfirmasi untuk menghindari perdagangan yang salah.

Arahan Optimasi

Ada ruang untuk optimalisasi strategi lebih lanjut:

  1. Stop loss point dapat diperkenalkan untuk mengurangi kerugian perdagangan tunggal
  2. Indikator seperti moving average dapat dimasukkan untuk konfirmasi untuk menyaring beberapa sinyal yang salah
  3. Metode pembelajaran mesin dapat digunakan untuk mengoptimalkan parameter secara otomatis
  4. Dapat berjalan secara paralel di beberapa kerangka waktu

Kesimpulan

Ide keseluruhan strategi ini jelas, menerapkan metode kuantitatif optimasi parameter untuk menilai dan melacak tren harga.


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