Strategi kuantitatif mengikut arah aliran berdasarkan pengoptimuman parameter


Tarikh penciptaan: 2024-01-02 11:01:22 Akhirnya diubah suai: 2024-01-02 11:01:22
Salin: 0 Bilangan klik: 682
1
fokus pada
1621
Pengikut

Strategi kuantitatif mengikut arah aliran berdasarkan pengoptimuman parameter

Gambaran keseluruhan

Idea utama strategi ini adalah menggabungkan penunjuk peratusan dan pengoptimuman parameter untuk menilai dan mengesan trend harga. Strategi ini menghasilkan isyarat perdagangan dengan membandingkan harga semasa dengan peratusan saiz harga dalam tempoh sejarah tertentu, untuk menangkap kesan cermin tengah, mengikuti trend, dan kemudian mendapatkan keuntungan tambahan.

Prinsip Strategi

Strategi ini menggunakan indikator percentrank untuk menentukan trend harga. Percentrank menunjukkan kekuatan relatif harga semasa dalam tempoh melihat.

Peringkat peratusan adalah antara 0 dan 100. Apabila nilai peratusan mendekati 0, harga semasa mendekati harga terendah dalam kitaran semak dan berada di kawasan yang tidak bernilai. Apabila mendekati 100, harga semasa mendekati harga tertinggi dalam kitaran semak dan berada di kawasan yang bernilai tinggi.

Strategi ini juga memperkenalkan parameter skala sebagai perpindahan. Ia menjadikan skala dari 0 hingga 100 ke skala 100 +. Ia juga menetapkan dua garis isyarat level_1 dan level_2. Di mana level_1 menunjukkan melihat lebih banyak tahap, dan level_2 menunjukkan melihat tahap.

Apabila harga %rank penunjuk menghasilkan lebih banyak isyarat melihat apabila ia melintasi level_1 dari bawah ke atas; apabila ia melintasi level_2 dari atas ke bawah menghasilkan isyarat melihat. Syarat kedudukan kosong bertentangan dengan isyarat masuk.

Kelebihan Strategik

  1. Menggunakan peratusan rank untuk menilai kekuatan trend harga, mengelakkan daripada terjebak dan mengejar
  2. Menggunakan kaedah pengoptimuman parameter, menyesuaikan skala penyimpangan dan nilai ambang talian isyarat, melakukan penyesuaian untuk pelbagai jenis dan kitaran, meningkatkan kestabilan
  3. Menggabungkan trend-following dan pemikiran perdagangan reverse, untuk menjejaki trend tepat pada masanya selepas garis isyarat pecah

Analisis risiko

  1. Salah menilai trend menyebabkan kerugian yang tidak perlu
  2. Apabila trend turun naik harga tidak jelas, ia mudah memberi isyarat yang salah
  3. Tetapan parameter yang tidak betul boleh menyebabkan kekerapan transaksi atau jumlah transaksi yang tidak mencukupi

Untuk risiko di atas, ia boleh dioptimumkan dengan menyesuaikan parameter len, skala, dan tahap; dan ia boleh digabungkan dengan petunjuk lain sebagai pengesahan, untuk mengelakkan perdagangan yang salah.

Arah pengoptimuman

Strategi ini masih boleh dioptimumkan lagi:

  1. Anda boleh memperkenalkan titik berhenti untuk mengurangkan kerugian tunggal.
  2. Ia boleh digabungkan dengan penunjuk seperti Moving Average untuk mengesahkan dan menapis beberapa isyarat yang salah.
  3. Parameter yang boleh dioptimumkan secara automatik dengan kaedah pembelajaran mesin
  4. Boleh berjalan serentak dalam pelbagai kitaran masa

ringkaskan

Strategi ini mempunyai pemikiran keseluruhan yang jelas, menggunakan kaedah kuantitatif yang dioptimumkan parameter untuk menilai dan mengesan trend harga. Ia mempunyai nilai sebenar, tetapi masih perlu diuji dan dioptimumkan lebih lanjut, mengurangkan risiko sebenar, meningkatkan keuntungan yang stabil.

Kod 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")