Tài nguyên đang được tải lên... tải...

Xu hướng động lượng trung bình đa động theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-11-12 15:05:09
Tags:SMARSIMA

img

Tổng quan

Chiến lược này là một hệ thống giao dịch theo xu hướng dựa trên nhiều đường trung bình chuyển động và chỉ số động lực. Nó chủ yếu sử dụng các mối quan hệ năng động giữa đường trung bình chuyển động đơn giản (SMA) 20 ngày, 50 ngày, 150 ngày và 200 ngày, kết hợp với các chỉ số khối lượng và RSI để nắm bắt xu hướng tăng mạnh trên khung thời gian hàng ngày và các vị trí thoát khi xu hướng suy yếu. Chiến lược này lọc hiệu quả các tín hiệu sai và cải thiện độ chính xác giao dịch thông qua việc sử dụng phối hợp nhiều chỉ số kỹ thuật.

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

Logic cốt lõi bao gồm các thành phần chính sau:

  1. Hệ thống trung bình động: Sử dụng trung bình động 20/50/150/200 ngày để xây dựng một hệ thống đánh giá xu hướng, đòi hỏi sự sắp xếp tăng.
  2. Xác nhận đà: Sử dụng chỉ số RSI và đường trung bình động của nó để đánh giá đà giá, yêu cầu RSI trên 55 hoặc RSI SMA trên 50 và tăng.
  3. Xác minh khối lượng: Xác nhận hiệu lực tín hiệu bằng cách so sánh khối lượng trung bình 20 ngày và khối lượng gần đây.
  4. Xác minh sự bền vững của xu hướng: Kiểm tra xem MA 50 ngày duy trì xu hướng tăng trong ít nhất 25 ngày trong 40 ngày giao dịch.
  5. Xác nhận vị trí: Giá phải duy trì trên 150 ngày MA trong ít nhất 20 ngày giao dịch.

Điều kiện mua đòi hỏi:

  • Hơn 4 ngày tăng trong 10 ngày qua với ít nhất 1 ngày có khối lượng lớn
  • Chỉ số RSI đáp ứng các điều kiện động lực
  • Hệ thống trung bình động cho thấy sự liên kết tăng và tăng liên tục
  • Giá ổn định trên MA 150 ngày

Điều kiện bán bao gồm:

  • Giá phá vỡ dưới mức MA 150 ngày
  • Giảm lượng hàng loạt
  • MA 50 ngày vượt dưới MA 150 ngày
  • Nến giảm gần đây với khối lượng tăng

Ưu điểm chiến lược

  1. Chứng minh chéo nhiều chỉ số kỹ thuật làm giảm đánh giá sai
  2. Các yêu cầu bền vững về xu hướng nghiêm ngặt lọc biến động ngắn hạn
  3. Tích hợp phân tích khối lượng cải thiện độ tin cậy tín hiệu
  4. Điều kiện dừng lỗ và thu lợi nhuận rõ ràng kiểm soát rủi ro một cách hiệu quả
  5. Thích hợp để nắm bắt xu hướng trung bình đến dài hạn, giảm tần suất giao dịch
  6. Logic chiến lược rõ ràng, dễ hiểu và thực hiện

Rủi ro chiến lược

  1. Hệ thống trung bình động có trễ, có thể bỏ lỡ các giai đoạn xu hướng ban đầu
  2. Các điều kiện nhập cảnh nghiêm ngặt có thể bỏ lỡ một số cơ hội giao dịch
  3. Có thể tạo ra các tín hiệu sai thường xuyên trong thị trường hỗn loạn
  4. Sự chậm trễ trong việc xác định sự đảo ngược thị trường
  5. Cần quy mô vốn lớn hơn để chịu được việc rút vốn

Các gợi ý kiểm soát rủi ro:

  • Đặt các vị trí dừng lỗ hợp lý
  • Quản lý tiền bảo thủ
  • Xem xét thêm các chỉ số xác nhận xu hướng
  • Điều chỉnh các thông số dựa trên môi trường thị trường

Hướng dẫn tối ưu hóa chiến lược

  1. Thêm tham số thích nghi
  • Điều chỉnh động các giai đoạn MA dựa trên biến động thị trường
  • Tối ưu hóa các thiết lập ngưỡng RSI
  1. Cải thiện cơ chế dừng lỗ
  • Thêm các điểm dừng
  • Thiết lập dừng dựa trên thời gian
  1. Giới thiệu Phân tích môi trường thị trường
  • Thêm các chỉ số sức mạnh xu hướng
  • Xem xét các chỉ số biến động
  1. Tối ưu hóa kích thước giao dịch
  • Thiết kế quản lý vị trí động
  • Điều chỉnh dựa trên cường độ tín hiệu

Tóm lại

