Strategi Salib Emas Salib Kematian

Penulis:ChaoZhang, Tarikh: 2023-10-11 16:33:18
Tag:

Ringkasan

Strategi ini menggunakan prinsip salib emas dan salib kematian purata bergerak mudah untuk melaksanakan kedudukan panjang dan pendek untuk saham. Ia menjadi panjang apabila MA cepat melintasi di atas MA perlahan, dan menjadi pendek apabila MA cepat melintasi di bawah MA perlahan.

Logika Strategi

Strategi pertama menentukan jangka masa backtesting, kemudian menetapkan parameter pengiraan untuk kedua-dua purata bergerak, termasuk jenis MA dan panjang tempoh.

Fungsi getMAType () mengira nilai kedua-dua MA. fastMA adalah MA tempoh yang lebih pendek, dan slowMA adalah MA tempoh yang lebih lama.

Logika asasnya:

  • Apabila fastMA melintasi di atas slowMA, isyarat panjang dicetuskan.

  • Apabila fastMA melintasi di bawah slowMA, isyarat pendek dicetuskan.

Akhirnya, semasa backtesting, mengambil kedudukan panjang apabila melihat isyarat panjang, dan mengambil kedudukan pendek apabila melihat isyarat pendek.

Analisis Kelebihan

  • Idea strategi yang mudah dan jelas, mudah difahami dan dilaksanakan.
  • Menggunakan prinsip silang MA yang digunakan secara meluas, sesuai untuk kebanyakan produk stok.
  • Jenis dan parameter MA yang boleh disesuaikan, kebolehsesuaian yang tinggi.
  • Struktur strategi modular, fungsi yang jelas, mudah dioptimumkan.

Analisis Risiko

  • MA crossover mempunyai beberapa lag, mungkin terlepas beberapa peluang perdagangan.
  • Tidak dapat menapis pasaran dengan berkesan, cenderung untuk terperangkap.
  • Pengoptimuman parameter tidak cukup komprehensif, memerlukan pengalaman manual.
  • Tidak dapat mengawal risiko dan kerugian setiap perdagangan dengan berkesan.

Kemungkinan pengoptimuman terhadap risiko:

  1. Tambah penunjuk teknikal lain untuk pengenalan trend.

  2. Tambah stop loss kepada kawalan bagi setiap jumlah kerugian perdagangan.

  3. Tambah indikator jumlah untuk mengelakkan pasaran whipsaw.

  4. Membina mekanisme pengoptimuman parameter untuk mencari set parameter optimum secara automatik.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Tambah strategi stop loss seperti titik stop loss tetap atau trailing stop loss untuk mengawal kerugian.

  2. Tambah strategi saiz kedudukan seperti saiz kedudukan tetap atau dinamik untuk mengawal risiko perdagangan.

  3. Tambah penapis dengan menggabungkan dengan penunjuk teknikal lain untuk mengenal pasti trend dan meningkatkan kadar kemenangan.

  4. Mengoptimumkan parameter dengan kaedah seperti carian grid dan regresi linear untuk mencari nilai optimum.

  5. Memperluas strategi kemasukan seperti penarikan balik, skala dalam pesanan untuk memperkayakan taktik perdagangan.

  6. Tambah indikator jumlah untuk mengelakkan pasaran whipsaw.

  7. Memperluas produk ke indeks saham, forex, cryptocurrency dan lain-lain.

Ringkasan

Strategi ini melaksanakan pemilihan saham panjang / pendek berdasarkan prinsip persilangan MA. Idea strategi adalah mudah dan jelas, digunakan secara meluas, sangat dapat disesuaikan, dan praktikal berharga. Tetapi ia juga mempunyai beberapa masalah penapisan yang tertinggal dan whipsaw. Pengoptimuman masa depan boleh memberi tumpuan kepada meningkatkan kehilangan berhenti, pengoptimuman parameter, menambah penapis dan lain-lain untuk menjadikannya lebih menguntungkan.


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

//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() =>  true

///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)

source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    res
    
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)

long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)

/////////////// Plotting /////////////// 
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)

Lebih lanjut