Strategi Crossover Purata Bergerak Cepat dan Perlahan

Penulis:ChaoZhang, Tarikh: 2024-02-27 16:06:30
Tag:

img

Ringkasan

Strategi crossover purata bergerak pantas dan perlahan adalah strategi sederhana berdasarkan purata bergerak. Ia menggunakan dua purata bergerak, satu pantas dan satu perlahan. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan dari bawah, ia pergi panjang, menunjukkan bahawa harga mungkin naik. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan dari atas, ia keluar dari posisinya, menunjukkan bahawa harga mungkin jatuh. Ini boleh berfungsi sebagai penunjuk untuk meramalkan tindakan harga masa depan.

Prinsip-prinsip

Strategi ini menggunakan dua purata bergerak, satu pantas dan satu perlahan. Secara khusus, panjang lalai adalah 25 tempoh untuk purata bergerak pantas dan 62 tempoh untuk yang perlahan. Strategi ini membolehkan pemilihan pelbagai jenis purata bergerak, termasuk SMA, EMA, WMA, RMA dan VWMA.

Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan dari bawah, ia menandakan bahawa harga jangka pendek telah mula menembusi harga jangka panjang, yang merupakan isyarat salib emas biasa, yang menunjukkan bahawa harga mungkin memasuki trend menaik. Strategi berjalan panjang pada titik ini. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan dari atas, ia menandakan bahawa harga jangka pendek telah mula memecah harga jangka panjang, yang merupakan isyarat salib kematian, yang menunjukkan bahawa harga mungkin memasuki trend menurun. Strategi keluar dari posisinya pada titik ini.

Dengan menggunakan persilangan purata bergerak pantas dan perlahan untuk menentukan trend dan arah harga, dan mengambil kedudukan panjang atau dekat yang sepadan, keuntungan dapat direalisasikan.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Idea ini mudah dan mudah difahami dan dilaksanakan
  2. Tetapan parameter yang fleksibel, dengan tempoh dan jenis purata bergerak yang boleh disesuaikan
  3. Penunjuk yang boleh dipercayai, tepat dalam menentukan trend harga menggunakan crossover purata bergerak
  4. Automasi direalisasikan, mengurangkan pengaruh faktor psikologi tanpa pertimbangan manual
  5. Boleh digunakan untuk pelbagai produk, boleh digunakan secara meluas untuk indeks, forex, cryptocurrency dll
  6. Mudah untuk mengoptimumkan, parameter boleh diselaraskan untuk mencari konfigurasi yang lebih baik
  7. Kebolehluasan yang kuat, boleh digabungkan dengan penunjuk atau strategi lain

Ringkasnya, dengan crossover purata bergerak cepat dan perlahan sebagai isyarat perdagangan teras, strategi ini mempunyai keupayaan yang kuat dalam menilai trend harga masa depan.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko berpotensi:

  1. Isyarat silang boleh memberikan isyarat palsu, dengan harga hanya mempunyai pembetulan jangka pendek dan bukannya pembalikan trend jangka panjang
  2. Pemilihan panjang purata bergerak pendek dan panjang yang tidak sesuai boleh menyebabkan perdagangan yang terlalu kerap atau kehilangan peluang yang baik
  3. Isyarat silang mungkin tidak penting semasa turun naik harga yang ganas
  4. Kos perdagangan yang tinggi boleh mengikis keuntungan jika isyarat silang mencetuskan perdagangan yang terlalu kerap
  5. Kebolehluasan yang kuat juga memperkenalkan risiko pengoptimuman berlebihan

Untuk mengawal dan mengurangkan risiko ini, kaedah berikut boleh digunakan:

  1. Gunakan penunjuk lain untuk menapis isyarat dan mengelakkan isyarat palsu e.g. penunjuk perbezaan harga-volume
  2. Sesuaikan parameter purata bergerak untuk mencari kombinasi optimum dan mengurangkan perdagangan yang salah
  3. Menangguhkan strategi sementara semasa perubahan pasaran yang ganas
  4. Relaksasi julat stop loss dengan sewajarnya untuk mengurangkan kerugian yang tidak perlu
  5. Melakukan ujian ketahanan di pelbagai produk untuk menilai risiko dan mengelakkan pengoptimuman berlebihan

