Strategi penyeberangan rata-rata bergerak

Penulis:ChaoZhang, Tanggal: 2024-02-06 15:02:33
Tag:

img

Gambaran umum

Strategi ini menggunakan tiga rata-rata bergerak dari periode yang berbeda untuk mengidentifikasi arah tren pasar. Ini memasuki posisi ketika tiga rata-rata bergerak bergerak ke arah yang sama. Pada saat yang sama, dikombinasikan dengan harga tertinggi atau terendah dari N lilin terbaru, itu mengatur stop loss dan mengambil keuntungan.

Logika Strategi

  1. Menghitung jangka panjang, jangka menengah dan jangka pendek tiga rata-rata bergerak. Pengguna dapat mengatur periode sendiri. Nilai default adalah 20, 10 dan 5.

  2. Bandingkan arah tiga rata-rata bergerak. Ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata jangka menengah, dan jangka menengah melintasi di atas jangka panjang, itu dinilai sebagai pasar bull. Ketika jangka pendek melintasi di bawah jangka menengah, dan jangka menengah melintasi di bawah jangka panjang, itu dinilai sebagai pasar bear.

  3. Dalam pasar bull, jika harga menembus harga tertinggi dari N lilin terbaru, pergi panjang; di pasar bear, jika harga menembus harga terendah dari N lilin terbaru, pergi pendek.

  4. Setelah masuk ke posisi, atur stop loss dan ambil keuntungan. Stop loss di pasar bull ditetapkan sebagai harga terendah dari N candles terbaru, dan di pasar bear ditetapkan sebagai harga tertinggi.

Analisis Keuntungan

Strategi ini menggabungkan indikator rata-rata bergerak dan grafik candlestick, yang dapat lebih menentukan tren pasar. Pada saat yang sama, pengaturan stop loss dan take profit wajar, yang kondusif untuk menghindari kerugian yang lebih besar.

Di bandingkan dengan moving average tunggal dan indikator lainnya, strategi ini menggunakan tiga moving average untuk menilai tren pasar dengan lebih andal. Sementara itu, memasuki posisi ketika memecahkan harga tertinggi atau terendah dari N lilin terbaru adalah strategi breakout yang umum. Secara keseluruhan, ide strategi jelas dan mudah dilaksanakan.

Analisis Risiko

Risiko potensial utama dari strategi ini adalah:

  1. Kemungkinan penilaian yang salah pada arah tiga rata-rata bergerak Jika rata-rata bergerak jangka menengah-pendek menyebabkan sinyal yang salah, kerugian yang tidak perlu dapat disebabkan.

  2. Pemilihan waktu yang salah untuk masuk ke posisi, yang mudah terjebak.

  3. Jarak stop loss diatur terlalu kecil. Memperluas jarak stop loss membantu untuk memungkinkan lebih banyak ruang untuk harga.

Arahan Optimasi

Arah untuk mengoptimalkan strategi ini meliputi:

  1. Tambahkan indikator lain untuk penyaringan untuk memastikan keandalan sinyal rata-rata bergerak.

  2. Mengoptimalkan periode rata-rata bergerak untuk lebih menyesuaikan mereka dengan produk yang berbeda.

  3. Tambahkan algoritma pembelajaran mesin untuk mencapai optimasi parameter otomatis.

  4. Uji efektivitas strategi ini pada data frekuensi tinggi.

Ringkasan

Strategi ini relatif sederhana dan universal. Ide ini jelas dengan kelayakan yang kuat. Sebagai contoh sistem crossover rata-rata bergerak, ini adalah pilihan umum bagi pemula. Melalui optimasi yang tepat, sistem dapat diterapkan pada lebih banyak produk dan kerangka waktu untuk mendapatkan pengembalian yang stabil.


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

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © hobbiecode

//@version=5
strategy("Cross Breakout - Hobbiecode", shorttitle="Cross - HOBBIE", overlay=true)

// User-defined input for moving averages
long_period = input(20, title="Long Period")
medium_period =  input(10, title = "Medium Period")
short_period = input(5, title="Short Period")
type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"])
candles_back = input(10, title = "Candles Back")
bars_valid = input(3, title = "Bars to Exit")

// Calculating moving averages
long_ma = 0.0
medium_ma = 0.0
short_ma = 0.0

if type_ma == "SMA"
    long_ma := ta.sma(close, long_period)
    medium_ma := ta.sma(close, medium_period)
    short_ma := ta.sma(close, short_period)
else
    long_ma := ta.ema(close, long_period)
    medium_ma := ta.ema(close, medium_period)
    short_ma := ta.ema(close, short_period)

// Plot moving averages
plot(long_ma, title="Long Moving Average", color=color.red)
plot(medium_ma, title = "Medium Moving Average", color = color.yellow)
plot(short_ma, title="Short Moving Average", color=color.green)

// Check last min/max
last_min = ta.lowest(candles_back)
last_max = ta.highest(candles_back)

// Strategy logic for crossing of moving averages
longCondition = short_ma > medium_ma and medium_ma > long_ma and high == last_max
shortCondition = short_ma < medium_ma and medium_ma < long_ma and low == last_min

longCondition_entry = longCondition and strategy.position_size == 0
shortCondition_entry = shortCondition and strategy.position_size == 0

// Check last min/max for operation
last_min_op = ta.lowest(candles_back)[1]
last_max_op = ta.highest(candles_back)[1]

// Plot lines
var line r1Line = na

// Entry orders
// if (longCondition)
//     from_line = chart.point.now(high)
//     to_line = chart.point.from_index(bar_index + candles_back, high)
//     r1Line := line.new(from_line, to_line, color = color.green, width = 2)

if longCondition_entry and ta.crossover(close,last_max_op)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=low)

// if (shortCondition)
//     from_line = chart.point.now(low)
//     to_line = chart.point.from_index(bar_index + candles_back, low)
//     r1Line := line.new(from_line, to_line, color = color.red, width = 2)

if shortCondition_entry and ta.crossunder(close,last_min_op)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry="Short", stop=high)

if ta.barssince(longCondition_entry) >= bars_valid
    strategy.close("Long")

if ta.barssince(shortCondition_entry) >= bars_valid
    strategy.close("Short")

Lebih banyak