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

Chiến lược định lượng chéo xu hướng SMA dài hạn

Tác giả:ChaoZhang, Ngày: 2025-01-06 17:01:08
Tags:SMAEMA

img

Tổng quan

Chiến lược này là một hệ thống giao dịch định lượng dựa trên các tín hiệu chéo trung bình di chuyển đơn giản (SMA) đa giai đoạn. Nó chủ yếu xác định các cơ hội rút lui trong xu hướng tăng dài hạn. Chiến lược sử dụng SMA của năm giai đoạn khác nhau (5, 10, 20, 60 và 120 ngày) để xác định xu hướng thị trường và cơ hội giao dịch thông qua các vị trí tương đối và tín hiệu chéo.

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

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

  1. Xác định xu hướng dài hạn thông qua vị trí tương đối của SMA20 và SMA60, xác nhận xu hướng tăng khi SMA20 trên SMA60.
  2. Các tín hiệu mua được kích hoạt khi SMA5 ngắn hạn vượt trên SMA20 sau khi giảm, cho thấy sự phục hồi trong xu hướng tăng.
  3. Các tín hiệu thoát xảy ra khi SMA20 vượt trên SMA5, cho thấy động lực ngắn hạn suy yếu.
  4. Chiến lược bao gồm chức năng lọc thời gian để hạn chế thời gian kiểm tra ngược, tăng tính linh hoạt.

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

  1. Logic rõ ràng và đơn giản dễ hiểu và thực hiện, tránh tính toán phức tạp.
  2. lọc tiếng ồn hiệu quả thông qua việc sử dụng các trung bình động nhiều thời gian, cải thiện độ tin cậy tín hiệu.
  3. Tập trung vào các cơ hội rút lui trong các thị trường xu hướng, phù hợp với các nguyên tắc chính theo xu hướng.
  4. Sử dụng SMA thay vì EMA làm giảm độ nhạy của giá và tín hiệu sai.
  5. Logic vào và ra rõ ràng tạo điều kiện cho việc thực hiện và quản lý rủi ro.

Rủi ro chiến lược

  1. Sự chậm trễ vốn có trong các hệ thống trung bình động có thể dẫn đến thời gian vào và ra không tối ưu.
  2. Sự giao thoa thường xuyên trong các thị trường khác nhau có thể tạo ra các tín hiệu sai quá mức.
  3. Thiếu cơ chế lọc biến động khiến chiến lược phải chịu rủi ro rút vốn đáng kể trong các giai đoạn biến động cao.
  4. Độ tin cậy của tín hiệu có thể bị ảnh hưởng nếu không có xác nhận âm lượng.
  5. Các thông số trung bình động cố định có thể không phù hợp với tất cả các điều kiện thị trường.

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

  1. Thực hiện chỉ số ATR để lọc biến động để tránh giao dịch trong các giai đoạn biến động cao.
  2. Tích hợp cơ chế xác nhận khối lượng để tăng độ tin cậy tín hiệu.
  3. Phát triển các giai đoạn trung bình động thích nghi để phù hợp hơn với môi trường thị trường khác nhau.
  4. Thêm các bộ lọc sức mạnh xu hướng, chẳng hạn như chỉ số ADX, để đảm bảo giao dịch chỉ trong xu hướng mạnh.
  5. Cải thiện các cơ chế dừng lỗ, bao gồm việc dừng lại, để kiểm soát rủi ro tốt hơn.

Tóm lại

Chiến lược này xây dựng một hệ thống giao dịch tập trung vào việc nắm bắt các cơ hội giảm trong xu hướng tăng dài hạn thông qua việc sử dụng phối hợp các SMA nhiều giai đoạn. Thiết kế của nó thực tế và đơn giản, cung cấp khả năng hiểu biết và thực thi tốt. Sự mạnh mẽ và đáng tin cậy của chiến lược có thể được tăng thêm thông qua việc giới thiệu lọc biến động, xác nhận khối lượng và các biện pháp tối ưu hóa khác.


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

//@version=6
strategy("Long-Term Growing Stock Strategy", overlay=true)
// Date Range
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2014"),title="Start Date", group="Backtest Time Period",tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " +"zone of the chart or of your computer.")
backtestEndDate = input(timestamp("31 Dec 2024"), title="End Date", group="Backtest Time Period")
// STEP 2. See if current bar falls inside the date range
inTradeWindow = true


// Calculate EMAs
// ema20 = ta.ema(close, ema20_length)
// ema60 = ta.ema(close, ema60_length)
// ema120 = ta.ema(close, ema120_length)
sma5 = ta.sma(close, 5)
sma10 = ta.sma(close, 10)
sma20 = ta.sma(close, 20)
sma60 = ta.sma(close, 60)
sma120 = ta.sma(close, 120)

// Long-term growth condition: EMA 20 > EMA 60 > EMA 120
longTermGrowth = sma20 > sma60
//  and ema60 > ema120

// Entry condition: Stock closes below EMA 20 and then rises back above EMA 10

// entryCondition = ta.crossover(close, ema20) or (close[1] < ema20[1] and close > ema20)
entryCondition =  sma5[1] <= sma20[1] and sma5 > sma20
// ta.crossover(sma5, sma20)

// Exit condition: EMA 20 drops below EMA 60
// exitCondition = ema5 < ema60 or (year == 2024 and month == 12 and dayofmonth == 30)
exitCondition = ta.crossover(sma20, sma5)

// Execute trades
if entryCondition and inTradeWindow
    strategy.entry("Long Entry", strategy.long)

if exitCondition and inTradeWindow
    strategy.close("Long Entry")
// plotchar(true, char="sma5: " + str.tostring(sma5))
// plotchar(true, char="sma5: " + sma20)
// label.new(x=bar_index, y=high + 10, text="SMA 5: " + str.tostring(sma5), color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.small)
// label.new(x=bar_index, y=low, text="SMA 20: " + str.tostring(sma20), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)


// x = time + (time - time[1]) * offset_x

//     var label lab = na
//     label.delete(lab)
//     lab := label.new(x=x, y=0, text=txt, xloc=xloc.bar_time, yloc=yloc.belowbar, color=color.red, textcolor=color.black, size=size.normal, style=label.style_label_up)
//     label.set_x(lab, x)



// Plot EMAs for visualization
// plot(ema20, color=color.red, title="EMA 20")
// plot(ema60, color=color.green, title="EMA 60")
// plot(ema120, color=color.blue, title="EMA 120")

Có liên quan

Thêm nữa