Strategi ini bertujuan untuk menangkap trend forex jangka pendek, menggunakan EMA dan RSI sebagai isyarat perdagangan, dan menggabungkan penapis ADX untuk masuk ke dalam, mengambil cara berhenti mengikut trend untuk mengunci keuntungan. Strategi ini berlaku untuk semua pasangan mata wang, tetapi terutama digunakan untuk carta 1 jam pasangan mata wang utama.
Strategi ini membina isyarat dagangan berdasarkan petunjuk dan syarat berikut:
Isyarat masuk perdagangan:
Isyarat keluar:
Strategi ini menggunakan crossover rata-rata, RSI overbought dan oversold, dan indikator penilaian trend ADX, membentuk mekanisme masuk yang lebih ketat, yang dapat mengikuti dan mengesan kerugian untuk mengunci keuntungan selepas penjanaan trend, sehingga dapat menangkap trend jangka pendek dengan berkesan.
Strategi ini mempunyai kelebihan berikut:
Menggunakan EMA garis cepat dan perlahan yang bersilang sebagai asas untuk menilai trend, garis cepat ke atas yang bersilang dengan garis perlahan menunjukkan trend bullish, dan bawah yang bersilang dengan bearish dapat mengenal pasti perubahan trend.
Penambahan penilaian RSI dapat menyaring beberapa isyarat pecah palsu, RSI melampaui kawasan jual beli sebagai isyarat penyesuaian jangka pendek, untuk mengelakkan masuk ke pasaran yang bergolak.
Indeks ADX digunakan untuk menilai kewujudan trend sebenar, dan dapat menyaring sebahagian daripada kebisingan dengan berkesan. Isyarat perdagangan dipertimbangkan hanya apabila nilai ADX lebih besar daripada 25, dan dengan itu memastikan terdapat trend yang jelas.
Mengambil cara berhenti dan berhenti bergerak untuk memaksimumkan keuntungan, risiko jaminan berhenti boleh dikawal, jarak berhenti 150 dan jarak berhenti 400, dan trend boleh terus berjalan.
Setiap hari Jumaat sebelum penutupan pasaran, semua kedudukan ditutup, untuk mengelakkan risiko pada hujung minggu, dan untuk mengekalkan operasi yang teratur.
Strategi ini juga mempunyai risiko:
Strategi EMA rata-rata cross-line mudah menghasilkan isyarat pecah palsu, virtualization mungkin membawa kerugian. Anda boleh menyesuaikan parameter rata-rata dengan sewajarnya, atau menyaring dengan penunjuk lain.
Penunjuk RSI hanya dapat menilai keadaan overbought dan oversold, tidak dapat mengesahkan pembalikan trend, visualisasi mungkin terlepas trend atau masuk ke dalam pasaran. Anda boleh mempertimbangkan untuk menggunakan atau menyesuaikan parameter dengan kombinasi indikator lain.
Penunjuk ADX hanya menilai sama ada trend wujud atau tidak, masa masuk mungkin tidak tepat, dan pertimbangan boleh diberikan untuk menambah pertimbangan lain atau mengurangkan syarat penapisan ADX.
Tetapan stop loss mungkin terlalu tetap dan tidak dapat disesuaikan dengan perubahan pasaran, boleh diuji dengan parameter yang berbeza atau disesuaikan dengan intervensi manual yang tepat pada masanya.
Penutupan mingguan yang wajib mungkin terlepas peluang untuk menjalankan trend yang baik, boleh dipertimbangkan untuk disesuaikan dengan penutupan harian atau diubah menjadi penutupan bersyarat pada masa akan datang.
Strategi ini juga boleh dioptimumkan dalam beberapa arah:
Uji kombinasi parameter garis rata yang berbeza untuk mencari panjang garis rata yang terbaik. Anda boleh memasukkan garis rata untuk menentukan kemiringan.
Cuba parameter RSI yang berbeza atau kombinasi dengan indikator KDJ untuk lebih mengoptimumkan penilaian overbought dan oversold.
Mengoptimumkan parameter ADX, mencari syarat penapisan ADX yang lebih sesuai, meningkatkan kualiti kemasukan.
Uji penggunaan gabungan titik tetap untuk hentian hentian mudah alih dengan hentian hentian pelacakan dinamik ATR.
Memperkenalkan strategi penarikan balik yang menerobos dalam sehari, masuk ke dalam permainan selepas trend disahkan, boleh mempertimbangkan carta 5 minit atau 15 minit.
Menambah modul pengurusan kedudukan berdasarkan kadar turun naik, menyesuaikan kedudukan secara dinamik mengikut turun naik pasaran.
Mencuba teknik pembelajaran mesin untuk mengoptimumkan parameter secara automatik, mewujudkan strategi yang boleh disesuaikan.
Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang sangat mudah dan langsung, menggunakan arah trend penilaian silang, penyaringan RSI, penembusan palsu, penilaian trend ADX, dan penghentian berhenti untuk terus mengikuti trend, menangkap keuntungan dalam jangka pendek. Arah pengoptimuman strategi adalah untuk mencari kombinasi penunjuk yang lebih baik, mewujudkan fleksibiliti penghakiman trend, dan memperkenalkan pengurusan kedudukan dinamik.
/*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)