Strategi pembalikan purata bergerak


Tarikh penciptaan: 2023-12-21 15:45:23 Akhirnya diubah suai: 2023-12-21 15:45:23
Salin: 1 Bilangan klik: 733
1
fokus pada
1623
Pengikut

Strategi pembalikan purata bergerak

Strategi ini dinamakan sebagai Mean Reversion Reverse Strategy Based on Moving Average, idea utamanya adalah membeli selepas jatuh ke bawah garis rata-rata kritikal, dan berhenti setelah mencapai keuntungan sasaran yang ditetapkan.

Prinsip utama strategi ini adalah menggunakan pulangan garis purata jangka pendek untuk menangkap peluang rebound dalam keadaan penutupan. Khususnya, apabila harga jatuh ke bawah rata-rata jangka panjang (seperti garis 20 hari, garis 50 hari, dan lain-lain) selepas menunjukkan tanda-tanda penurunan yang kuat, harga sering menghasilkan rebound tertentu kerana ciri-ciri reversi mean pergerakan pasaran.

Logik pembelian khusus strategi ini adalah: Beli satu tangan selepas harga jatuh ke bawah garis 20 hari, pasang satu tangan selepas jatuh ke bawah garis 50 hari, terus pasang satu tangan selepas jatuh ke bawah garis 100 hari, turun ke bawah garis 200 hari maksimum pasang satu tangan, lakukan 4 tangan tambahan. Setelah mencapai sasaran berhenti yang telah ditetapkan.

Analisis kelebihan

  1. Menggunakan ciri-ciri pulangan rata-rata untuk mengenal pasti peluang rebound jangka pendek
  2. Membina gudang secara bersiri, mengurangkan risiko satu titik
  3. Tetapkan keadaan berhenti untuk mengunci keuntungan
  4. Penapisan menggunakan harga pembukaan dan harga terendah sebelum ini untuk mengelakkan penembusan palsu

Analisis risiko

  1. Jika anda memegangnya untuk jangka masa yang panjang, anda mungkin menghadapi risiko terbalik. Kerugian akan bertambah jika harga terus menurun.
  2. Isyarat garis rata mungkin memberi isyarat yang salah dan menyebabkan kerugian
  3. Target penangguhan yang ditetapkan mungkin tidak dapat dicapai, tidak dapat sepenuhnya atau sebahagiannya

Arah pengoptimuman

  1. Pendapatan dan kestabilan boleh diuji di bawah pelbagai parameter
  2. Anda boleh mempertimbangkan untuk membelinya dalam kombinasi dengan penunjuk lain seperti MACD, KD dan sebagainya.
  3. Anda boleh memilih kitaran garis rata yang sesuai dengan gaya dagangan anda berdasarkan ciri-ciri yang berbeza
  4. Algoritma pembelajaran mesin boleh diperkenalkan untuk parameter pengoptimuman dinamik

ringkaskan

Strategi ini secara keseluruhannya adalah strategi perdagangan garis lurus yang lebih klasik dan umum. Ia menggunakan ciri-ciri smooting garis lurus dengan betul, sambil menggabungkan beberapa garis lurus untuk mengenal pasti masa membeli dalam jangka pendek. Ia mengawal risiko dengan membangunkan simpanan secara berturut-turut dan berhenti tepat pada masanya. Tetapi tindak balasnya terhadap peristiwa kejutan pasaran seperti berita dasar utama mungkin lebih pasif, yang merupakan arah yang dapat terus dioptimumkan. Secara keseluruhannya, dengan peningkatan yang sesuai dalam pengoptimuman parameter dan kawalan risiko, strategi ini dapat memperoleh keuntungan tambahan yang stabil.

Kod sumber strategi
/*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)