Chiến lược giao thoa đường trung bình động cao và thấp để nắm bắt xu hướng nhỏ


Ngày tạo: 2023-09-28 11:44:04 sửa đổi lần cuối: 2023-09-28 11:44:04
sao chép: 1 Số nhấp chuột: 780
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này được thiết kế để nắm bắt các xu hướng ngoại hối ngắn hạn, sử dụng các đường EMA và RSI làm tín hiệu giao dịch và kết hợp với bộ lọc ADX để tham gia vào thị trường, sử dụng phương thức theo dõi xu hướng để khóa lợi nhuận. Chiến lược này áp dụng cho tất cả các cặp tiền tệ, nhưng chủ yếu được áp dụng cho biểu đồ 1 giờ của các cặp tiền tệ chính.

Nguyên tắc chiến lược

Chiến lược này xây dựng tín hiệu giao dịch dựa trên các chỉ số và điều kiện sau:

  • 5 chu kỳ nhanh EMA: Đường xanh
  • 10 chu kỳ chậm EMA: Đường đỏ
  • RSI 10 chu kỳ được áp dụng cho giá tròn giá trung bình ((giá cao nhất + giá thấp nhất / 2)
  • 14 chu kỳ ADX

Tín hiệu giao dịch:

  • Bán đầu: khi EMA nhanh vượt qua EMA chậm từ dưới, và đường RSI vượt qua 50 từ mức thấp lên
  • Đầu trống: Khi EMA nhanh đi qua EMA chậm từ trên xuống và đường RSI đi từ đỉnh xuống breakout 50
  • ADX > 25 là thời gian để làm thêm việc rảnh rỗi

Tín hiệu thoát:

  • Dừng di động, theo dõi dừng 150 điểm, dừng chiến thắng 400 điểm
  • Các tín hiệu mới xuất hiện
  • Mỗi tối thứ Sáu, tất cả các cổ phiếu đều bị thu hồi.

Chiến lược này tập trung sử dụng các chỉ số định giá xu hướng của đường trung bình, RSI và ADX để tạo ra một cơ chế nhập cảnh nghiêm ngặt hơn, có thể theo dõi dừng lỗ để khóa lợi nhuận sau khi tạo xu hướng, để nắm bắt hiệu quả xu hướng ngắn hạn.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng đường EMA nhanh và chậm để đánh giá xu hướng, đường nhanh lên đường chậm cho thấy xu hướng đi lên, và đường đi xuống là xu hướng giảm, có thể nhận ra sự thay đổi trong xu hướng.

  2. Tham gia chỉ số RSI có thể lọc ra một số tín hiệu phá vỡ giả, RSI mua quá mức khu vực bán quá mức được coi là tín hiệu điều chỉnh ngắn hạn, tránh tham gia vào thị trường bất ổn.

  3. Chỉ số ADX được sử dụng để xác định sự tồn tại của xu hướng thực sự, có thể lọc một phần tiếng ồn một cách hiệu quả. Chỉ cần xem xét tín hiệu giao dịch khi ADX lớn hơn 25, để đảm bảo có xu hướng rõ ràng.

  4. Sử dụng phương pháp dừng và dừng di động để tối đa hóa lợi nhuận, bảo đảm dừng rủi ro có thể kiểm soát được, theo dõi khoảng cách dừng 150 điểm, khoảng cách dừng 400 điểm, có thể liên tục theo dõi xu hướng.

  5. Mỗi ngày thứ Sáu, tất cả các vị trí được xóa trước khi thị trường đóng cửa, tránh mọi rủi ro vào cuối tuần, giữ cho hoạt động đều đặn.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Chiến lược giao chéo đường trung bình của EMA dễ tạo ra tín hiệu phá vỡ giả, ảo hóa có thể gây ra tổn thất. Bạn có thể điều chỉnh tham số đường trung bình một cách thích hợp hoặc lọc thêm các chỉ số khác.

  2. Chỉ số RSI chỉ có thể đánh giá tình trạng quá mua quá bán, không thể xác nhận xu hướng đảo ngược, hình ảnh có thể bỏ lỡ xu hướng hoặc đảo ngược vào thị trường. Bạn có thể cân nhắc sử dụng hoặc điều chỉnh tham số với các chỉ số khác.

  3. Chỉ số ADX chỉ đánh giá xu hướng có tồn tại hay không, thời gian nhập cảnh có thể không chính xác, bạn có thể xem xét thêm các phán đoán khác hoặc giảm điều kiện lọc ADX.

  4. Cài đặt Stop Loss Stop có thể quá cố định, không thể thích ứng với sự thay đổi của thị trường, có thể thử nghiệm các tham số khác nhau hoặc điều chỉnh can thiệp bằng tay kịp thời.

  5. Việc buộc phải tháo dỡ hàng tuần có thể bỏ lỡ cơ hội chạy xu hướng tốt, bạn có thể xem xét điều chỉnh để đóng cửa hàng ngày hoặc sửa đổi sau này thành tháo dỡ có điều kiện.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:

  1. Kiểm tra các kết hợp tham số đường trung bình khác nhau để tìm ra chiều dài đường trung bình tối ưu. Bạn có thể đưa vào độ dốc đường trung bình để xác định.

  2. Thử các tham số RSI khác nhau hoặc kết hợp với chỉ số KDJ để tối ưu hóa hơn nữa phán đoán mua quá mức.

  3. Tối ưu hóa tham số ADX, tìm các điều kiện lọc ADX phù hợp hơn, nâng cao chất lượng nhập cảnh.

  4. Kiểm tra kết hợp của số điểm cố định của trạm dừng di động và ATR theo dõi động của trạm dừng.

  5. Tham gia chiến lược điều chỉnh lại trong ngày, tham gia vào khi xu hướng được xác nhận, có thể xem xét biểu đồ 5 phút hoặc 15 phút.

  6. Thêm mô-đun quản lý vị trí dựa trên biến động, điều chỉnh vị trí động theo biến động của thị trường.

  7. Thử nghiệm các kỹ thuật học máy để tự động tối ưu hóa các tham số, thực hiện khả năng thích ứng của chiến lược.

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng rất đơn giản và trực tiếp, sử dụng phương hướng định hướng xu hướng, RSI lọc phá vỡ giả mạo, ADX định hướng xu hướng tồn tại, dừng lỗ để tiếp tục theo dõi xu hướng, thu lợi nhuận trong thời gian ngắn. Phương hướng tối ưu hóa chiến lược chủ yếu là tìm kiếm một bộ chỉ số tốt hơn, thực hiện tính linh hoạt của định hướng xu hướng, và giới thiệu quản lý vị trí động.

Mã nguồn chiến lược
/*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)