
Strategi perdagangan rata-rata bergerak silang emas (Golden Cross Moving Average Trading Strategy) adalah strategi perdagangan kuantitatif yang lebih klasik. Strategi ini menggunakan purata bergerak dari pelbagai kitaran untuk menilai trend pasaran yang lebih banyak. Apabila bergerak rata-rata jangka pendek melintasi rata-rata bergerak jangka panjang, ia dianggap sebagai isyarat membeli; apabila bergerak rata-rata jangka pendek melintasi rata-rata bergerak jangka panjang, ia dianggap sebagai isyarat menjual.
Strategi ini berdasarkan purata bergerak sederhana (SMA) pada tiga tempoh yang berbeza: 50 hari, 100 hari dan 200 hari. Logik perdagangan khusus adalah seperti berikut:
Isyarat kemasukan: Apabila anda memakai purata bergerak 100 hari pada purata bergerak 50 hari, lakukan kemasukan tambahan.
Isyarat Keluar: Keluar apabila 50 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 200 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 200 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 200 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 200 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 200 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari bergerak di bawah purata 100 hari
Hentikan Henti: Tetapkan Hentikan Bergerak dan Hentikan Tetap.
Strategi ini memanfaatkan ciri-ciri rata-rata bergerak yang dapat menilai harga rata-rata pasaran dengan berkesan, apabila rata-rata jangka pendek di atas rata-rata jangka panjang, ia dianggap sebagai isyarat bahawa pasaran melangkah ke arah tren naik, dan oleh itu melakukan lebih banyak; apabila rata-rata jangka pendek di bawah rata-rata jangka panjang, ia dianggap sebagai saluran turun ke pasaran, dan oleh itu keluar. Dengan cara ini, ia dapat menangkap tren pasaran dengan berkesan.
Operasi mudah dan mudah dilaksanakan. Strategi ini boleh dibina dengan hanya menggunakan purata bergerak dari tiga tempoh yang berbeza.
Ia mempunyai kestabilan yang kuat. Rata-rata bergerak sendiri mempunyai fungsi penghapusan bising, yang dapat menghapuskan kesan pasaran yang berfluktuasi secara rawak terhadap perdagangan, menjadikan isyarat lebih stabil dan boleh dipercayai.
Mudah untuk menguasai trend besar. Rata-rata bergerak dapat mencerminkan dengan berkesan trend perubahan harga purata pasaran, dan menilai perubahan besar dalam pasaran dengan menyeberangi garis jangka masa yang panjang dan pendek.
Tingkat penyesuaian yang tinggi. Anda boleh menentukan sendiri kombinasi kitaran purata bergerak, mencapai tahap kawalan risiko yang berbeza.
Mungkin menghasilkan lebih banyak isyarat palsu. Apabila purata bergerak jangka pendek dan jangka panjang terlalu dekat, mungkin terdapat persilangan yang kerap, menghasilkan banyak isyarat tidak sah.
Tidak dapat bertindak balas dengan cepat terhadap peristiwa yang mengejutkan. Rata-rata bergerak bertindak balas dengan perlahan terhadap perubahan harga, tidak dapat bertindak balas secara langsung terhadap berita kejutan dan peristiwa utama di pasaran.
Tidak dapat mengambil keuntungan dari turun naik kecil di pasaran. Sifat tidak bising rata-rata bergerak juga bermaksud tidak dapat menangkap turun naik kecil di pasaran untuk mengambil keuntungan.
Tetapan parameter agak subjektif. Pilihan kitaran purata bergerak agak subjektif, perlu menentukan parameter terbaik mengikut pasaran yang berbeza.
Menambah syarat penapisan untuk mengelakkan terlalu banyak isyarat palsu. Sebagai contoh, setkan julat pergerakan harga sebagai penapis, dan isyarat perdagangan hanya akan dihasilkan apabila ia menembusi julat tertentu.
Gabungan dengan penunjuk lain. Sebagai contoh, penggunaan gabungan dengan penunjuk kadar lonjakan, penunjuk jumlah pesanan, dan sebagainya dapat meningkatkan ketepatan isyarat.
Tambah modul pengoptimuman penyesuaian. Mengoptimumkan secara dinamik parameter kitaran purata bergerak melalui teknologi seperti pembelajaran mesin, supaya ia dapat menyesuaikan diri dengan perubahan persekitaran pasaran luaran.
Gabungan dengan model pembelajaran mendalam. Menggunakan model pembelajaran mendalam yang lebih maju untuk menggantikan purata bergerak, dengan keupayaan pengambilan dan pemodelan ciri yang lebih kuat.
Strategi perdagangan garis rata silang emas adalah strategi mengikuti trend yang agak tipikal. Ia mencerminkan trend perubahan purata harga pasaran, mudah digunakan, sesuai untuk pelajar pemula. Pada masa yang sama, strategi ini juga mempunyai kelemahan tertentu, yang dapat dioptimumkan dari pelbagai aspek seperti meningkatkan kualiti isyarat, kombinasi dengan indikator teknikal lain, memperkenalkan mekanisme penyesuaian diri, agar strategi menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks. Secara keseluruhan, strategi ini mempunyai nilai rujukan dan pembelajaran yang tinggi.
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1m
basePeriod: 1m
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/
// © CJDeegan
//@version=4
strategy(title = "[LIVE] Golden Cross", overlay=true)
// ------------Functions------------
//Percent to Decimal Conversion
perToDec(a) => a * 0.01
//Price Difference to Tick
diffToTick(a,b) => (a - b) / syminfo.mintick
// ------------Strategy Inputs------------
takeProfitInput = input(300, "Take Profit Price (% Gain)")
stopLossInput = input(25, "Stop Loss (% Loss)")
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2018, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
defval=1, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
defval=2031, minval=1800, maxval=2100)
inDateRange = (time >= timestamp(syminfo.timezone, startYear,
startMonth, startDate, 0, 0)) and
(time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
// ------------Populate Indicators------------
//EMA
sma50 = sma(close,50)
sma100 = sma(close,100)
sma200 = sma(close,200)
// ------------Entry Logic------------
//Guards
entryGuard = true
//Triggers
entryTrigger = crossover(sma50,sma100)
//Conditions
entryCondition = entryGuard and entryTrigger
//Calculations
//Execution
if (inDateRange and entryCondition)
strategy.entry("Long", strategy.long, when = entryCondition, comment = "Entry")
//------------Exit Logic------------
//Guards
//Triggers
exitTrigger = crossunder(sma50,sma100) or close < sma100 or crossunder(sma100,sma200)
//Conditions
exitCondition = exitTrigger
//Calculations
//Take Profit
takeProfitPrice = strategy.position_avg_price + (strategy.position_avg_price * perToDec(takeProfitInput))
//Take Profit Ticks
takeProfitTicks = diffToTick(takeProfitPrice, strategy.position_avg_price)
//StopLoss
stopLossPrice = strategy.position_avg_price - (strategy.position_avg_price * perToDec(stopLossInput))
//Execution
if (inDateRange)
strategy.close("Long", when = exitCondition, comment = "Sell Trigger")
strategy.exit("Exit", "Long", comment="Stop", profit=takeProfitTicks, stop=stopLossPrice)
//Plots
plot(sma50, "SMA 50", color = color.blue)
plot(sma100, "SMA 100", color = color.green)
plot(sma200, "SMA 200", color = color.yellow)
entry = plot(strategy.position_size <= 0 ? na : strategy.position_avg_price, "Entry Price", color = color.yellow, style = plot.style_linebr)
profit = plot(strategy.position_size <= 0 ? na : takeProfitPrice, "Take Profit (Price)", color = color.green, style = plot.style_linebr)
stop = plot(strategy.position_size <= 0 ? na : stopLossPrice, "Stop Loss", color = color.red, style = plot.style_linebr)
fill(entry,profit, color=color.green)
fill(entry,stop, color=color.red)