Gandalf Mean Reversasi Strategi Perdagangan Kuantitatif

Penulis:ChaoZhang, Tanggal: 2023-10-30 10:27:40
Tag:

img

Gambaran umum

Strategi perdagangan kuantitatif Gandalf adalah strategi reversi rata-rata berdasarkan garis harga median. Strategi ini menentukan arah tren saat ini dengan menghitung harga rata-rata tertimbang, garis harga median dan harga tengah tubuh, untuk menemukan titik masuk yang optimal. Ketika pembalikan tren terdeteksi, itu akan dengan cepat memotong kerugian dan keluar. Strategi ini menggabungkan gagasan mengikuti tren dan strategi pembalikan tren.

Logika Strategi

Logika inti dari strategi Gandalf adalah untuk membandingkan hubungan besar antara harga rata-rata tertimbang, garis harga median dan harga tengah tubuh, untuk menilai arah tren saat ini dan kekuatan.

Secara khusus, ia menghitung harga berikut:

  • Harga rata-rata tertimbang: (harga tertinggi + harga terendah + harga penutupan + harga penutupan) / 4
  • Garis harga median: (harga tertinggi + harga terendah) / 2
  • Harga tengah badan: (harga buka + harga tutup) / 2

Ketika memasuki posisi, ia membandingkan hubungan besar antara harga rata-rata tertimbang, garis harga median dan harga tengah tubuh dari dua bar terakhir, untuk menentukan apakah sesuai dengan karakteristik tren awal.

Sebagai contoh, jika harga rata-rata tertimbang berada di bawah garis harga median, dan harga rata-rata badan juga berada di bawah harga rata-rata tertimbang, ini menunjukkan harga menurun, yang menyajikan peluang shorting.

Jika harga rata-rata tertimbang berada di atas harga rata-rata badan, dan garis harga median berada di bawah harga rata-rata tertimbang, itu menunjukkan pembalikan tren, dan harus memotong kerugian segera.

Dengan membandingkan hubungan harga besar, strategi Gandalf mewujudkan penilaian dan pelacakan tren. Ini dapat menemukan waktu masuk yang optimal, dan juga dengan cepat mendeteksi pembalikan tren untuk menghentikan kerugian.

Keuntungan

Strategi Gandalf memiliki keuntungan berikut:

  1. Menggunakan garis harga median untuk menentukan arah tren dapat secara efektif menyaring kebisingan pasar dan mengunci tren utama.

  2. Kondisi masuk yang menggabungkan beberapa perbandingan harga dapat lebih dapat diandalkan menentukan awal tren.

  3. Kondisi stop loss juga menggunakan perbandingan harga untuk menilai pembalikan tren, yang memungkinkan stop loss dan pengendalian risiko yang cepat.

  4. Mengadopsi perintah bersyarat untuk masuk bisa masuk dengan harga yang ideal.

  5. Waktu pengambilan keuntungan maksimum yang telah ditetapkan dan batas atas periode kepemilikan dapat mengunci keuntungan dan mengendalikan risiko perdagangan tunggal.

  6. Struktur kode jelas dan sederhana, mudah dimengerti dan dimodifikasi.

  7. Parameter dapat disesuaikan berdasarkan preferensi risiko pribadi, mudah dioptimalkan.

  8. Terapkan pada produk tren, mampu menangkap keuntungan tren.

Singkatnya, strategi Gandalf menggunakan garis median untuk menentukan tren, menetapkan kondisi mengambil keuntungan dan menghentikan kerugian, dan dapat secara efektif mengendalikan risiko sambil melacak tren, menjadikannya strategi tren yang dapat diandalkan.

Risiko

Strategi Gandalf juga memiliki beberapa risiko untuk dicatat:

  1. Sebagai strategi trend, akan menghasilkan kerugian lebih kecil ketika tren tidak jelas atau sering berbalik.

  2. Tidak dapat secara efektif menentukan titik pembalikan tren, dapat menyebabkan kerugian yang berkembang.

  3. Cenderung terjebak di pasar yang terbatas.

  4. Tergantung pada pengaturan parameter, parameter perlu disesuaikan untuk produk yang berbeda.

  5. Holding unidirectional, tidak bisa mendapatkan keuntungan dari tren terbalik.

  6. Tingkat kegagalan pesanan bersyarat tinggi, mungkin menunggu lama untuk masuk.