Arahan pengoptimuman

Arah utama untuk mengoptimumkan strategi termasuk:

  1. Pilihan tempoh untuk purata bergerak pantas dan perlahan: parameter lalai mungkin tidak optimum, tempoh yang berbeza boleh diuji untuk mencari konfigurasi terbaik

  2. Pilihan jenis purata bergerak: pelbagai jenis disediakan dan boleh menguji mana yang paling sesuai untuk produk tertentu

  3. Gabungan dengan penunjuk atau strategi lain: boleh cuba menggabungkan dengan penunjuk turun naik, penunjuk harga jumlah atau trend mengikuti strategi untuk meningkatkan prestasi

  4. Pengoptimuman adaptif parameter: membenarkan tempoh purata bergerak untuk menyesuaikan secara automatik berdasarkan turun naik pasaran dan kecairan untuk meningkatkan kestabilan

  5. Bantuan model AI: gunakan algoritma pembelajaran mesin untuk menganalisis sejumlah besar data dan mencari peraturan perdagangan yang optimum secara automatik

Melalui kaedah pengoptimuman ini, peningkatan lanjut dalam keuntungan dan kestabilan strategi dapat dijangka.

Ringkasan

Ringkasnya, strategi crossover purata bergerak pantas dan perlahan adalah strategi yang sangat praktikal. Ia menangkap corak perubahan harga dalam jangka masa yang berbeza, menggunakan crossover purata bergerak pantass purata bergerak perlahan untuk menentukan trend dan arah harga masa depan yang mungkin. Idea strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan, menawarkan parameter yang boleh disesuaikan yang fleksibel, dan juga mempunyai kebolehpercayaan yang tinggi, tahap automasi, penerapan yang luas dan pelebaran yang kuat. Sudah tentu terdapat risiko isyarat palsu, yang memerlukan kombinasi dengan penunjuk lain untuk mencapai kesan maksimum. Dengan ujian dan pengoptimuman berterusan, strategi ini berpotensi untuk mencapai keuntungan yang baik dan stabil dalam perdagangan langsung.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

initial_balance = 100
strategy(title='Fast v Slow Moving Averages Strategy', shorttitle = 'Fast v Slow', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)

//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------

fastBars = input.int(25, "Fast moving average length", minval=1)
slowBars = input.int(62, "Slow moving average length", minval=1)
strategy = input.string("EMA", "MA type", options = ["EMA", "VWMA", "SMA", "RMA", "WMA"])

redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')

startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')

endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')

//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

inDateRange = true

maMomentum = switch strategy
    "EMA" => (ta.ema(close, fastBars) >= ta.ema(close, slowBars)) ? 1 : -1
    "SMA" => (ta.sma(close, fastBars) >= ta.sma(close, slowBars)) ? 1 : -1
    "RMA" => (ta.rma(close, fastBars) >= ta.rma(close, slowBars)) ? 1 : -1
    "WMA" => (ta.wma(close, fastBars) >= ta.wma(close, slowBars)) ? 1 : -1
    "VWMA" => (ta.vwma(close, fastBars) >= ta.vwma(close, slowBars)) ? 1 : -1
    =>
        runtime.error("No matching MA type found.")
        float(na)

fastMA = switch strategy
    "EMA" => ta.ema(close, fastBars)
    "SMA" => ta.sma(close, fastBars)
    "RMA" => ta.rma(close, fastBars)
    "WMA" => ta.wma(close, fastBars)
    "VWMA" => ta.vwma(close, fastBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)
        
slowMA = switch strategy
    "EMA" => ta.ema(close, slowBars)
    "SMA" => ta.sma(close, slowBars)
    "RMA" => ta.rma(close, slowBars)
    "WMA" => ta.wma(close, slowBars)
    "VWMA" => ta.vwma(close, slowBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)

//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(maMomentum, 0)
    if inDateRange
        strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
    if inDateRange
        strategy.close('long')

//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(series = maOn == "On" ? fastMA : na, title = "Fast Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
plot(series = maOn == "On" ? slowMA : na, title = "Slow Moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)

Lebih lanjut