EMA Crossover untuk Long Line Quant Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-20 15:22:12
Tag:

img

Ringkasan

Strategi ini menggunakan corak silang antara purata bergerak (MA) dari bingkai masa yang berbeza dan penunjuk RSI untuk menentukan masa kemasukan dan keluar di pasaran, bertujuan untuk memegang jangka panjang.

Logika Strategi

Mekanisme teras strategi ini adalah untuk mengenal pasti titik masuk dan keluar melalui salib emas dan salib kematian garis EMA. Ia juga menggabungkan penunjuk RSI untuk menentukan keadaan overbought dan oversold.

Khususnya, logik isyarat beli memeriksa perkara berikut: Harga melintasi di bawah EMA20 dan di atas EMA50, membentuk salib emas, yang membantu mengenal pasti pembalikan trend dengan lebih tepat berbanding dengan sistem EMA tunggal. Kriteria tambahan mengenai harga penutupan yang lebih rendah daripada harga terbuka dan rendah hari sebelumnya lebih banyak menapis pecah palsu.

Kriteria pembelian di atas dikonfigurasikan dengan pelbagai parameter untuk membentuk 4 peraturan pembelian, yang sepadan dengan tempoh dan kuantiti EMA yang berbeza.

Untuk keluar, strategi ini menyemak silang kematian di atas EMA10, dengan isyarat RSI yang terlalu banyak dibeli; atau silang kematian di bawah EMA10, dengan isyarat RSI yang terlalu banyak dijual.

Analisis Kelebihan

Kemahiran terbesar strategi ini terletak pada keberkesanannya dalam mengenal pasti titik pembalikan trend dengan persilangan EMA, yang membolehkan trend mengikuti. Berbanding dengan sistem EMA tunggal, persilangan EMA berganda membantu menghapuskan isyarat palsu. Di samping itu, penggunaan RSI menambah pengesahan sebelum memasuki zon overbought / oversold, lebih mengurangkan risiko perdagangan.

Satu lagi kelebihan adalah pelaksanaan piramid dan penurunan kos purata. Pembelian tranche sedemikian mengedarkan kuantiti pada tahap harga yang berbeza, memastikan keuntungan maksimum apabila trend dilanjutkan. Ia juga mempelbagaikan risiko dari satu kedudukan masuk yang besar.

Analisis Risiko

Risiko utama yang berkaitan dengan strategi ini termasuk:

  1. Kemunduran sistem EMA menyebabkan ia lambat bertindak balas terhadap perubahan harga tiba-tiba, tidak dapat keluar dari kedudukan tepat pada masanya.

  2. Kekurangan sekatan pada jangka masa masuk pembelian boleh menyebabkan masuk awal, terjebak dalam penyatuan pasaran.

  3. Perintah beli piramid boleh mengakibatkan kedudukan yang terlalu besar, mewujudkan kerentanan terhadap risiko pecah satu arah.

Peluang Peningkatan

Strategi ini boleh dioptimumkan lagi dalam bidang berikut:

  1. Memasukkan peraturan stop loss untuk mengurangkan kerugian apabila tahap sokongan utama dilanggar pada sisi penurunan, mengawal risiko penurunan.

  2. Tambah modul pengesahan dagangan untuk memeriksa arah trend utama, memasuki dagangan hanya apabila trend keseluruhan menunjuk ke atas, mengelakkan risiko countertrend.

  3. Tetapkan sekatan zon beli yang lebih ketat untuk mengelakkan entri piramid awal sebelum pengesahan.

  4. Menggunakan algoritma pembelajaran mesin dengan analisis pelbagai faktor untuk meningkatkan ketepatan kemasukan dan kadar kemenangan.

Kesimpulan

Ringkasnya, artikel ini menggambarkan secara terperinci strategi kuantitatif jangka panjang yang menggunakan silang EMA berganda dan penunjuk RSI untuk isyarat kemasukan dan keluar, disokong oleh pembinaan kedudukan tranche untuk memaksimumkan kecekapan. Logik dan parameter boleh diselaraskan untuk indeks dan stok di seluruh pasaran, menjadikannya strategi serba boleh untuk trend jangka panjang. Analisis risiko dan peluang peningkatan juga menyediakan rujukan untuk pengoptimuman lanjut. Oleh kerana strategi menjadi lebih canggih, saya percaya ia akan berfungsi sebagai sistem yang kukuh untuk memegang jangka panjang dalam persekitaran perdagangan langsung.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true)

// Input parameters
qt1 = input.int(1, title="Quantity 1", minval=1)
qt2 = input.int(2, title="Quantity 2", minval=1)
qt3 = input.int(3, title="Quantity 3", minval=1)
qt4 = input.int(4, 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)

// RSI(14) condition
rsi_threshold = 65
rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold
rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold
rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold

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

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

// Pyramiding setting
pyramiding = input.int(1, 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 rsi_crossed_above_70_two_days_ago) 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 rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2]

// 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