Chiến lược giao dịch định lượng dựa trên sự giao nhau của EMA kép


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

Chiến lược giao dịch định lượng dựa trên sự giao nhau của EMA kép

Tổng quan

Chiến lược này đánh giá xu hướng thị trường bằng cách tính toán sự giao nhau của đường trung bình EMA của hai chu kỳ khác nhau và dựa trên đó tạo ra tín hiệu giao dịch. Khi thị trường đi vào xu hướng tăng trên EMA ngắn hạn, chiến lược này sẽ mở nhiều vị trí; khi thị trường đi vào xu hướng giảm dưới EMA dài hạn, chiến lược này sẽ rút khỏi vị trí bằng phẳng.

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

Chiến lược này chủ yếu áp dụng lý thuyết giao thoa vàng của hai đường trung bình EMA. đường trung bình EMA được chia thành đường dài EMA và đường ngắn EMA. tham số EMA ngắn được đặt là 10 ngày và tham số EMA dài là 21 ngày.

Khi đường ngắn EMA vượt qua đường dài EMA, tạo ra tín hiệu mua; khi đường ngắn EMA vượt qua đường dài EMA, tạo ra tín hiệu bán. Chiến lược này đồng thời thiết lập ngưỡng tăng trưởng, chỉ mở thêm vị trí khi tăng trưởng vượt quá ngưỡng, và chỉ đóng cửa khi giảm vượt quá ngưỡng.

Cụ thể, điều kiện mua là EMA ngắn cao hơn EMA dài, và tăng trưởng giá cổ phiếu vượt quá ngưỡng tiêu cực được đặt; điều kiện bán bằng là EMA ngắn thấp hơn EMA dài, và tăng trưởng giá cổ phiếu thấp hơn ngưỡng tiêu cực được đặt.

Lợi thế chiến lược

  • Sử dụng lý thuyết giao thoa vàng chết của hai đường EMA, tương đối đơn giản và đáng tin cậy
  • Tăng giá trị thiết lập ngưỡng tăng trưởng, tránh giao dịch sai khi tăng trưởng yếu
  • Có thể kiểm soát tỉ lệ tổn thất tối đa
  • Có thể điều chỉnh các tham số đường trung bình EMA một cách linh hoạt cho các chu kỳ khác nhau

Phân tích rủi ro

  • EMA trung bình có sự chậm trễ và có thể bỏ lỡ điểm đảo ngược giá
  • Giao thoa đường trung bình có độ chậm trễ, có thể dẫn đến mất thời gian mở vị trí tốt nhất
  • Cần tùy thuộc vào tối ưu hóa tham số, đặt tham số không đúng có thể dẫn đến giao dịch thường xuyên hoặc tín hiệu kém

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

  • Tối ưu hóa kết hợp với các chỉ số khác như MACD, KD, v.v. để tăng độ chính xác tín hiệu
  • Tăng các chiến lược dừng lỗ, chẳng hạn như theo dõi dừng lỗ để đảm bảo tối đa hóa lợi nhuận
  • Tối ưu hóa tham số chu kỳ EMA, thiết lập tham số tối ưu cho các giống khác nhau
  • Tối ưu hóa điều chỉnh tham số động kết hợp dữ liệu thời gian thực và phương pháp học máy

Tóm tắt

Chiến lược này nói chung là đơn giản và đáng tin cậy, đánh giá xu hướng giá thông qua chéo hai EMA và thiết lập mức giảm tốc độ tăng trưởng để phát tín hiệu giao dịch. Tuy nhiên, đường trung bình EMA có vấn đề về sự chậm trễ, kết hợp với các chỉ số khác hoặc điều chỉnh động lực có thể nâng cao hiệu quả chiến lược hơn nữa.

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
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)

useTimeLimit    = input(defval = false, title = "Use Start Time Limiter?")
startYear       = input(defval = 2016, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

startTimeOk() => true

lenght0 = input(10)
lenght1 = input(21)

source = close

EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)

growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)

if( startTimeOk() )
    buy_condition = EmaShort > EmaLong and growth > thresholdUp
    buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
    strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
    strategy.close(id='buy', when=buy_exit_condition)