Chiến lược toàn diện của nhiều đường trung bình động


Ngày tạo: 2023-12-22 11:56:42 sửa đổi lần cuối: 2023-12-22 11:56:42
sao chép: 0 Số nhấp chuột: 733
1
tập trung vào
1621
Người theo dõi

Chiến lược toàn diện của nhiều đường trung bình động

Tổng quan

Chiến lược tổng hợp đường trung bình di chuyển đa dạng là một chiến lược phân tích kỹ thuật rất toàn diện và phổ biến. Nó kết hợp các đường trung bình di chuyển của nhiều chu kỳ thời gian để cung cấp cái nhìn toàn diện về xu hướng thị trường. Chiến lược này giúp xác định các điểm vào và thoát tiềm năng bằng cách tạo ra các tín hiệu mua và bán rõ ràng.

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 các trung bình di chuyển trong nhiều khoảng thời gian khác nhau, cụ thể bao gồm các trung bình di chuyển từ 10, 20, 30 ngày đến 100 ngày. Các trung bình di chuyển này được thiết lập như là giá đóng cửa trong ngày với giá đóng cửa trung bình trong một khoảng thời gian nhất định trong quá khứ (như 10 ngày, 20 ngày, v.v.). Ví dụ, trung bình di chuyển 20 ngày là giá đóng cửa trung bình trong 20 ngày qua.

Khi giá đóng cửa hôm nay cao hơn tất cả các trung bình di chuyển này, sẽ tạo ra tín hiệu mua. Khi giá đóng cửa hôm nay thấp hơn tất cả các trung bình di chuyển này, sẽ tạo ra tín hiệu bán. Như vậy, tín hiệu chỉ được tạo ra khi tất cả các trung bình di chuyển của tất cả các chu kỳ đều hướng về cùng một hướng, do đó lọc ra nhiều cơ hội giao dịch ồn ào, làm cho tín hiệu đáng tin cậy hơn.

Ưu điểm

  1. Cung cấp những hiểu biết theo nhiều quy mô thời gian, thích ứng với các môi trường thị trường khác nhau

  2. Thông qua nhiều xác nhận, lọc Noise, tín hiệu đáng tin cậy hơn

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

  4. Có khả năng tùy chỉnh cao, người dùng có thể điều chỉnh các tham số để đáp ứng nhu cầu cá nhân

  5. Cung cấp hướng dẫn rõ ràng về đầu vào, dừng lỗ và dừng lại, giúp quản lý rủi ro

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

  1. Nhiều đường trung bình di chuyển có thể giao nhau khi thị trường đang trong giai đoạn bất ổn, dẫn đến tín hiệu không rõ ràng. Có thể giảm khả năng giao nhau bằng cách điều chỉnh số lượng và độ dài của chu kỳ trung bình di chuyển.

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

  3. Tín hiệu tạo ra sự chậm trễ, không thể bắt được xu hướng trước điểm biến giá. Kết hợp với các chỉ số tiên phong khác như MACD có thể giúp cải thiện phán đoán về sự biến đổi xu hướng.

  4. Số lần giao dịch có thể không nhiều, khó có được lợi nhuận ổn định. Độ dài của đường trung bình di chuyển có thể được rút ngắn thích hợp hoặc được sử dụng với các chiến lược / chỉ số khác.

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

  1. Điều chỉnh tham số: điều chỉnh số lượng và độ dài chu kỳ của trung bình di chuyển để tìm kiếm sự kết hợp tham số tốt nhất. Ví dụ: sự kết hợp của trung bình di chuyển 5 ngày, 10 ngày và 20 ngày có thể được kiểm tra.

  2. Kết hợp với các chỉ số khác: được sử dụng với các chỉ số khác như MACD, RSI, để tăng cường độ bền vững của chiến lược. Các chỉ số khác nhau có thể bổ sung cho nhau.

  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 phá vỡ, hệ thống theo dõi xu hướng, tăng sự ổn định. Các chiến lược khác nhau có thể phân tán rủi ro.

  4. Tự động tìm kiếm tối ưu hóa: Sử dụng thuật toán để tự động kiểm tra các tham số khác nhau, tìm kiếm sự kết hợp tham số tối đa mong muốn. Giảm can thiệp của con người, tăng hiệu quả.

Tóm tắt

Chiến lược tổng hợp đa trung bình di chuyển là một công cụ chiến lược rất toàn diện và mạnh mẽ. Nó cung cấp những hiểu biết theo nhiều quy mô thời gian, tín hiệu đáng tin cậy, dễ hiểu và có khả năng tùy chỉnh cao. Ngoài ra, có một số hạn chế, nhưng có thể được tối ưu hóa để thích ứng với các tình huống thị trường phức tạp hơn bằng cách điều chỉnh tham số và kết hợp với các mô hình khác.

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