Ý tưởng chính của chiến lược này là sử dụng các đường trung bình di chuyển trơn để tính toán đường trung bình mở trơn để phát hiện xu hướng giá, và làm nhiều khi giá xảy ra giao thoa với đường trung bình mở trơn và làm trống khi giao thoa chết.
Chiến lược này đầu tiên định nghĩa một hàm tính toán trung bình di chuyển mịn smoothedMovingAvg, hàm này sử dụng giá trị trung bình di chuyển của chu kỳ trước và giá trị mới nhất để tính toán trung bình di chuyển mịn của chu kỳ hiện tại.
Sau đó, định nghĩa một hàm getHAClose để tính giá đóng cửa dựa trên giá mở, giá cao nhất, giá thấp nhất và giá đóng cửa.
Trong logic chính sách, trước tiên lấy giá nguyên thủy của các chu kỳ khác nhau, sau đó sử dụng hàm SmoothedMovingAvg để tính toán đường trung bình di chuyển mịn, sau đó tính toán giá đóng cửa khởi động mịn bằng hàm getHAClose.
Cuối cùng, khi giá trên trượt để mở giá đóng cửa, làm nhiều hơn, khi giá dưới trượt để mở giá đóng cửa, làm trống, khi giá dưới trượt để mở giá đóng cửa.
Lợi thế lớn nhất của chiến lược này là sử dụng đường trung bình di chuyển mịn để tính toán đường trung bình sáng mịn, có thể đánh giá chính xác hơn xu hướng giá, lọc một phần tiếng ồn, tránh phát ra tín hiệu sai trong dao động. Ngoài ra, đường trung bình sáng tự nó có lợi thế của xu hướng nổi bật, kết hợp với giá, có thể làm tăng thêm độ chính xác của phán đoán.
Chiến lược này có những rủi ro chính như sau:
Đối với các rủi ro trên, chúng ta có thể làm giảm rủi ro và tăng sự ổn định của chiến lược bằng cách điều chỉnh các tham số mịn, giới thiệu các cơ chế dừng lỗ, giảm vị trí giao dịch đơn lẻ.
Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:
Bằng cách tối ưu hóa các điểm trên, bạn có thể giảm thêm rủi ro phù hợp với đường cong của chiến lược và tăng khả năng thích ứng và ổn định của chiến lược.
Chiến lược này toàn bộ tư tưởng rõ ràng và dễ hiểu, bằng cách tính toán trật tự thông minh trung bình để đánh giá xu hướng giá, và theo đó để thực hiện phương pháp ngắn và ngắn. Ưu điểm lớn nhất là có thể lọc một phần tiếng ồn, tăng độ chính xác của tín hiệu đánh giá. Nhưng cũng có một số tham số tối ưu hóa khó khăn và có thể bỏ lỡ rủi ro quay ngược nhanh.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Smoothed Heiken Ashi Strategy", overlay=true)
// Inputs
g_TimeframeSettings = 'Display & Timeframe Settings'
time_frame = input.timeframe(title='Timeframe for HA candle calculation', defval='', group=g_TimeframeSettings)
g_SmoothedHASettings = 'Smoothed HA Settings'
smoothedHALength = input.int(title='HA Price Input Smoothing Length', minval=1, maxval=500, step=1, defval=10, group=g_SmoothedHASettings)
// Define a function for calculating the smoothed moving average
smoothedMovingAvg(src, len) =>
smma = 0.0
smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
// Function to get Heiken Ashi close
getHAClose(o, h, l, c) =>
((o + h + l + c) / 4)
// Calculate smoothed HA candles
smoothedHAOpen = request.security(syminfo.tickerid, time_frame, open)
smoothedMA1close = smoothedMovingAvg(request.security(syminfo.tickerid, time_frame, close), smoothedHALength)
smoothedHAClose = getHAClose(smoothedHAOpen, smoothedHAOpen, smoothedHAOpen, smoothedMA1close)
// Plot Smoothed Heiken Ashi candles
plotcandle(open=smoothedHAOpen, high=smoothedHAOpen, low=smoothedHAOpen, close=smoothedHAClose, color=color.new(color.blue, 0), wickcolor=color.new(color.blue, 0))
// Strategy logic
longCondition = close > smoothedHAClose
shortCondition = close < smoothedHAClose
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition)
plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)