Chiến lược toàn diện đa trung bình động

Tác giả:ChaoZhang, Ngày: 2023-12-22 11:56:42
Tags:

img

Tổng quan

Chiến lược toàn diện đa động trung bình là một chiến lược phân tích kỹ thuật rất linh hoạt và mạnh mẽ. Nó kết hợp nhiều trung bình động trên các khung thời gian khác nhau để cung cấp thông tin chi tiết toàn diện về xu hướng thị trường. Chiến lược tạo ra các tín hiệu mua và bán rõ ràng để xác định các điểm vào và ra tiềm năng. Nó cũng cung cấp tính tùy chỉnh tuyệt vời để cho phép người dùng điều chỉnh độ dài trung bình động dựa trên sở thích và mục tiêu giao dịch của họ.

Nguyên tắc

Cốt lõi của chiến lược này là tính toán và theo dõi nhiều đường trung bình động trong các giai đoạn khác nhau, cụ thể là đường trung bình động 10 ngày, 20 ngày, 30 ngày đến 100 ngày.

Khi giá đóng cửa ngày hôm nay nằm trên tất cả các đường trung bình chuyển động này, một tín hiệu mua được tạo ra. Khi giá đóng cửa ngày hôm nay nằm dưới tất cả các đường trung bình chuyển động này, một tín hiệu bán được tạo ra. Do đó, các tín hiệu chỉ được kích hoạt khi tất cả các đường trung bình chuyển động trên các khung thời gian khác nhau chỉ vào cùng một hướng. Điều này lọc ra rất nhiều tiếng ồn và làm cho các tín hiệu đáng tin cậy hơn.

Ưu điểm

  1. Cung cấp thông tin chi tiết trên nhiều quy mô thời gian, thích nghi với các môi trường thị trường khác nhau

  2. lọc ra tiếng ồn thông qua nhiều xác nhận, làm cho tín hiệu đáng tin cậy hơn

  3. Quy tắc giao dịch rõ ràng dễ hiểu và thực hiện

  4. Rất tùy chỉnh để đáp ứng các yêu cầu cá nhân

  5. Cung cấp hướng dẫn cho các mục nhập, dừng lỗ và lấy lợi nhuận, tạo thuận lợi cho quản lý rủi ro

Rủi ro và giải pháp

  1. Nhiều đường trung bình động có thể giao nhau trong các thị trường dao động, dẫn đến các tín hiệu không rõ ràng. Điều này có thể được giảm bằng cách điều chỉnh số lượng và chiều dài của đường trung bình động.

  2. Khả năng giá trong tương lai phá vỡ nhiều đường trung bình động là thấp, có khả năng bỏ lỡ một số giao dịch.

  3. Các tín hiệu đang chậm trễ, không thể bắt được sự đảo ngược xu hướng sớm.

  4. Số lượng giao dịch được tạo ra có thể thấp để có thu nhập ổn định.

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

  1. Điều chỉnh tham số: Điều chỉnh số lượng và chiều dài của các đường trung bình động để tìm ra sự pha trộn tham số tối ưu.

  2. Kết hợp các chỉ số khác: Thêm các chỉ số như MACD và RSI có thể cải thiện khả năng phục hồi của chiến lược.

  3. Chiến lược kết hợp: Kết hợp với các chiến lược khác như hệ thống đột phá và theo dõi xu hướng có thể tăng cường độ bền.

  4. Tối ưu hóa tự động: Kiểm tra thuật toán các tập hợp tham số khác nhau để tối đa hóa các chức năng khách quan và tìm các tham số tối ưu. Giảm can thiệp bằng tay và cải thiện hiệu quả.

Kết luận

