Strategi pembalikan rata-rata berdasarkan rata-rata bergerak

Penulis:ChaoZhang, Tanggal: 2023-12-21 15:45:23
Tag:

img

Strategi ini disebut Mean Reversion Reverse Strategy Based on Moving Average.

Prinsip utama dari strategi ini adalah untuk menangkap peluang rebound di pasar yang terikat kisaran dengan menggunakan reversi rata-rata bergerak jangka pendek. Secara khusus, ketika harga menembus rata-rata bergerak siklus yang lebih lama (seperti MA 20 hari dan 50 hari) dan menunjukkan tanda-tanda overselling yang kuat, harga cenderung bangkit kembali sampai batas tertentu karena karakteristik reversi rata-rata fluktuasi pasar. Pada saat ini, jika rata-rata bergerak siklus yang lebih pendek (seperti MA 10 hari) menunjukkan sinyal pembalikan ke atas, itu akan menjadi waktu yang tepat untuk membeli. Dalam strategi ini, ia akan membeli ketika harga tutup di bawah MA 20 hari sementara di atas MA 50 hari, untuk menangkap rebound dengan pembalikan MA jangka pendek.

Logika entri spesifik adalah: Beli 1 lot ketika harga menembus MA 20 hari, tambahkan 1 lot saat menembus MA 50 hari, terus tambahkan 1 lot saat menembus MA 100 hari, dan tambahkan hingga 1 lot saat menembus MA 200 hari, untuk maksimal 4 lot. Ambil keuntungan setelah mencapai target yang telah ditetapkan sebelumnya. Ini juga menetapkan waktu dan kondisi stop loss.

Analisis Keuntungan

  1. Mengidentifikasi peluang rebound jangka pendek secara efektif dengan menggunakan karakteristik pembalikan rata-rata bergerak
  2. Mengurangi risiko titik tunggal dengan urutan piramida
  3. Mengunci keuntungan dengan menetapkan target mengambil keuntungan
  4. Hindari penyebaran palsu dengan menggunakan harga terbuka dan filter harga rendah sebelumnya

Analisis Risiko

  1. Mungkin menghadapi risiko pembalikan dalam periode kepemilikan yang panjang.
  2. Sinyal MA dapat memberikan sinyal palsu, menyebabkan kerugian
  3. Dapat gagal sepenuhnya atau sebagian mengambil keuntungan jika target keuntungan tidak tercapai

Arahan Optimasi

  1. Uji profitabilitas dan stabilitas di bawah pengaturan parameter yang berbeda
  2. Pertimbangkan untuk menggabungkan indikator lain seperti MACD, KD untuk memutuskan entri
  3. Pilih periode MA yang tepat berdasarkan karakteristik produk yang berbeda
  4. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis

Ringkasan

Secara umum, ini adalah strategi perdagangan MA klasik dan universal. Ini dengan benar memanfaatkan fitur pelunturan MA, dikombinasikan dengan beberapa MA untuk mengidentifikasi peluang pembelian jangka pendek. Ini mengendalikan risiko dengan piramida pesanan dan mengambil keuntungan tepat waktu. Tetapi responsnya terhadap peristiwa pasar seperti berita kebijakan yang signifikan mungkin lebih pasif. Ini adalah sesuatu yang dapat dioptimalkan lebih lanjut. Secara keseluruhan, dengan peningkatan yang tepat dalam optimasi parameter dan kontrol risiko, strategi ini dapat memperoleh hasil kelebihan yang stabil.


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Lebih banyak