Chiến lược mũi tên giao nhau của đường trung bình động kép


Ngày tạo: 2023-11-21 17:00:49 sửa đổi lần cuối: 2023-11-21 17:00:49
sao chép: 0 Số nhấp chuột: 604
1
tập trung vào
1617
Người theo dõi

Chiến lược mũi tên giao nhau của đường trung bình động kép

Tổng quan

Chiến lược này đánh giá thời gian mua và bán bằng cách tính toán đường chéo hai đường bằng nhau của chỉ số MACD. Nó vẽ hình mũi tên trên biểu đồ để gợi ý tín hiệu giao dịch.

Nguyên tắc

Chiến lược này đầu tiên tính toán đường nhanh (EMA 12), đường chậm (EMA 26) và chênh lệch MACD. Sau đó, tính toán thời gian mua và bán dựa trên đường nhanh và đường chậm và các giá trị dương và âm của chênh lệch MACD:

  1. Kích thước của MACD là 0 khi đường nhanh đi qua đường chậm.
  2. Giao thức bán khi đường nhanh đi qua đường chậm (đường chết) và đường MACD đi qua 0

Để lọc tín hiệu giả, mã cũng đánh giá tình trạng tín hiệu của dòng K trước đó. Chỉ khi một trong các dòng K hiện tại là tín hiệu ngược lại (mua chuyển sang bán hoặc bán chuyển sang mua), tín hiệu hiện tại sẽ được kích hoạt.

Ngoài ra, mã cũng vẽ một hình ảnh mũi tên trên đường K để gợi ý thời gian mua và bán.

Ưu điểm

Chiến lược này có những ưu điểm sau:

  1. Sử dụng phán đoán chéo hai đường bằng nhau, có thể lọc hiệu quả tiếng ồn thị trường, nhận biết xu hướng
  2. Kết hợp với phân biệt giá trị của MACD, bạn có thể tránh bị bỏ phiếu và sai lệch
  3. Sử dụng mũi tên để gợi ý thời gian mua và bán, điều hành rõ ràng hơn
  4. Các quy tắc đơn giản, rõ ràng, dễ hiểu và dễ sao chép

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

Chiến lược này cũng có một số rủi ro:

  1. Giao chéo hai đường trung bình dễ tạo ra tín hiệu giả, có thể dẫn đến giao dịch quá mức. Các tham số đường trung bình có thể được điều chỉnh thích hợp hoặc thêm các điều kiện lọc khác để giảm tín hiệu giả
  2. Không thể đánh giá được sự biến động trong xu hướng, có thể có tổn thất. Có thể kết hợp với chỉ số xu hướng như ADX để tránh điều này
  3. Các điều kiện mua và bán cố định làm cho chiến lược trở nên cơ giới, không thể thích ứng với sự thay đổi của thị trường. Bạn có thể thử các phương pháp thích ứng tự động như học máy để tối ưu hóa

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Kiểm tra các tổ hợp tham số khác nhau để tìm ra các tham số nhanh, chậm và MACD tốt nhất
  2. Thêm các điều kiện nhập cảnh, chẳng hạn như thông qua các tín hiệu lọc khối lượng giao dịch
  3. Tăng cơ chế ngăn chặn để kiểm soát tổn thất đơn lẻ
  4. Kết hợp các chỉ số biến động như VIX để đánh giá sở thích rủi ro
  5. Thử nghiệm mô hình học máy thay cho các quy tắc cố định để thực hiện tối ưu hóa tự thích ứng của chiến lược

Tóm tắt

Chiến lược mũi tên chéo song song này nói chung là đơn giản và thực tế, thông qua phán đoán chéo song song và lọc chênh lệch MACD, bạn có thể nhận ra điểm mua và bán trong xu hướng đường dài và trung bình, tránh bỏ lỡ biến đổi giá. Các dấu hiệu mũi tên cũng làm cho hoạt động rõ ràng hơn và rõ ràng hơn.

Mã nguồn chiến lược
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)

//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]

buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows

timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))

plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)


//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))

strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))



// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())

//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge