Gandalf Mean Reversation Strategi Dagangan Kuantitatif

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

img

Ringkasan

Strategi perdagangan kuantitatif Gandalf adalah strategi pembalikan purata berdasarkan garis harga median. Ia menentukan hala tuju trend semasa dengan mengira harga purata bertingkat, garis harga median dan harga tengah badan, untuk mencari titik masuk yang optimum. Apabila pembalikan trend dikesan, ia akan dengan cepat memotong kerugian dan keluar. Strategi ini menggabungkan idea-idea mengikuti trend dan strategi pembalikan trend.

Logika Strategi

Logik teras strategi Gandalf adalah untuk membandingkan hubungan magnitud antara harga purata tertimbang, garisan harga median dan harga tengah badan, untuk menilai hala tuju dan kekuatan trend semasa.

Khususnya, ia mengira harga berikut:

  • Harga purata bertingkat: (harga tertinggi + harga terendah + harga penutupan + harga penutupan) / 4
  • Garis harga purata: (harga tertinggi + harga terendah) / 2
  • Harga tengah badan: (harga buka + harga tutup) / 2

Apabila memasuki kedudukan, ia membandingkan hubungan magnitud antara harga purata tertimbang, garisan harga median dan harga tengah badan dua bar terakhir, untuk menentukan sama ada ia sesuai dengan ciri-ciri trend permulaan.

Sebagai contoh, jika harga purata bertingkat di bawah garis harga median, dan harga tengah badan juga di bawah harga purata bertingkat, ia menunjukkan harga menurun, yang memberikan peluang pendek.

Apabila menghentikan kerugian, ia terus membandingkan hubungan besar antara harga ini, untuk menilai sama ada terdapat tanda-tanda pembalikan trend.

Dengan membandingkan hubungan besar harga, strategi Gandalf merealisasikan penilaian dan pengesanan trend. Ia boleh mencari masa kemasukan yang optimum, dan juga dengan cepat mengesan pembalikan trend untuk menghentikan kerugian.

Kelebihan

Strategi Gandalf mempunyai kelebihan berikut:

  1. Menggunakan garis harga median untuk menentukan arah trend dapat menapis bunyi pasaran dengan berkesan dan mengunci trend utama.

  2. Keadaan kemasukan yang menggabungkan banyak perbandingan harga dapat menentukan permulaan trend dengan lebih dipercayai.

  3. Keadaan stop loss juga menggunakan perbandingan harga untuk menilai pembalikan trend, yang membolehkan stop loss dan kawalan risiko yang cepat.

  4. Mengambil perintah bersyarat untuk masuk boleh masuk dengan harga yang ideal.

  5. Masa mengambil keuntungan maksimum yang ditetapkan dan had atas tempoh memegang boleh mengunci keuntungan dan mengawal risiko perdagangan tunggal.

  6. Struktur kod adalah jelas dan mudah, mudah difahami dan diubah suai.

  7. Parameter boleh diselaraskan berdasarkan keutamaan risiko peribadi, mudah dioptimumkan.

  8. Boleh digunakan untuk produk trend, mampu menangkap keuntungan trend.

Ringkasnya, strategi Gandalf menggunakan garis median untuk menentukan trend, menetapkan keadaan mengambil keuntungan dan menghentikan kerugian, dan dapat mengawal risiko dengan berkesan semasa mengesan trend, menjadikannya strategi trend yang boleh dipercayai.

Risiko

Strategi Gandalf juga mempunyai beberapa risiko untuk diperhatikan:

  1. Sebagai strategi trend, ia akan menghasilkan kerugian yang lebih kecil apabila trend tidak jelas atau sering berbalik.

  2. Tidak dapat menentukan titik pembalikan trend dengan berkesan, boleh membawa kepada peningkatan kerugian.

  3. Cenderung terperangkap dalam pasaran yang terhad.

  4. Bergantung pada tetapan parameter, parameter perlu diselaraskan untuk produk yang berbeza.

  5. Holding unidirectional, tidak dapat mendapat keuntungan daripada trend terbalik.

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

Langkah pengurusan risiko:

  1. Mengambil saiz kedudukan kecil, kemasukan separa, untuk mengawal kerugian tunggal.

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

  3. Mengoptimumkan parameter untuk sesuai dengan produk semasa. Gunakan penunjuk lain untuk membantu penilaian trend.

  4. Pertimbangkan Martingale untuk asas kos yang lebih rendah.

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

  6. Ringankan kriteria kemasukan dengan sewajarnya untuk meningkatkan kebarangkalian kemasukan.

Arahan Penambahbaikan

Strategi Gandalf juga boleh ditingkatkan dalam aspek berikut:

  1. Membina penunjuk penilaian trend untuk membantu menentukan masa pembalikan trend, seperti menambah MACD, Bollinger Bands dll.

  2. Tambah fungsi pengoptimuman diskrit untuk mengoptimumkan parameter secara automatik dan menyesuaikan diri dengan lebih banyak produk.

  3. Meningkatkan algoritma pembelajaran mesin, melatih rangkaian saraf atau model SVM pada data sejarah untuk menilai trend.

  4. Tambah lebih banyak kaedah mengambil keuntungan, seperti mengambil keuntungan bergerak, mengambil keuntungan parabolik.

  5. Menggabungkan produk yang berkaitan untuk perdagangan spread atau strategi stat arb.

  6. Tambah ramalan keadaan berdasarkan Model Markov Tersembunyi untuk menilai rejim pasaran.

  7. Membina strategi gabungan, seperti menggabungkan dengan strategi purata bergerak untuk pengurusan pelbagai strategi.

  8. Meneroka pengoptimuman kombinasi strategi dagangan untuk mencari berat portfolio yang optimum.

Ringkasnya, strategi Gandalf boleh diperluaskan dan dioptimumkan dalam pelbagai dimensi seperti penilaian trend, pengoptimuman automatik, pengurusan risiko, untuk menjadikan strategi lebih kukuh dan boleh dipercayai.

Kesimpulan

Strategi kuantitatif Gandalf adalah strategi yang mudah namun berkesan berdasarkan perbandingan harga untuk menentukan trend. Ia menggabungkan idea-idea trend berikut dan stop loss cepat, dan dapat mengawal risiko dengan berkesan. Logik strategi jelas dan mudah difahami, parameter boleh diselaraskan berdasarkan pilihan risiko peribadi. Tetapi ia juga mempunyai beberapa turun naik keuntungan dan memegang risiko, yang memerlukan pengoptimuman dan pengurusan yang betul. Secara keseluruhan, strategi Gandalf adalah strategi trend berikut yang boleh dipercayai, mudah difahami dan dioptimumkan, sesuai untuk mengejar keuntungan trend 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 lanjut