Langkah-langkah manajemen risiko:

  1. Mengadopsi ukuran posisi kecil, entri parsial, untuk mengendalikan kerugian tunggal.

  2. Tetapkan stop loss line, stop loss cepat atau mengadopsi stop loss bergerak atau trailing stop loss.

  3. Mengoptimalkan parameter agar sesuai dengan produk saat ini. Gunakan indikator lain untuk membantu penilaian tren.

  4. Pertimbangkan Martingale untuk biaya dasar yang lebih rendah.

  5. Perdagangan produk dengan tren yang jelas, keyakinan keuntungan yang lebih tinggi.

  6. Meredakan kriteria masuk dengan tepat untuk meningkatkan kemungkinan masuk.

Arah Peningkatan

Strategi Gandalf juga dapat ditingkatkan dalam hal berikut:

  1. Membangun indikator penilaian tren untuk membantu menentukan waktu pembalikan tren, seperti menambahkan MACD, Bollinger Bands dll.

  2. Tambahkan fungsi optimasi diskrit untuk mengoptimalkan parameter otomatis dan beradaptasi dengan lebih banyak produk.

  3. Meningkatkan algoritma pembelajaran mesin, melatih jaringan saraf atau model SVM pada data historis untuk menilai tren.

  4. Tambahkan lebih banyak metode mengambil keuntungan, seperti mengambil keuntungan bergerak, mengambil keuntungan parabolik.

  5. Menggabungkan produk terkait untuk perdagangan spread atau strategi stat arb.

  6. Tambahkan prediksi keadaan berdasarkan Model Markov Tersembunyi untuk menilai rezim pasar.

  7. Membangun strategi gabungan, seperti menggabungkan dengan strategi moving average untuk manajemen multi-strategi.

  8. Jelajahi optimasi kombinasi strategi perdagangan untuk menemukan bobot portofolio yang optimal.

Singkatnya, strategi Gandalf dapat diperluas dan dioptimalkan dalam berbagai dimensi seperti penilaian tren, optimasi otomatis, manajemen risiko, untuk membuat strategi lebih kuat dan dapat diandalkan.

Kesimpulan

Strategi kuantitatif Gandalf adalah strategi yang sederhana namun efektif berdasarkan perbandingan harga untuk menentukan tren. Ini menggabungkan ide-ide mengikuti tren dan stop loss cepat, dan dapat secara efektif mengendalikan risiko. Logika strategi jelas dan mudah dipahami, parameter dapat disesuaikan berdasarkan preferensi risiko pribadi. Tetapi juga memiliki beberapa fluktuasi keuntungan dan risiko kepemilikan, yang membutuhkan optimasi dan manajemen yang tepat. Secara keseluruhan, strategi Gandalf adalah strategi trend yang dapat diandalkan, mudah dipahami dan dioptimalkan, cocok untuk mengejar keuntungan tren yang stabil.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// The GandalfProjectResearchSystem strategy, as discussed in
// “System Development Using Artificial Intelligence”
// by Domenico D’Errico and Giovanni Trombetta
strategy("Gandalf Project Research System", overlay=true)

// Inputs
Quantity = input(0, title="Quantity (0 to auto calc)")
Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade")
MaxProfitCloses = input(6, minval=1, title="Max Profit Close")
MaxBars = input(8, minval=1, title="Max Total Bars")
Enter_Gap = input(-0.08, title="Distance from low price to place entry limit")
AltExit = input(true, title="Use Alt Exit")

// Calculate Order Quantity
Ncon = Single_Trade_Money / close

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
MedBodyPrice = (open + close) / 2.0
Weighted = (high + low + close + close) / 4.0
Median = (high + low) / 2.0

// Enter Conditions
Cond00 = strategy.position_size == 0
Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2]))
Entry01 = Cond00 and Cond01

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Exit Conditions
eCond01 = BarsSinceEntry - 1 >= MaxBars
eCond02 = MaxProfitCount >= MaxProfitCloses
eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]))
eCond04 = AltExit ? true : close - strategy.position_avg_price < 0
Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04))

// Entries
strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01)
 
// Exits
strategy.close("L1", Exit01)


Lebih banyak