Chiến lược số lượng kết hợp EMA động động

Tác giả:ChaoZhang, Ngày: 2024-01-22 12:34:33
Tags:

img

Tổng quan

Chiến lược này là một chiến lược kết hợp trung bình động động hoạt động trên nhiều khung thời gian. Nó sử dụng Trung bình Di chuyển Triển số (EMA) có chiều dài khác nhau để đánh giá xu hướng và tín hiệu vào / ra.

Chiến lược logic

Chiến lược sử dụng 7 EMA di chuyển với tốc độ khác nhau, từ nhanh nhất đến chậm nhất: EMA 3 giai đoạn, EMA 15 giai đoạn, EMA 19 giai đoạn, EMA 50 giai đoạn, EMA 100 giai đoạn, EMA 150 giai đoạn và EMA 200 giai đoạn.

Ngoài ra, chiến lược cũng kết hợp giá phá vỡ mức cao gần đây và giá gần vượt qua mức cao trong lịch sử để xác nhận tín hiệu dài, và sử dụng giá phá vỡ mức thấp gần đây và giá gần vượt qua mức thấp trong lịch sử để xác nhận tín hiệu ngắn. Điều này giúp tránh phá vỡ sai.

Các quy tắc thoát yêu cầu giá đóng để phá vỡ các EMA nhanh hơn liên tiếp hướng tới các EMA chậm hơn, cho thấy sự đảo ngược xu hướng.

Phân tích lợi thế

  • Sử dụng 7 EMA có tốc độ khác nhau tạo thành hình dạng hình vòm có thể xác định các điểm đảo ngược xu hướng chính xác hơn
  • Kết hợp mức cao/mức thấp mới và mức cao/mức thấp trong lịch sử tránh các tín hiệu đột phá sai
  • Các quy tắc thoát gấp đôi nghiêm ngặt cho phép dừng lỗ kịp thời

Phân tích rủi ro

  • Không có cơ chế dừng lỗ dẫn đến tiềm năng mất mát lớn
  • Các quy tắc xuất cảnh hai lần có thể gây ra việc xuất cảnh sớm
  • Quá nhiều EMA nhanh tạo ra nhiều tiếng ồn hơn và tăng tần suất giao dịch và chi phí hoa hồng

Giải pháp:

  1. Thêm tỷ lệ dừng lỗ cố định và dừng lỗ sau
  2. Điều chỉnh chiều dài EMA thoát để giảm sự nghiêm ngặt của các quy tắc thoát kép
  3. Tăng chiều dài EMA để giảm tần suất giao dịch

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

  • Thêm các cơ chế dừng lỗ như dừng lỗ tỷ lệ phần trăm cố định, dừng lỗ kéo theo vv
  • Tối ưu hóa các thông số EMA để tìm kết hợp tốt nhất
  • Thêm các chỉ số khác như MACD, ATR, KDJ vv để lọc tín hiệu
  • Kết hợp với các chiến lược phạm vi / kênh để nắm bắt các động thái thứ cấp trong xu hướng
  • Xem xét thêm các quy tắc kích thước vị trí

Kết luận

Chiến lược này có một logic rõ ràng sử dụng 7 EMA có tốc độ khác nhau để xác định xu hướng và các quy tắc thoát kép để phát hiện sự đảo ngược. Nhưng không có cơ chế dừng lỗ dẫn đến rủi ro mất mát lớn, và nó có thể thoát sớm. Có thể cải thiện các khía cạnh như thêm dừng lỗ, điều chỉnh tham số, lọc chỉ số để biến nó thành một hệ thống giao dịch vững chắc.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Crypto MAX Trend", shorttitle="Crypto MAX", overlay = true  )
Length = input(3, minval=1)
Length2 = input(15, minval=1)
Length3 = input(19, minval=1)
//Length33 = input(25, minval=1)
Length4 = input(50, minval=1)
Length44 = input(100, minval=1)
Length5 = input(150, minval=1)
Length6 = input(171, minval=1)
Length66 = input(172, minval=1)

xPrice = input(close)

xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xPrice, Length2)
xEMA3 = ema(xPrice, Length3)
//xEMA33 = ema(xPrice, Length33)
xEMA4 = ema(xPrice, Length4)
xEMA44 = ema(xPrice, Length44)
xEMA5 = ema(xPrice, Length5)
xEMA6 = ema(xPrice, Length6)
xEMA66 = ema(xPrice, Length66)

// plot(xEMA1, color=color.white)
// plot(xEMA2, color=color.red)
// plot(xEMA3, color=color.green)
// plot(xEMA4, color=color.purple)
// plot(xEMA44, color=color.gray)
// plot(xEMA5, color=color.maroon)
// plot(xEMA6, color=color.blue)
// plot(xEMA66, color=color.orange)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



long = close >  xEMA1 and xEMA1 > xEMA2 and xEMA2 > xEMA3  and xEMA3 > xEMA4  and xEMA4 > xEMA44 and xEMA44 > xEMA5 and xEMA5> xEMA6  and xEMA6> xEMA66  and close > high[1] and high[1] > high[2] and close > high[3] and close > high[4] and close > high[5] and high[5] > high[6] and time_cond
short = close < xEMA1 and xEMA1 < xEMA2 and xEMA2 < xEMA3  and xEMA3 < xEMA4  and xEMA4 < xEMA44 and xEMA44 < xEMA5 and xEMA5< xEMA6 and  xEMA6< xEMA66 and close < low[1] and low[1] < low[2] and close < low[3] and close < low[4] and close< low[5] and low[5] < low[6] and time_cond

notlong = close < xEMA1
strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)


exitlong1 = xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4
exitlong2 = crossunder(low,xEMA1) and crossunder(low,xEMA2) and crossunder(low,xEMA3) and crossunder(low,xEMA4)
exitshort1 = xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4
exitshort2 = crossover(high,xEMA1) and crossover(high,xEMA2) and crossover(high,xEMA3) and crossover(high,xEMA4)

strategy.close("long", when = exitlong1 or exitlong2)
strategy.close("short", when= exitshort1 or exitshort2) 






 


Thêm nữa