Chiến lược giao dịch Double EMA Golden Cross và Death Cross


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

Chiến lược giao dịch Double EMA Golden Cross và Death Cross

Tổng quan

Chiến lược này sử dụng hai đường EMA đồng nhất để đánh giá thời gian vào và ra. Cụ thể, khi đường EMA nhanh từ phía dưới phá vỡ đường EMA chậm, tạo ra tín hiệu vàng; khi đường EMA nhanh từ phía trên rơi xuống và phá vỡ đường EMA chậm, tạo ra tín hiệu chết. Chiến lược này rất đơn giản và dễ thực hiện, một chiến lược giao dịch rất phổ biến.

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

Mã cốt lõi của chiến lược này là:

fast = input(25, title="Fast") 
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)

longCondition = crossover(matype1, matype2) 
shortCondition = crossunder(matype1, matype2)

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)  
    strategy.entry("Short", strategy.short)

Chiến lược này trước tiên đặt hai đường trung bình EMA nhanh và chậm, trong đó đường EMA nhanh có chu kỳ 25 và đường EMA chậm có chu kỳ 75. Sau đó tính giá trị của hai đường EMA. Khi đường EMA nhanh từ phía dưới phá vỡ đường EMA chậm, điều kiện longCondition là đúng; Khi đường EMA nhanh từ phía trên xuống phá vỡ EMA chậm, điều kiện shortCondition là đúng.

Chiến lược này sử dụng tính chất phẳng của đường trung bình EMA để lọc hiệu quả tiếng ồn thị trường, đồng thời có thể nhanh chóng nắm bắt các thay đổi trong xu hướng. Một giao dịch giao dịch giữa hai đường trung bình EMA là một tín hiệu giao dịch mạnh mẽ, có thể kiểm soát rủi ro giao dịch hiệu quả.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Nó được thiết kế đơn giản, trực quan và dễ hiểu.

  2. Sử dụng EMA để làm mịn biến động thị trường và lọc hiệu quả các tín hiệu giả.

  3. Cây gai vàng là tín hiệu giao dịch mạnh hơn, có thể kiểm soát rủi ro hiệu quả.

  4. Chu kỳ EMA có thể được điều chỉnh linh hoạt để phù hợp với môi trường thị trường khác nhau.

  5. Dễ dàng sử dụng với các chỉ số kỹ thuật khác.

  6. Có thể đạt được hiệu quả chiến lược tốt hơn bằng cách tối ưu hóa các tham số EMA.

Phân tích rủi ro

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

  1. Trong các trường hợp bất ổn, EMA giao nhau thường xuyên, tạo ra một số lượng lớn các tín hiệu giao dịch không có hiệu lực.

  2. EMA bị tụt hậu và có thể đã bỏ lỡ cơ hội rút ngắn.

  3. Chỉ cần EMA Cross không thể xác định được điểm chuyển hướng, có một giới hạn lợi nhuận nhất định.

  4. Chu kỳ EMA cố định không thể thích ứng với sự thay đổi của thị trường.

  5. Cần có sự hỗ trợ tài chính mạnh mẽ, nếu không sẽ có rủi ro lớn.

  6. Cần có các biện pháp ngăn chặn nghiêm ngặt, nếu không, tổn thất có thể rất lớn.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các tham số chu kỳ EMA để thích ứng với các tình huống thị trường khác nhau.

  2. Thêm các bộ lọc cho các chỉ số khác như MACD, Brinband và nhiều hơn nữa để cải thiện chất lượng tín hiệu.

  3. Tăng các chỉ số định hướng, như ATR Stop, ADX, và giảm các giao dịch không hiệu quả.

  4. Kết hợp nhiều phân tích theo chu kỳ thời gian, để đánh giá xu hướng.

  5. Sử dụng phương pháp học máy để tối ưu hóa động mạch EMA.

  6. Tối ưu hóa quản lý vị thế để kiểm soát rủi ro.

  7. Tối ưu hóa chiến lược dừng lỗ để giảm tổn thất đơn lẻ.

Tóm tắt

Chiến lược này sử dụng giao điểm vàng của hai đường trung bình EMA như một tín hiệu giao dịch, tạo thành một chiến lược theo xu hướng cổ điển hơn. Chiến lược này rất đơn giản và dễ dàng kết hợp với các chỉ số kỹ thuật khác, phù hợp với các nhà đầu tư có nhu cầu ít hơn về phán đoán xu hướng.

Mã nguồn chiến lược
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars

//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)

matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
 
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12) 
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

fast = input(25, title="Fast")
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)


signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow) 



hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
 

longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
    strategy.entry("Short", strategy.short)
    

//--------------------------------------------------------

//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)

vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open

volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open

cold1=#800000
cold2=#FF0000
cold3=color.orange

colu1=#006400
colu2=color.lime
colu3=#7FFFD4

ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na

barcolor(ac)