Chiến lược hai EMA Golden Cross

Tác giả:ChaoZhang, Ngày: 2024-01-22 11:04:41
Tags:

img

Tổng quan

Chiến lược này tạo ra tín hiệu giao dịch dựa trên sự giao thoa giữa đường EMA nhanh và đường EMA chậm. Khi đường EMA nhanh vượt qua trên đường EMA chậm, một tín hiệu mua được tạo ra. Khi đường EMA nhanh vượt qua dưới đường EMA chậm, một tín hiệu bán được tạo ra. Chiến lược này sử dụng lợi thế của đường trung bình động để theo dõi hiệu quả xu hướng thị trường và tạo ra tín hiệu giao dịch trong quá trình bắt đầu xu hướng.

Chiến lược logic

Các chỉ số cốt lõi của chiến lược này là đường EMA nhanh và đường EMA chậm. Chiến lược thiết lập hai đường EMA với các thông số khác nhau, với 10 cho EMA nhanh và 20 cho EMA chậm. Đường EMA 10 ngày phản ứng nhanh hơn với những thay đổi giá, trong khi đường EMA 20 ngày phản ứng chậm hơn. Khi đường EMA ngắn hạn vượt qua đường EMA dài hạn, điều đó có nghĩa là đường trung bình ngắn hạn bắt đầu dẫn đường đường dài hạn lên, ngụ ý thị trường có thể chuyển sang trạng thái tăng. Tại thời điểm này, một tín hiệu mua được tạo ra. Ngược lại, khi EMA ngắn giảm xuống dưới EMA dài, điều đó có nghĩa là EMA ngắn bắt đầu mất sức mạnh dẫn đầu trước EMA dài, ngụ ý thị trường có thể chuyển sang trạng thái giảm. Theo đó, một tín hiệu bán được tạo ra.

Bằng cách tận dụng logic chéo giữa các đường EMA nhanh và chậm, chiến lược này nắm bắt các điểm chuyển đổi của xu hướng thị trường kịp thời và tạo ra các tín hiệu giao dịch phù hợp. Trong khi đó, EMA có khả năng lọc ra các tín hiệu sai, tránh giao dịch quá mức trong quá trình củng cố thị trường. Điều này cho phép chiến lược nắm bắt các bước ngoặt của thị trường trong khi giảm các giao dịch sai, dẫn đến lợi nhuận cao hơn.

Phân tích lợi thế

  • Nhận các điểm chuyển đổi thị trường thông qua các quy tắc chéo EMA cho lợi nhuận cao
  • Sử dụng cả hai đường EMA nhanh và chậm cho những ưu điểm tương ứng của họ
  • Khả năng lọc tiếng ồn vốn có của EMA làm giảm các giao dịch sai
  • Dễ hiểu, tối ưu hóa và mở rộng
  • Khả năng mở rộng cao để kết hợp các chỉ số hỗ trợ khác

Phân tích rủi ro

  • Các tín hiệu sai thường xuyên có thể xảy ra trong các thị trường giới hạn phạm vi
  • Cài đặt tham số EMA không chính xác có thể gây ra việc bỏ lỡ các vòng quay lớn
  • Việc phát hành chậm có thể dẫn đến việc mất cơ hội giao dịch ngắn hạn
  • Không thể thích nghi với biến động thị trường mạnh mẽ

Để giải quyết những rủi ro này, các tối ưu hóa có thể được giới thiệu như thêm các quy tắc lọc, kết hợp MACD để tránh các tín hiệu sai, sử dụng EMA thích nghi để tăng tốc phản ứng v.v. Ngoài ra, các cơ chế dừng lỗ và lợi nhuận thích hợp là cần thiết.

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

Các hướng tiềm năng để tối ưu hóa hơn bao gồm:

  • Thêm các quy tắc lọc về tín hiệu nhập cảnh, ví dụ: kết hợp khối lượng giao dịch
  • Kết hợp các chỉ số hỗ trợ như MACD cho các tín hiệu bổ sung
  • Đưa ra EMA thích nghi để điều chỉnh các thông số một cách năng động
  • Áp dụng phân tích nhiều khung thời gian để tận dụng các EMA khác nhau
  • Tối ưu hóa các chiến lược dừng lỗ thông qua dừng lại, dừng phần trăm v.v.
  • Tận dụng các công nghệ AI để điều chỉnh tham số tự động

Tóm lại

Chiến lược này nắm bắt các bước ngoặt quan trọng của thị trường thông qua logic chéo của hai đường EMA, làm cho nó hiệu quả cho giao dịch trực tiếp. Với các bộ lọc bổ sung, các chỉ số hỗ trợ và tối ưu hóa stop loss, sự ổn định của chiến lược có thể được tăng thêm.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Backtest single EMA cross", overlay=true)

qty = input(100000, "Buy quantity")

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
testPeriod() => true


ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")

expo = ema(close, ema1)
ma = ema(close, ema2)

avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)

p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)

longCondition = crossover(expo, ma)

shortCondition = crossunder(expo, ma)


if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)



Thêm nữa