Đây là một chiến lược theo xu hướng được thiết kế nghiêm ngặt, có hiệu quả nắm bắt các cơ hội xu hướng mạnh thông qua việc sử dụng phối hợp nhiều chỉ số kỹ thuật. Những lợi thế chính của chiến lược nằm trong cơ chế xác nhận tín hiệu toàn diện và hệ thống kiểm soát rủi ro nghiêm ngặt. Mặc dù có một số chậm trễ, thông qua tối ưu hóa tham số hợp lý và quản lý rủi ro, chiến lược có thể duy trì hiệu suất ổn định trong hoạt động dài hạn. Các nhà đầu tư được khuyên phải chú ý đến khả năng thích nghi môi trường thị trường, kiểm soát các vị trí hợp lý và thực hiện tối ưu hóa nhắm mục tiêu dựa trên điều kiện thực tế khi áp dụng chiến lược trong giao dịch trực tiếp.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Micho's 150 (1D Time Frame Only)", overlay=true)

// Define the length for the SMAs and RSI
sma20Length = 20
sma50Length = 50
sma150Length = 150
sma200Length = 200
volumeMaLength = 20
rsiLength = 14
rsiSmaLength = 14
smaCheckLength = 40  // Check the last month of trading days (~20 days)
requiredRisingDays = 25  // Require SMA to rise in at least 16 of the past 20 days
sma150AboveSma200CheckDays = 1  // Require SMA150 > SMA200 for the last 10 days

// Calculate the SMAs for price
sma20 = ta.sma(close, sma20Length)
sma50 = ta.sma(close, sma50Length)
sma150 = ta.sma(close, sma150Length)
sma200 = ta.sma(close, sma200Length)

// Calculate the 20-period moving average of volume
volumeMA20 = ta.sma(volume, volumeMaLength)

// Calculate the 14-period RSI
rsi = ta.rsi(close, rsiLength)

// Calculate the 14-period SMA of RSI
rsiSMA = ta.sma(rsi, rsiSmaLength)

// Check if most of the last 5 days are buyer days (close > open)
buyerDays = 0
for i = 0 to 9
    if close[i] > open[i]
        buyerDays := buyerDays + 1

// Check if at least 1 day has volume higher than the 20-period volume MA
highVolumeDays = 0
for i = 0 to 9
    if close[i] > open[i] and volume[i] > volumeMA20
        highVolumeDays := highVolumeDays + 1

// Define the new RSI condition
rsiCondition = (rsi >= 55) or (rsiSMA > 50 and rsi > rsi[1])

// Check if the 50-day SMA has been rising on at least 16 of the last 20 trading days
risingDays = 0
for i = 1 to smaCheckLength
    if sma50[i] > sma50[i + 1]
        risingDays := risingDays + 1

// Check if the SMA has risen on at least 16 of the last 20 days
sma50Rising = risingDays >= requiredRisingDays

// Check if the price has been above the SMA150 for the last 20 trading days
priceAboveSma150 = true
for i = 1 to smaCheckLength
    if close[i] < sma150[i]
        priceAboveSma150 := false

// Check if the SMA150 has been above the SMA200 for the last 10 days
sma150AboveSma200 = true
for i = 1 to sma150AboveSma200CheckDays
    if sma150[i] < sma200[i]
        sma150AboveSma200 := false

// Define the conditions for the 150-day and 200-day SMAs being rising
sma150Rising = sma150 > sma150[1]
sma200Rising = sma200 > sma200[1]

// Check if most of the last 5 days are seller days (close < open)
sellerDays = 0
for i = 0 to 9
    if close[i] < open[i]
        sellerDays := sellerDays + 1

// Check if at least 1 day has seller volume higher than the 20-period volume MA
highSellerVolumeDays = 0
for i = 0 to 9
    if close[i] < open[i] and volume[i] > volumeMA20
        highSellerVolumeDays := highSellerVolumeDays + 1

// Check in the last N days the price below 150
priceBelowSma150 = true
for i = 0 to 0
    if close[i] > sma150[i]
        priceBelowSma150 := false

// Restrict the strategy to 1D time frame
if timeframe.isdaily
    // Buy condition:
    // - Most of the last 5 days are buyer days (buyerDays > 2)
    // - At least 1 of those days has high buyer volume (highVolumeDays >= 1)
    // - RSI SMA (14-period) between 45 and 50 with RSI >= 55, or RSI SMA > 50 and RSI rising
    // - 50-day SMA > 150-day SMA and 150-day SMA > 200-day SMA
    // - 50-day SMA has been rising on at least 16 of the last 20 trading days
    // - The price hasn't been below the 150-day SMA in the last 20 days
    // - 150-day SMA has been above the 200-day SMA for the last 10 days
    // - 150-day and 200-day SMAs are rising
    buyCondition = (close > sma150 and buyerDays > 4 and highVolumeDays >= 1 and rsiCondition  and sma50 > sma150 and sma50Rising and sma150Rising and sma200Rising and priceAboveSma150)

    // Sell condition:
    // - Price crossing below SMA 150
    // - Seller volume (current volume > volume MA 20)
    // - 150-day SMA crosses below 200-day SMA
    // - Most of the last 5 days are seller days (sellerDays > 2) and at least 1 day of higher seller volume (highSellerVolumeDays >= 1)
    sellCondition = (priceBelowSma150 and (sma50 < sma150 or (sellerDays >5 and highSellerVolumeDays >= 5)))

    // Execute buy when all conditions are met
    if (buyCondition)
        strategy.entry("Buy", strategy.long)

    // Execute sell when all conditions are met
    if (sellCondition)
        strategy.close("Buy")


Có liên quan

Thêm nữa