Chiến lược toàn diện đa động trung bình là một công cụ phân tích rất linh hoạt và mạnh mẽ. Nó cung cấp thông tin chi tiết về nhiều quy mô thời gian, tín hiệu đáng tin cậy, dễ sử dụng và dễ hiểu và có khả năng tùy biến cao. Đồng thời, nó có một số hạn chế có thể được giải quyết thông qua điều chỉnh tham số, kết hợp mô hình vv để thích nghi với các chế độ thị trường phức tạp hơn. Chiến lược có thể phục vụ như một công cụ học tập để hỗ trợ phát triển kỹ năng phân tích kỹ thuật cũng như thực hiện giao dịch thực tế sau khi điều chỉnh phù hợp với nhu cầu cá nhân.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multiple Moving Average Strategy", overlay=true)

// Function to calculate moving average
get_ma(src, length) =>
    ta.sma(src, length)

// Initialize moving average lengths
ma_length_10 = 10
ma_length_20 = 20
ma_length_30 = 30
ma_length_40 = 40
ma_length_50 = 50
ma_length_60 = 60
ma_length_70 = 70
ma_length_80 = 80
ma_length_90 = 90
ma_length_100 = 100

// Calculate 10-day, 20-day, 30-day, 40-day, 50-day, 60-day, 70-day, 80-day, 90-day, and 100-day moving averages
ma_10 = get_ma(close, ma_length_10)
ma_20 = get_ma(close, ma_length_20)
ma_30 = get_ma(close, ma_length_30)
ma_40 = get_ma(close, ma_length_40)
ma_50 = get_ma(close, ma_length_50)
ma_60 = get_ma(close, ma_length_60)
ma_70 = get_ma(close, ma_length_70)
ma_80 = get_ma(close, ma_length_80)
ma_90 = get_ma(close, ma_length_90)
ma_100 = get_ma(close, ma_length_100)

// Generate Buy/Sell signals for the 10 moving averages
buy_signal = close > ma_10
sell_signal = close < ma_10

// Add conditions for each additional moving average length
buy_signal := buy_signal and (close > get_ma(close, ma_length_20))
sell_signal := sell_signal and (close < get_ma(close, ma_length_20))

buy_signal := buy_signal and (close > get_ma(close, ma_length_30))
sell_signal := sell_signal and (close < get_ma(close, ma_length_30))

buy_signal := buy_signal and (close > get_ma(close, ma_length_40))
sell_signal := sell_signal and (close < get_ma(close, ma_length_40))

buy_signal := buy_signal and (close > get_ma(close, ma_length_50))
sell_signal := sell_signal and (close < get_ma(close, ma_length_50))

buy_signal := buy_signal and (close > get_ma(close, ma_length_60))
sell_signal := sell_signal and (close < get_ma(close, ma_length_60))

buy_signal := buy_signal and (close > get_ma(close, ma_length_70))
sell_signal := sell_signal and (close < get_ma(close, ma_length_70))

buy_signal := buy_signal and (close > get_ma(close, ma_length_80))
sell_signal := sell_signal and (close < get_ma(close, ma_length_80))

buy_signal := buy_signal and (close > get_ma(close, ma_length_90))
sell_signal := sell_signal and (close < get_ma(close, ma_length_90))

buy_signal := buy_signal and (close > get_ma(close, ma_length_100))
sell_signal := sell_signal and (close < get_ma(close, ma_length_100))

// Plot Buy/Sell signals on the chart
plotshape(buy_signal, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(sell_signal, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Execute long buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.entry("Buy", strategy.long)

// Execute sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.close("Buy")

// Execute short sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Execute buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.close("Sell")

// Plot closing price and moving averages on the chart
plot(close, title="Close", color=color.blue)
plot(ma_10, title="MA 10", color=color.orange)
plot(ma_20, title="MA 20", color=color.purple)
plot(ma_30, title="MA 30", color=color.blue)
plot(ma_40, title="MA 40", color=color.red)
plot(ma_50, title="MA 50", color=color.green)
plot(ma_60, title="MA 60", color=color.yellow)
plot(ma_70, title="MA 70", color=color.fuchsia)
plot(ma_80, title="MA 80", color=color.gray)
plot(ma_90, title="MA 90", color=color.teal)
plot(ma_100, title="MA 100", color=color.maroon)


Thêm nữa