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

Hệ thống giao dịch hỗ trợ động hai khung thời gian

Tác giả:ChaoZhang, Ngày: 2024-12-05 16: 44:56
Tags:SMAEMA

img

Tổng quan

Chiến lược này là một hệ thống giao dịch hỗ trợ động hai khung thời gian kết hợp các tín hiệu chéo SMA và EMA trên khung thời gian hàng tuần và hàng ngày. Hệ thống sử dụng các băng hỗ trợ được hình thành giữa các đường trung bình động để xác định xu hướng thị trường và cơ hội giao dịch, tăng độ chính xác giao dịch thông qua xác nhận tín hiệu từ hai khoảng thời gian khác nhau. Chiến lược sử dụng quản lý vị trí dựa trên tỷ lệ phần trăm và tính toán chi phí giao dịch và trượt.

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

Nguyên tắc cốt lõi xoay quanh việc theo dõi đường chéo trung bình động và vị trí tương đối trên hai khung thời gian:

  1. Khung thời gian dài (tuần) sử dụng SMA 20 tuần và EMA 21 tuần, khung thời gian ngắn (ngày) sử dụng SMA 50 ngày và EMA 51 ngày
  2. Trong khung thời gian dài, các tín hiệu dài được tạo ra khi EMA vượt qua SMA và các vị trí được đóng khi vượt xuống
  3. Trong khung thời gian ngắn, tín hiệu dài xảy ra khi EMA vượt trên SMA và EMA ngắn hạn vượt trên EMA dài hạn
  4. Tất cả các vị trí dài được đóng khi khung thời gian ngắn tạo ra tín hiệu ngắn hoặc khung thời gian dài cho thấy đường chéo giảm
  5. Chiến lược hoạt động trong phạm vi thời gian được chỉ định với việc đóng lệnh tự động bên ngoài các phạm vi này

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

  1. Cơ chế xác nhận nhiều lần: Giảm tín hiệu sai thông qua xác nhận khung thời gian kép
  2. Phạm vi hỗ trợ động: Phạm vi hỗ trợ giữa các đường trung bình động thích nghi với những thay đổi của thị trường
  3. Quản lý rủi ro toàn diện: Bao gồm việc xem xét chi phí giao dịch và trượt với định dạng vị trí dựa trên tỷ lệ phần trăm
  4. Khả năng thích nghi mạnh mẽ: Phạm vi hỗ trợ tự động điều chỉnh theo biến động thị trường
  5. Các quy tắc hoạt động rõ ràng: Các điều kiện nhập cảnh và xuất cảnh được xác định rõ, dễ thực hiện và kiểm tra hậu quả

Rủi ro chiến lược

  1. Rủi ro thị trường hỗn loạn: Có thể tạo ra các tín hiệu sai thường xuyên trong các thị trường bên cạnh
  2. Rủi ro chậm trễ: Trung bình động có sự chậm trễ vốn có, có khả năng thiếu các điểm nhập khẩu tối ưu
  3. Độ nhạy của các tham số: Hiệu suất chiến lược phụ thuộc rất nhiều vào sự lựa chọn thời gian trung bình động
  4. Sự phụ thuộc vào môi trường thị trường: Hiệu suất tốt hơn trong các thị trường xu hướng nhưng có thể gặp khó khăn trong điều kiện biến động cao
  5. Rủi ro định hình vị trí: Định vị phần trăm cố định có thể gây ra rủi ro quá mức trong một số điều kiện thị trường nhất định

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

  1. Tích hợp các chỉ số biến động: Xem xét thêm ATR cho kích thước vị trí động
  2. Tối ưu hóa lựa chọn tham số: Kiểm tra lại các khoảng thời gian trung bình động khác nhau để tối ưu hóa hiệu suất hệ thống
  3. Thêm các bộ lọc môi trường thị trường: Thực hiện các chỉ số sức mạnh xu hướng để lọc các điều kiện thị trường không phù hợp
  4. Cải thiện các cơ chế dừng lỗ: Xem xét thêm việc dừng lại hoặc dừng cố định để kiểm soát rủi ro tốt hơn
  5. Cải thiện quản lý vị trí: Điều chỉnh kích thước vị trí theo động dựa trên sức mạnh tín hiệu và biến động thị trường

