Strategi kuantitatif mengikuti tren berdasarkan optimasi parameter


Tanggal Pembuatan: 2024-01-02 11:01:22 Akhirnya memodifikasi: 2024-01-02 11:01:22
menyalin: 0 Jumlah klik: 682
1
fokus pada
1621
Pengikut

Strategi kuantitatif mengikuti tren berdasarkan optimasi parameter

Ringkasan

Gagasan utama dari strategi ini adalah menggabungkan indikator percentrank dan parameter optimasi untuk menilai dan melacak tren harga. Strategi ini menghasilkan sinyal perdagangan dengan membandingkan harga saat ini dengan persentase ukuran harga dalam periode sejarah tertentu, untuk menangkap efek cermin tengah, mengikuti tren, dan kemudian mendapatkan keuntungan tambahan.

Prinsip Strategi

Strategi ini menggunakan indikator percentrank untuk menentukan tren harga. Percentrank menunjukkan kekuatan relatif harga saat ini dalam periode yang dilihat. Parameter len menunjukkan panjang periode sejarah yang dilihat.

Peringkat persentase berkisar antara 0 dan 100. Peringkat persentase mendekati 0 berarti harga saat ini mendekati harga terendah dalam periode periksa dan berada di zona undervalued. Peringkat 100 berarti harga saat ini mendekati harga tertinggi dalam periode periksa dan berada di zona overvalued.

Strategi ini juga memperkenalkan parameter skala sebagai bias. Mengubah 0-100 menjadi skala 100+ skala. Siapkan dua garis sinyal level_1 dan level_2.

Ketika harga percentrank indikator dari bawah ke atas melintasi level_1 menghasilkan sinyal melihat lebih; ketika dari atas ke bawah melintasi level_2 menghasilkan sinyal melihat lebih. Kondisi posisi kosong adalah kebalikan dari sinyal masuk.

Keunggulan Strategis

  1. Menggunakan indikator percentrank untuk menilai kekuatan tren harga, menghindari terjebak dan mengejar tinggi
  2. Metode pengoptimalan parameter yang diterapkan, penyesuaian skala bias dan nilai ambang jalur sinyal, penyesuaian untuk varietas dan siklus yang berbeda, meningkatkan stabilitas
  3. Kombinasi dari trend tracking dan ide trading reversal, untuk menelusuri tren tepat waktu setelah garis sinyal terobosan

Analisis risiko

  1. Salah menilai tren menyebabkan kerugian yang tidak perlu
  2. Jika tren harga tidak jelas, sinyal yang salah akan muncul.
  3. Setting parameter yang tidak tepat dapat menyebabkan frekuensi atau volume transaksi yang kurang

Untuk risiko di atas, dapat dioptimalkan dengan menyesuaikan parameter len, scale, level; juga dapat dikombinasikan dengan indikator lain sebagai konfirmasi, untuk menghindari kesalahan perdagangan.

Arah optimasi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Stop loss dapat diperkenalkan untuk mengurangi kerugian tunggal.
  2. Dapat dikonfirmasi dengan indikator seperti Moving Average untuk menyaring beberapa sinyal yang salah
  3. Parameter yang dapat dioptimalkan secara otomatis dengan metode pembelajaran mesin
  4. Dapat berjalan secara paralel dalam beberapa periode waktu

Meringkaskan

Strategi ini secara keseluruhan memiliki ide yang jelas, menggunakan metode kuantitatif yang dioptimalkan parameter untuk menilai dan melacak tren harga. Ini memiliki nilai nyata, tetapi masih perlu diuji dan dioptimalkan lebih lanjut, mengurangi risiko nyata, dan meningkatkan stabilitas profitabilitas.

Kode Sumber Strategi
/*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")