
Strategi ini adalah strategi perdagangan berasaskan purata bergerak. Ia menggunakan purata bergerak 45 hari sebagai petunjuk teknikal utama untuk membeli dan menjual berdasarkan isyarat harga yang melanggar purata bergerak.
Apabila kenaikan harga menembusi 45 hari purata bergerak, menghasilkan isyarat beli; apabila memegang kedudukan 8 hari, menghasilkan isyarat jual. Selepas itu, jika harga naik lagi menembusi 45 hari purata bergerak, akan menghasilkan isyarat beli lagi.
Ini adalah asas strategi:
Ini adalah logik perdagangan utama dalam strategi ini.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Kaedah pencegahan:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Mengoptimumkan parameter purata bergerak untuk mencari kombinasi parameter terbaik. Anda boleh menguji parameter bilangan hari yang berbeza seperti 15 hari, 30 hari, 60 hari.
Optimumkan tempoh pegangan, cari hari pegangan yang optimum. Anda boleh menguji tempoh pegangan yang berbeza, seperti 5 hari, 10 hari, 15 hari.
Tambahlah hentian bergerak untuk mengesan trend dan mengawal risiko. Sebagai contoh, hentian trialing atau hentian ATR.
Penapisan untuk menambah petunjuk lain, seperti MACD, KDJ, dan lain-lain, untuk mengurangkan isyarat palsu.
Optimumkan syarat kemasukan semula untuk mengelakkan perdagangan yang terlalu kerap.
Uji keserasian pasaran dan varieti. Parameter perlu dioptimumkan untuk pasaran yang berbeza.
Strategi penyambungan rata-rata bergerak secara keseluruhan adalah strategi pengesanan trend yang mudah dan praktikal. Ia menggunakan fungsi pengesanan trend rata-rata bergerak untuk menghasilkan isyarat perdagangan dengan harga yang pecah. Kelebihannya adalah mudah untuk dicapai, trade-off adalah kemungkinan terdapat beberapa kesilapan.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)
// Calculate the 45-day moving average
ma_length = 45
ma = ta.sma(close, ma_length)
// Track position entry and entry bar
var bool in_long_position = na
var int entry_bar = na
var int exit_bar = na
// Entry condition: Close price crosses above the 45-day moving average to enter the position
if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] < ma[1])
in_long_position := true
entry_bar := bar_index
// Exit condition: Close the position after holding for 8 trading days
if (in_long_position and bar_index - entry_bar >= 8)
in_long_position := false
exit_bar := bar_index
// Re-entry condition: Wait for price to cross over the 45-day moving average again
if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] > ma[1] and (na(exit_bar) or bar_index - exit_bar >= 8))
in_long_position := true
entry_bar := bar_index
// Execute long entry and exit
if (in_long_position)
strategy.entry("Long", strategy.long)
if (not in_long_position)
strategy.close("Long")