Strategi perdagangan optimasi crossover rata-rata bergerak


Tanggal Pembuatan: 2023-12-19 13:37:33 Akhirnya memodifikasi: 2023-12-19 13:37:33
menyalin: 0 Jumlah klik: 683
1
fokus pada
1621
Pengikut

Strategi perdagangan optimasi crossover rata-rata bergerak

Ringkasan

Strategi ini mengoptimalkan strategi crossover rata-rata bergerak konvensional, menetapkan tiga rata-rata bergerak dengan periode yang berbeda, membangun bentuk garpu emas dengan rata-rata bergerak 9 periode, 50 periode dan 100 periode, dan membentuk sinyal beli garpu emas dengan melintasi garpu emas di garis rata-rata tengah dalam garis rata-rata tengah dalam kondisi tren naik. Strategi ini disebut sebagai strategi perdagangan optimasi garpu emas crossover rata-rata bergerak.

Prinsip Strategi

Strategi ini menggunakan tiga moving average 9 periode, 50 periode dan 100 periode. Di antaranya, 9 periode moving average adalah rata-rata jangka pendek, 50 periode moving average adalah rata-rata lini tengah, dan 100 periode moving average adalah rata-rata jangka panjang.

Analisis Keunggulan

Dibandingkan dengan strategi crossover rata-rata bergerak ganda konvensional, strategi ini menambahkan kondisi untuk menilai tren jangka menengah dan panjang sebelum menghasilkan sinyal perdagangan, yang dapat secara efektif menyaring beberapa sinyal yang tidak efektif. Jika tren jangka panjang tidak jelas, strategi ini tidak akan menghasilkan sinyal, dan dapat dihindari.

Analisis risiko

Strategi ini memerlukan penyesuaian kombinasi periodik rata-rata ketika mengatur parameter, dan kombinasi periodik yang berbeda akan berdampak pada efek strategi. Jika pengaturan parameter periodik tidak tepat, akan menghadapi risiko menghasilkan terlalu banyak sinyal palsu. Selain itu, pedagang perlu waspada terhadap potensi risiko sistemik, dan menghentikan kerugian tepat waktu untuk menghindari risiko.

Arah optimasi

Anda dapat mempertimbangkan untuk menetapkan persyaratan masuk yang lebih ketat dalam kombinasi dengan indikator lain untuk membantu menilai tren pasar, seperti MACD, BOLL, dll., Atau untuk membangun rata-rata bergerak yang beradaptasi dengan indikator volatilitas, sehingga parameter dapat disesuaikan secara otomatis sesuai dengan lingkungan pasar, untuk lebih mengoptimalkan strategi.

Meringkaskan

Strategi ini didasarkan pada crossover rata-rata bergerak ganda konvensional, menambahkan penilaian rata-rata jangka panjang dan kondisi filter, yang efektif memfilter sinyal palsu, cocok untuk menangkap tren jangka pendek dan menengah, merupakan strategi pelacakan tren yang sederhana dan praktis. Namun, pedagang masih perlu memperhatikan optimasi parameter dan risiko sistematis, dan menyusun strategi manajemen dana scient.

Kode Sumber Strategi
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)