Chiến lược Qiyuan Axu dựa trên đường trung bình động được làm mịn


Ngày tạo: 2024-01-25 15:26:25 sửa đổi lần cuối: 2024-01-25 15:26:25
sao chép: 1 Số nhấp chuột: 394
1
tập trung vào
1237
Người theo dõi

Chiến lược Qiyuan Axu dựa trên đường trung bình động được làm mịn

Tổng quan

Ý 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.

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

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.

Phân tích lợi thế

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.

Phân tích rủi ro

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

  1. Thiết lập tham số mài dũa không đúng cách có thể dẫn đến việc chiến lược bỏ lỡ cơ hội đảo ngược giá hoặc tạo ra tín hiệu sai. Cần tìm tham số tối ưu bằng cách lặp lại và tối ưu hóa.
  2. Khi giá dao động mạnh, đường trung bình trơn có thể bị trì hoãn theo dõi sự thay đổi giá, dẫn đến lỗ hổng hoặc bỏ lỡ cơ hội đảo ngược. Tại thời điểm này, cần giảm rủi ro tránh vị trí.

Đố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ẻ.

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 khía cạnh sau:

  1. Thêm các tham số tự điều chỉnh để thích ứng với sự biến động của thị trường.
  2. Kết hợp với các chỉ số khác làm bộ lọc, tránh phát ra tín hiệu sai khi giá dao động. Ví dụ: MACD, KD, v.v.
  3. Thêm hệ thống dừng lỗ để kiểm soát tổn thất đơn lẻ. Có thể thiết lập dừng phần trăm hoặc dừng dao động.
  4. Tối ưu hóa các loại và giai đoạn giao dịch, tập trung vào các loại và giai đoạn giao dịch có lợi thế nhất.

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.

Tóm tắt

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.

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