Strategi Pemangsa Trend HLHB

Penulis:ChaoZhang, Tarikh: 2023-09-28 11:44:04
Tag:

Ringkasan

Strategi ini bertujuan untuk menangkap trend forex jangka pendek dengan menggunakan silang EMA dan RSI sebagai isyarat perdagangan, dengan penapis ADX untuk memasuki perdagangan, dan menghentikan kerugian untuk mengunci keuntungan.

Logika Strategi

Strategi ini berdasarkan kepada penunjuk dan syarat berikut untuk menjana isyarat perdagangan:

  • EMA pantas 5 tempoh: garis biru
  • EMA perlahan 10 tempoh: garisan merah
  • RSI 10 tempoh yang digunakan pada harga median (H+L)/2
  • ADX tempoh 14

Isyarat kemasukan:

  • Long: apabila EMA cepat melintasi di atas EMA perlahan dari bawah dan RSI melintasi di atas 50 dari bawah
  • Pendek: apabila EMA cepat melintasi di bawah EMA perlahan dari atas dan RSI melintasi di bawah 50 dari atas
  • Hanya menerima isyarat apabila ADX > 25

Isyarat keluar:

  • Gunakan stop loss, 150 pips dan 400 pips mengambil keuntungan.
  • Tutup perdagangan apabila isyarat baru berlaku
  • Tutup semua dagangan sebelum akhir minggu

Strategi ini menggabungkan persilangan EMA, RSI overbought / oversold dan kekuatan trend ADX untuk mewujudkan peraturan kemasukan yang kukuh. Ia menunggang trend selepas pembentukan dan menggunakan hentian menyusul untuk memaksimumkan keuntungan dan mengawal risiko. Secara keseluruhan ia bertujuan untuk menangkap trend jangka pendek dengan berkesan.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. EMA crossover untuk arah trend. Upward cross mencadangkan uptrend manakala downward cross downtrend. Boleh mengenal pasti perubahan trend.

  2. Menambah RSI menapis beberapa isyarat pecah palsu. zon oversold / overbought menunjukkan penurunan jangka pendek dan mengelakkan kemasukan yang tidak perlu di pasaran julat.

  3. Hanya mempertimbangkan isyarat perdagangan apabila ADX > 25, menjamin trend yang kukuh.

  4. Menjaga jarak stop loss dan mengambil keuntungan, membiarkan keuntungan berjalan sambil mengawal risiko. 150 pip jarak jejak dan 400 pip sasaran keuntungan terus menunggang trend.

  5. Penutupan semua kedudukan sebelum hujung minggu mengelakkan risiko hujung minggu dan menguatkuasakan keteraturan perdagangan.

Analisis Risiko

Strategi ini juga mempunyai risiko berikut:

  1. Sistem silang EMA terdedah kepada isyarat pecah palsu, yang membawa kepada kerugian.

  2. RSI hanya mengenal pasti tahap overbought / oversold, bukan pembalikan trend.

  3. ADX hanya menilai kewujudan trend, masa kemasukan mungkin off.

  4. Tahap stop loss dan mengambil keuntungan tetap mungkin tidak menyesuaikan diri dengan perubahan pasaran.

  5. Penutupan mingguan terpaksa boleh kehilangan peluang trend yang baik.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji kombinasi EMA yang berbeza untuk mencari panjang optimum. Pertimbangkan cerun untuk kekuatan trend tambahan.

  2. Cuba parameter RSI yang berbeza atau gabungkan dengan KDJ untuk penilaian overbought / oversold yang lebih baik.

  3. Mengoptimumkan parameter ADX untuk penapisan yang lebih sesuai dan kualiti kemasukan yang lebih tinggi.

  4. Kombinasi ujian perhentian tetap dan pengangkut dinamik berasaskan ATR.

  5. Menambah entri pulback intraday selepas pengesahan trend, seperti jangka masa yang lebih rendah.

  6. Memperkenalkan saiz kedudukan berdasarkan turun naik untuk penyesuaian dinamik berdasarkan turun naik pasaran.

  7. Meneroka teknik pembelajaran mesin untuk mengoptimumkan parameter automatik untuk kebolehsesuaian.

Ringkasan

Ringkasnya, ini adalah trend yang mudah mengikuti strategi, mengenal pasti arah trend dengan persimpangan EMA, menapis dengan RSI, memerlukan trend dengan ADX, dan berhenti untuk keuntungan. pengoptimuman terutamanya melibatkan mencari kombinasi penunjuk yang lebih baik untuk fleksibiliti, dan menambah ukuran kedudukan dinamik. Logiknya mempunyai merit tetapi masih memerlukan ujian dan pengoptimuman lanjut untuk aplikasi praktikal.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Hucklekiwi Pip - HLHB Trend-Catcher System", shorttitle="HLHB TCS", overlay=true,
  default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// -----------------------------------------------------------------------------
