Strategi pembalikan purata berdasarkan purata bergerak

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

img

Strategi ini dinamakan Mean Reversion Reverse Strategy Based on Moving Average. Idea utama adalah untuk membeli apabila harga memecahkan purata bergerak utama dan mengambil keuntungan apabila mencapai sasaran yang telah ditetapkan.

Prinsip utama strategi ini adalah untuk menangkap peluang kemunduran di pasaran terikat julat dengan menggunakan pembalikan purata bergerak jangka pendek. Khususnya, apabila harga menembusi purata bergerak kitaran yang lebih lama (seperti MA 20 hari dan 50 hari) dan menunjukkan tanda-tanda overselling yang kuat, harga cenderung untuk bangkit semula ke tahap tertentu kerana ciri pembalikan purata turun naik pasaran. Pada masa ini, jika purata bergerak kitaran yang lebih pendek (seperti MA 10 hari) menunjukkan isyarat pembalikan ke atas, ia akan menjadi masa yang baik untuk membeli. Dalam strategi ini, ia akan membeli apabila harga ditutup di bawah MA 20 hari sementara di atas MA 50 hari, untuk menangkap kemunduran dengan pembalikan MA jangka pendek.

Logik kemasukan khusus adalah: Beli 1 lot apabila harga menembusi MA 20 hari, tambah 1 lot apabila menembusi MA 50 hari, terus tambah 1 lot apabila menembusi MA 100 hari, dan tambah sehingga 1 lot apabila menembusi MA 200 hari, untuk maksimum 4 lot. Ambil keuntungan selepas mencapai sasaran yang telah ditetapkan. Ia juga menetapkan masa dan syarat hentian kerugian.

Analisis Kelebihan

  1. Mengenali peluang pemulihan jangka pendek dengan berkesan dengan menggunakan ciri pembalikan purata bergerak
  2. Mengurangkan risiko titik tunggal dengan perintah piramid
  3. Kunci keuntungan dengan menetapkan sasaran mengambil keuntungan
  4. Elakkan pecah palsu dengan menggunakan harga terbuka dan penapis harga rendah sebelumnya

Analisis Risiko

  1. Mungkin menghadapi risiko pembalikan dalam tempoh memegang yang panjang.
  2. Isyarat MA boleh memberikan isyarat palsu, yang membawa kepada kerugian
  3. Mungkin gagal mengambil keuntungan sepenuhnya atau sebahagiannya jika sasaran keuntungan tidak dicapai

Arahan pengoptimuman

  1. Uji keuntungan dan kestabilan di bawah tetapan parameter yang berbeza
  2. Pertimbangkan untuk menggabungkan penunjuk lain seperti MACD, KD untuk menentukan entri
  3. Pilih tempoh MA yang sesuai berdasarkan ciri-ciri produk yang berbeza
  4. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik

Ringkasan

Secara amnya, ini adalah strategi perdagangan MA klasik dan sejagat. Ia dengan betul menggunakan ciri pelunturan MA, digabungkan dengan beberapa MA untuk mengenal pasti peluang pembelian jangka pendek. Ia mengawal risiko dengan memiramkan pesanan dan mengambil keuntungan tepat pada masanya. Tetapi tindak balasnya terhadap peristiwa pasaran seperti berita dasar yang penting mungkin lebih pasif. Ini adalah sesuatu yang boleh dioptimumkan lebih lanjut. Secara keseluruhan, dengan peningkatan yang sesuai dalam pengoptimuman parameter dan kawalan risiko, strategi ini dapat memperoleh pulangan berlebihan 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 lanjut