Chiến lược Origix Ashi dựa trên đường trung bình di chuyển trơn tru

Tác giả:ChaoZhang, Ngày: 2024-01-25 15:26:25
Tags:

img

Tổng quan

Ý tưởng chính của chiến lược này là sử dụng đường trung bình di chuyển trơn để tính toán đường Heiken Ashi trơn để xác định xu hướng giá, và đi dài khi giá có đường chéo vàng với đường Heiken Ashi trơn, và đi ngắn khi có đường chéo chết.

Chiến lược logic

Chiến lược đầu tiên xác định một hàm smoothedMovingAvg để tính toán đường trung bình di chuyển mượt mà, sử dụng giá trị đường trung bình di chuyển của giai đoạn trước và giá mới nhất để tính toán đường trung bình di chuyển mượt mà của giai đoạn hiện tại dựa trên một số trọng số nhất định.

Sau đó nó xác định một hàm getHAClose để tính giá đóng Heiken Ashi dựa trên giá mở, cao, thấp và đóng.

Trong logic chiến lược chính, trước tiên nó lấy giá ban đầu của các giai đoạn khác nhau, sau đó sử dụng hàm smoothedMovingAvg để tính toán đường trung bình di chuyển trơn tru, và sau đó tính toán giá đóng cửa Heiken Ashi trơn tru thông qua hàm getHAClose.

Cuối cùng, nó đi dài khi giá vượt trên giá đóng cửa Heiken Ashi trơn tru và đóng vị trí khi giá vượt dưới nó. Nó đi ngắn khi giá vượt dưới giá đóng cửa Heiken Ashi trơn tru và đóng vị trí khi giá vượt trên nó.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là bằng cách sử dụng đường trung bình di chuyển trơn để tính toán Heiken Ashi trơn, nó có thể xác định chính xác hơn xu hướng giá và lọc ra một số tiếng ồn để tránh tạo ra tín hiệu sai trong thời gian hỗn loạn.

Phân tích rủi ro

Những rủi ro chính đối với chiến lược này là:

  1. Cài đặt tham số không chính xác của việc làm mịn có thể khiến chiến lược bỏ lỡ cơ hội đảo ngược giá hoặc tạo ra tín hiệu sai. Các tham số tối ưu cần được tìm thấy thông qua kiểm tra và tối ưu hóa lặp đi lặp lại.

  2. Khi giá dao động mạnh, đường trung bình di chuyển có thể tụt lại sau các thay đổi giá, dẫn đến kích hoạt dừng lỗ hoặc bỏ lỡ cơ hội đảo ngược.

Để giải quyết các rủi ro trên, các phương pháp như điều chỉnh các tham số làm mịn, giới thiệu các cơ chế dừng lỗ, giảm kích thước vị trí mỗi giao dịch có thể được sử dụng để giảm rủi ro và cải thiện sự ổn định chiến lược.

Hướng dẫn tối ưu hóa

Chiến lược cũng có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tạo các thông số làm mịn thích nghi để tự động điều chỉnh các thông số khi biến động thị trường tăng lên.

  2. Kết hợp với các chỉ số khác như bộ lọc để tránh phát ra các tín hiệu sai trong quá trình củng cố giá.

  3. Thêm cơ chế dừng lỗ để kiểm soát mỗi lỗ giao dịch.

  4. Tối ưu hóa các sản phẩm giao dịch, các phiên giao dịch vv để tập trung vào các sản phẩm và các phiên có nhiều lợi thế nhất.

Thông qua các tối ưu hóa trên, rủi ro phù hợp đường cong của chiến lược có thể được giảm thêm và khả năng thích nghi và ổn định của chiến lược có thể được cải thiện.

Kết luận

Lý thuyết tổng thể của chiến lược này là rõ ràng và dễ hiểu. Bằng cách tính toán Heiken Ashi trơn tru để xác định xu hướng giá và thực hiện các vị trí dài và ngắn phù hợp. Ưu điểm lớn nhất của nó là có thể lọc ra một số tiếng ồn và cải thiện độ chính xác của phán đoán tín hiệu. Nhưng cũng có một số khó khăn trong tối ưu hóa tham số và rủi ro thiếu đảo ngược nhanh chóng.


/*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)

Thêm nữa