// HLHB Trend-Catcher System as described on BabyPips.com
//
// Strategy Author: Hucklekiwi Pip 
// Coded By: Backtest Rookies
// -----------------------------------------------------------------------------
//
// Refs:
//   - Original System: https://www.babypips.com/trading/forex-hlhb-system-explained
//   - Updated System: https://www.babypips.com/trading/forex-hlhb-system-20190311
//
//
// Description (From Hucklekiwi Pip)
// 
//   The HLHB System simply aims to catch short-term forex trends.
//   It is patterned after the Amazing Crossover System that Robopip once backtested.
//   In fact, it was one of his highest-scoring mechanical systems in 2014! 
//   The system can be applied to any pair, but since I’m into major pairs, 
//   I’m applying it to the 1-hour charts of EUR/USD and GBP/USD.
// -----------------------------------------------------------------------------
// STRATEGY REQUIREMENTS
// -----------------------------------------------------------------------------
//
// Setup
// -----
//  - EUR/USD 1-hour chart
//  - GBP/USD 1-hour chart
//  - 5 EMA: blue line
//  - 10 EMA: red line
//  - RSI (10) applied to the median price (HL/2)
//  - ADX (14)
//
// Entry
// -----
//  - BUY when the 5 EMA crosses above the 10 EMA from underneath and the RSI 
//    crosses above the 50.0 mark from the bottom.
//  - SELL when the 5 EMA crosses below the 10 EMA from the top and the RSI 
//    crosses below the 50.0 mark from the top.
//  - Make sure that the RSI did cross 50.0 from the top or bottom and not just 
//    ranging tightly around the level.
//  - ADX > 25 for Buy and Sells
//
// Exit
// ----
//  - Use a 50-pip trailing stop and a 200-pip profit target. This increases the 
//    chances of the system riding longer trends.
//  - Close the trade when a new signal materializes.
//  - Close all trades by the end of the week.
// 
// -----------------------------------------------------------------------------

// Strategy Varaibles
// -------------------
ema_fast_len = input(5, title='Fast EMA Length')
ema_slow_len = input(10 , title='Slow EMA Length')
rsi_len = input(10, title='Slow EMA Length')
session_end_hour = input(16, minval=0, maxval=23, title='Weekly Session End (Hour)')
session_end_minute = input(0, minval=0, maxval=59, title='Weekly Session End (Minute)')
// Targets taken from the update post which states 150 & 400 instead of 50 and 200.
profit_target = input(400, title='Profit Target (Pips/Points)')
trailing_stop_dist = input(150, title='Trailing Stop Distance (Pips/Points)')
adx_filt = input(true, title='User ADX Filter')
adx_min = input(25, minval=0, title='Minimum ADX Level')
adx_len = input(14, title="ADX Smoothing")
di_len = input(14, title="DI Length")

// Setup the Indicators
ema_fast = ema(close, ema_fast_len)
ema_slow = ema(close, ema_slow_len)
rsi_ind = rsi(close, rsi_len)

// ADX
adx_dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx_adx(dilen, adxlen) =>
	[plus, minus] = adx_dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[adx_sig, adx_plus, adx_minus] = adx_adx(di_len, adx_len)


// Strategy Logic
ema_long_cross = crossover(ema_fast, ema_slow)
ema_short_cross = crossunder(ema_fast, ema_slow)
rsi_long_cross = crossover(rsi_ind, 50)
rsi_short_cross = crossunder(rsi_ind, 50)
adx_check = adx_filt ? adx_sig >= adx_min : true

longCondition = ema_long_cross and rsi_long_cross and adx_check
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ema_short_cross and rsi_short_cross and adx_check
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("SL/TP", "Long", profit=profit_target,  loss=trailing_stop_dist, trail_points=trailing_stop_dist)  
strategy.exit("SL/TP", "Short", profit=profit_target, loss=trailing_stop_dist, trail_points=trailing_stop_dist)  

// Friday = 6
// If we miss the hour for some reason (due to strange timeframe), then close immediately
// Else if we are on the closing hour, then check to see if we are on or passed the close minute
close_time = dayofweek == 6 ? 
  hour[0] > session_end_hour ? true :
  hour[0] == session_end_hour ?
      minute[0] >= session_end_minute :
  false : false

strategy.close_all(when=close_time)

// Plotting
plot(ema_fast, color=blue, title="Fast EMA")
plot(ema_slow, color=red, title="Slow EMA")

plotshape(rsi_long_cross, style=shape.triangleup, size=size.tiny, location=location.belowbar, color=green, title='RSI Long Cross Marker')
plotshape(rsi_short_cross, style=shape.triangledown, size=size.tiny, location=location.abovebar, color=red, title='RSI Short Cross Marker')

// ADX Filter Highlight
bgcolor(adx_filt and adx_check ? orange : na, transp=90)

Lebih lanjut