Strategi ini bertujuan untuk menangkap tren forex jangka pendek, menggunakan EMA dan RSI sebagai sinyal perdagangan, dan digabungkan dengan filter ADX untuk masuk ke dalam, mengambil stop loss yang mengikuti tren untuk mengunci keuntungan. Strategi ini berlaku untuk semua pasangan mata uang, tetapi terutama berlaku untuk grafik 1 jam dari pasangan mata uang utama.
Strategi ini membangun sinyal perdagangan berdasarkan indikator dan kondisi berikut:
Sinyal masuk perdagangan:
Tanda keluar:
Strategi ini terkonsentrasi menggunakan crossover rata-rata, RSI overbought dan oversold, dan indikator penilaian tren ADX, membentuk mekanisme masuk yang lebih ketat, yang dapat berlanjut setelah terjadinya tren, melacak stop loss untuk mengunci keuntungan, sehingga efektif menangkap tren jangka pendek.
Strategi ini memiliki keuntungan sebagai berikut:
Menggunakan EMA fast-slow line crossover sebagai dasar untuk menilai tren, fast line up crossover slow line menunjukkan masuk ke trend bullish, dan crossover downward crossover bearish, dapat mengidentifikasi perubahan tren.
Dengan menambahkan indikator RSI, dapat disaring beberapa sinyal false breakout. RSI overbought dan oversold dianggap sebagai sinyal penyesuaian jangka pendek untuk menghindari masuk ke pasar yang bergoyang.
Indikator ADX digunakan untuk mengetahui adanya tren yang sebenarnya, dan dapat secara efektif menyaring sebagian dari kebisingan. Sinyal perdagangan hanya dipertimbangkan ketika nilai ADX lebih besar dari 25, sehingga menjamin adanya tren yang jelas.
Mengadopsi stop loss dan stop loss yang bergerak untuk memaksimalkan keuntungan, stop loss menjamin risiko yang terkendali, tracking stop loss jarak 150 poin, stop loss jarak 400 poin, dapat terus mengikuti tren.
Setiap hari Jumat, semua posisi ditutup sebelum penutupan pasar, untuk menghindari berbagai risiko akhir pekan, dan untuk menjaga keteraturan operasi.
Strategi ini juga memiliki risiko sebagai berikut:
Strategi EMA rata-rata cross-line mudah menghasilkan sinyal pecah palsu, virtualization dapat membawa kerugian. Anda dapat menyesuaikan parameter rata-rata sesuai, atau menambahkan indikator lain untuk penyaringan.
RSI hanya dapat menilai kondisi overbought dan oversold, tidak dapat mengkonfirmasi trend reversal, visualisasi dapat melewatkan tren atau reverse entry. Anda dapat mempertimbangkan untuk menggunakan atau menyesuaikan parameter dengan kombinasi indikator lain.
Indikator ADX hanya menilai apakah tren ada atau tidak, dan waktu masuk mungkin tidak akurat, Anda dapat mempertimbangkan untuk menambahkan penilaian lain atau menurunkan kondisi penyaringan ADX.
Pengaturan stop loss mungkin terlalu tetap dan tidak dapat beradaptasi dengan perubahan pasar, dapat diuji dengan parameter yang berbeda atau disesuaikan dengan intervensi manual yang tepat waktu.
Penutupan mingguan yang dipaksakan mungkin melewatkan peluang untuk menjalankan tren yang baik, dan dapat dipertimbangkan untuk disesuaikan dengan penutupan harian atau dimodifikasi menjadi penutupan kondisional di kemudian hari.
Strategi ini juga dapat dioptimalkan dari beberapa arah:
Uji kombinasi parameter garis rata yang berbeda untuk mencari panjang garis rata yang optimal. Anda dapat menentukan kemiringan garis rata.
Cobalah berbagai parameter RSI atau kombinasi dengan indikator KDJ untuk lebih mengoptimalkan penilaian overbought dan oversold.
Mengoptimalkan parameter ADX, menemukan kondisi penyaringan ADX yang lebih sesuai, dan meningkatkan kualitas masuk.
Tes menggunakan kombinasi dari stop loss tracking dan ATR dengan stop loss mobile.
Memperkenalkan strategi penarikan balik dalam satu hari, masuk setelah konfirmasi tren, pertimbangkan grafik 5 menit atau 15 menit.
Menambahkan modul manajemen posisi berdasarkan volatilitas, menyesuaikan posisi secara dinamis sesuai dengan fluktuasi pasar.
Mencoba untuk mengoptimalkan parameter secara otomatis menggunakan teknologi pembelajaran mesin, sehingga strategi dapat beradaptasi.
Strategi ini secara keseluruhan adalah strategi pelacakan tren yang sangat sederhana dan langsung, dengan menggunakan arah tren penilaian silang rata-rata, RSI filter penipuan, ADX penilaian tren ada, stop loss stop untuk terus mengikuti tren, menangkap keuntungan dalam jangka pendek. Strategi pengoptimalan arah terutama mencari kombinasi indikator yang lebih baik, mencapai fleksibilitas penilaian tren, dan memperkenalkan manajemen posisi dinamis.
/*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)