Chiến lược theo dõi xu hướng Golden Cross và Death Cross của Double EMA


Ngày tạo: 2024-02-29 11:45:42 sửa đổi lần cuối: 2024-02-29 11:45:42
sao chép: 0 Số nhấp chuột: 333
1
tập trung vào
1166
Người theo dõi

Chiến lược theo dõi xu hướng Golden Cross và Death Cross của Double EMA

Tổng quan

Chiến lược theo dõi xu hướng hai ngã vàng của EMA là một chiến lược giao dịch định lượng sử dụng hai chỉ số EMA để xác định hướng xu hướng giá. Chiến lược này xác định xu hướng giá bằng cách tính toán hai bộ tham số khác nhau của chỉ số EMA, kết hợp các tín hiệu ngã vàng và ngã chết.

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

Các chỉ số cốt lõi của chiến lược là hai nhóm EMA, bao gồm một nhóm EMA1 có chu kỳ dài và một nhóm EMA2 có chu kỳ ngắn. Các tham số EMA1 là 21 và tham số EMA2 là 10. Chiến lược tính toán các nhóm EMA này với chu kỳ chuẩn là 4 giờ.

Khi ngắn hơn chu kỳ EMA2 qua dài hơn chu kỳ EMA1, tạo ra một tín hiệu mua. Điều này cho thấy xu hướng ngắn hạn của giá trở nên mạnh mẽ hơn, bắt đầu đi vào xu hướng tăng. Khi ngắn hơn chu kỳ EMA2 dưới xuyên qua dài hơn chu kỳ EMA1, tạo ra một tín hiệu bán.

Để lọc các tín hiệu sai, chiến lược đặt hai bộ chỉ số giao dịch vàng. Chỉ khi hai bộ chỉ số phát ra tín hiệu đồng thời, thì sẽ kích hoạt hoạt động mua và bán tương ứng. Điều này có thể làm giảm hiệu quả giao dịch sai do biến động giá.

Phân tích lợi thế

  • Sử dụng cấu trúc EMA kép, có thể nắm bắt hiệu quả sự thay đổi trong xu hướng giá trong ngắn hạn, để đánh giá xu hướng.
  • Thêm bộ lọc cho hai nhóm chỉ số Gold Fork Dead Fork có thể làm giảm tín hiệu sai lệch và tránh giao dịch không cần thiết do biến động giá.
  • Các chỉ số được tính theo cấp độ 4 giờ để đối phó với biến động giá cao.
  • Cấu trúc chiến lược đơn giản, rõ ràng, dễ hiểu, phù hợp với ứng dụng giao dịch định lượng.

Phân tích rủi ro

  • Cấu trúc EMA kép có hiệu quả ít hơn trong việc đánh giá sự kiện. Nếu gặp sự cân bằng lâu dài, nó sẽ tạo ra tín hiệu sai.
  • Chỉ số cấp 4 giờ không đủ nhạy cảm với các sự kiện bất ngờ. Tin tức bất ngờ quan trọng có thể gây ra tình hình kinh doanh lớn trong vòng 4 giờ, không thể kiểm soát rủi ro hiệu quả.
  • Chiến lược chỉ dựa trên chỉ số kỹ thuật, không kết hợp với thông tin cơ bản. Chỉ số kỹ thuật có thể không có hiệu lực nếu cơ bản của công ty thay đổi đáng kể.

Những rủi ro này có thể được kiểm soát bằng cách:

  1. Thêm các chỉ số EMA cho nhiều chu kỳ thời gian hơn, xây dựng các mô hình.
  2. Phân tích tình cảm bằng văn bản để đánh giá các sự kiện bất ngờ quan trọng và thay đổi vị trí.
  3. Sự thay đổi trong môi trường kinh tế, chính sách và cơ bản của công ty, tham số điều chỉnh động lực.

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

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Tăng sự kết hợp của mô hình. Có thể tạo ra nhiều sự kết hợp của các chỉ số tham số khác nhau, tăng sự ổn định của chiến lược.

  2. Tăng cơ chế dừng lỗ. Thiết lập điểm dừng lỗ hợp lý, có thể kiểm soát hiệu quả tổn thất đơn lẻ.

  3. Tối ưu hóa tham số động. Các tham số của EMA có thể được tối ưu hóa tự động theo môi trường thị trường khác nhau.

  4. Kết hợp công nghệ học máy. Sử dụng các khuôn khổ như Tensorflow để đào tạo mô hình phân loại dự đoán xu hướng giá trong thời gian thực.

Tóm tắt

Chiến lược theo dõi xu hướng của hai EMA là một chiến lược giao dịch xu hướng đơn giản và thực tế. Nó sử dụng chỉ số EMA kép để xác định xu hướng ngắn hạn trong giá để nắm bắt cơ hội hành động theo hướng.

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

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)