Kết luận

Chiến lược này xây dựng một hệ thống giao dịch tương đối mạnh mẽ bằng cách kết hợp các tín hiệu chéo trung bình động từ các khung thời gian khác nhau. Nó xác định xu hướng thị trường thông qua khái niệm băng tần hỗ trợ và sử dụng nhiều cơ chế xác nhận để cải thiện độ chính xác giao dịch.


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

//@version=5
strategy("Demo GPT - Bull Market Support Band", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

start_date = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")

lsmaLength = input.int(20, title="Long SMA Length", minval=1)
lemaLength = input.int(21, title="Long EMA Length", minval=1)
customLongTimeframe = input.timeframe("W", title="Long Timeframe")  // Khung thời gian dài
ssmaLength = input.int(50, title="Short SMA Length", minval=1)
semaLength = input.int(51, title="Short EMA Length", minval=1)
customShortTimeframe = input.timeframe("D", title="Short Timeframe")  // Khung thời gian ngắn

source = close

// Tính toán SMA và EMA cho khung thời gian dài
smaLong = ta.sma(source, lsmaLength)
emaLong = ta.ema(source, lemaLength)
outSmaLong = request.security(syminfo.tickerid, customLongTimeframe, smaLong)
outEmaLong = request.security(syminfo.tickerid, customLongTimeframe, emaLong)

// Tính toán SMA và EMA cho khung thời gian ngắn
smaShort = ta.sma(source, ssmaLength)
emaShort = ta.ema(source, semaLength)
outSmaShort = request.security(syminfo.tickerid, customShortTimeframe, smaShort)
outEmaShort = request.security(syminfo.tickerid, customShortTimeframe, emaShort)

// Plot các chỉ báo trên biểu đồ
smaPlotLong = plot(outSmaLong, color=color.new(color.red, 0), title='20w SMA (Long)')
emaPlotLong = plot(outEmaLong, color=color.new(color.green, 0), title='21w EMA (Long)')
smaPlotShort = plot(outSmaShort, color=color.new(color.red, 0), title='20d SMA (Short)')
emaPlotShort = plot(outEmaShort, color=color.new(color.green, 0), title='21d EMA (Short)')

// Fill vùng giữa các đường SMA và EMA
fill(smaPlotLong, emaPlotLong, color=color.new(color.orange, 75), fillgaps=true)
fill(smaPlotShort, emaPlotShort, color=color.new(color.orange, 75), fillgaps=true)

// Điều kiện long và short cho khung thời gian dài
longConditionLong = ta.crossover(outEmaLong, outSmaLong)
shortConditionLong = ta.crossunder(outEmaLong, outSmaLong)

// Điều kiện long và short cho khung thời gian ngắn
longConditionShort = ta.crossover(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong)
shortConditionShort = ta.crossunder(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong) // Điều kiện short khi EMA ngắn hạn cắt xuống dưới SMA ngắn hạn và EMA ngắn hạn cao hơn EMA dài hạn

// Kiểm tra điều kiện trong khoảng thời gian được chỉ định
inDateRange = true

// Nếu khung ngắn hạn xuất hiện tín hiệu short, ưu tiên đóng tất cả các lệnh Long
if shortConditionShort and inDateRange
    strategy.close_all()

// Nếu khung dài có tín hiệu short, đóng tất cả các lệnh Long
if shortConditionLong and inDateRange
    strategy.close_all()

// Nếu khung ngắn hạn có tín hiệu long và không có tín hiệu short từ khung dài, vào lệnh Long
if longConditionShort and not shortConditionLong and not shortConditionShort and inDateRange
    strategy.entry("Long", strategy.long)

// Đóng tất cả các lệnh khi không trong khoảng thời gian được chọn
if not inDateRange
    strategy.close_all()


Có liên quan

Thêm nữa