Strategi Penarikan EMA Berganda

Penulis:ChaoZhang, Tarikh: 2023-12-07 15:50:13
Tag:

img

Ringkasan

Strategi ini menentukan arah panjang/pendek dengan menilai arah purata bergerak eksponensial (EMA). Ia pergi lama apabila terdapat corak engulfing bullish dan jumlah dagangan yang diperbesar. Ia menutup kedudukan apabila arah EMA terbalik atau corak engulfing bearish berlaku.

Logika Strategi

  1. Gunakan dua EMA dengan parameter yang berbeza untuk menentukan trend pasaran.

  2. Apabila pasaran naik, jika corak bullish engulfing muncul dan jumlah dagangan 1.2 kali lebih besar daripada bar sebelumnya, isyarat panjang dicetuskan. corak ini menunjukkan momentum bulls yang kuat untuk diikuti.

  3. Apabila trend pasaran terbalik, iaitu EMA pendek melintasi di bawah EMA panjang, ia menunjukkan momentum lembu yang melemah dan kedudukan sedia ada harus ditutup.

Analisis Kelebihan

  1. Menggunakan EMA dua untuk menentukan struktur pasaran boleh menilai dengan tepat status bull/bear.

  2. corak engulfing menunjukkan satu sisi momentum tiba-tiba meningkat, yang boleh menangkap trend utama.

  3. Ia mempunyai mekanisme stop loss. Dengan tidak menetapkan harga stop loss tetapi menggunakan pembalikan struktur pasaran untuk menghentikan kerugian, kemerosotan yang tidak perlu dapat dikurangkan.

Analisis Risiko

  1. EMA berganda juga boleh menilai struktur pasaran dengan tidak betul, dengan itu kehilangan trend atau salah pergi lama.

  2. Pola merangkumi boleh disesatkan oleh pasaran yang berbeza. lebih banyak penapis boleh ditambah untuk mengelakkan perdagangan palsu.

  3. Tidak mempunyai harga stop loss boleh membawa kepada kerugian yang lebih besar.

Arah pengoptimuman

  1. Lebih banyak penunjuk seperti MACD, A / D boleh digunakan untuk menentukan panjang / pendek.

  2. Tambah harga stop loss tetap sederhana berdasarkan keperluan.

  3. Mengoptimumkan tempoh EMA berdasarkan ciri perdagangan simbol.

Kesimpulan

Logik strategi ini jelas dan mudah difahami, menggunakan EMA untuk menentukan struktur dan corak menelan untuk menangkap pecah. Kelebihannya adalah logika penilaian yang mudah dan isyarat perdagangan yang jelas. Tetapi risiko terperangkap wujud. Pengoptimuman lanjut dapat memperoleh pulangan yang lebih baik.


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

// @version=5
// # ========================================================================= #
// #                   |   STRATEGY  |
// # ========================================================================= #
strategy(
  title                           = "fpemehd Strategy001",
  shorttitle                      = "f_001",
  overlay                         =  true,
  default_qty_type                =  strategy.percent_of_equity, 
  default_qty_value               =  100, 
  initial_capital                 =  10000000, 
  currency                        =  currency.USD, 
  slippage                        =  0, 
  commission_type                 =  strategy.commission.cash_per_order, 
  commission_value                =  0.01, 
  process_orders_on_close         =  true)
// # ========================================================================= #
// #                   |   STRATEGY  |
// # ========================================================================= #


// Inputs
I_start_date = input (defval = timestamp("20 Jan 1990 00:00 +0900"))
I_finish_date = input(defval = timestamp("20 Dec 2030 00:00 +0900"))

I_short_ema = input.int(defval = 15 , title = "Short EMA", minval = 1 , maxval = 300 , step = 1)
I_long_ema = input.int(defval = 30 , title = "Long EMA", minval = 1 , maxval = 300 , step = 1)

I_body = input.float(defval = 1 , title = "Size of Body", minval = 1 , maxval = 5 , step = 0.1)

time_cond = true

// Calculate Engulfing Candles
C_uptrend = false
C_downtrend = false
C_ema_short = ta.ema(source = close, length = I_short_ema) 
C_ema_long = ta.ema(source = close, length = I_long_ema) 
C_uptrend := close > C_ema_short and C_ema_short > C_ema_long
C_downtrend := close < C_ema_short and C_ema_short < C_ema_long

C_pre_body = math.abs(open[1]-close[1])
C_pre_body_ratio = (math.abs(open[1]-close[1])) / (math.abs(high[1]-low[1])) * 100

C_now_body = math.abs(open-close)
C_now_body_ratio = (math.abs(open-close)) / (math.abs(high-low)) * 100

C_bullish_engulfing = (open[1] > close[1] and open <= close) and (low < low[1] and high > high[1])
C_bearish_engulfing = (open[1] < close[1] and open >= close) and (low < low[1] and high > high[1])
C_avoid_doge = (C_pre_body_ratio > I_body and C_now_body_ratio > I_body) ? true : false
C_volume_filter = volume > volume[1] * 1.2

// Signals
long_signal = C_uptrend and C_bullish_engulfing and C_avoid_doge and C_volume_filter
close_signal = C_downtrend or C_bearish_engulfing 


if long_signal and time_cond
    strategy.entry(id = "Long", direction = strategy.long)

if close_signal and time_cond
    strategy.close(id = "Long")



Lebih lanjut