Chiến lược định lượng kết hợp EMAS động


Ngày tạo: 2024-01-22 12:34:33 sửa đổi lần cuối: 2024-01-22 12:34:33
sao chép: 1 Số nhấp chuột: 536
1
tập trung vào
1617
Người theo dõi

Chiến lược định lượng kết hợp EMAS động

Tổng quan

Chiến lược này là một chiến lược kết hợp đường trung bình di chuyển động với nhiều chu kỳ thời gian. Nó sử dụng các đường trung bình di chuyển chỉ số có chiều dài khác nhau (EMA) để đánh giá xu hướng và nhập cảnh.

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

Chiến lược này sử dụng 7 EMA với tốc độ khác nhau, từ nhanh nhất đến chậm nhất: 3 chu kỳ, 15 chu kỳ, 19 chu kỳ, 50 chu kỳ, 100 chu kỳ, 150 chu kỳ và 200 chu kỳ EMA. Các 7 EMA tạo thành một dãy bậc thang, để xác định tín hiệu vị trí dài và ngắn, giá đóng cửa sẽ phá vỡ 7 EMA theo lượt, để đảm bảo rằng sự chuyển hướng mạnh mẽ sẽ đi vào.

Ngoài ra, chiến lược này kết hợp cả hai điều kiện là giá sáng tạo cao và giá đóng cửa phá vỡ mức cao lịch sử để xác nhận tín hiệu vị trí dài, sử dụng giá sáng tạo thấp và giá đóng cửa phá vỡ mức thấp lịch sử để xác nhận tín hiệu vị trí ngắn, để tránh phá vỡ giả.

Các điều kiện hòa giá yêu cầu giá đóng cửa từ EMA nhanh sang EMA chậm, cho thấy xu hướng đảo ngược; hoặc giá thấp nhất hoặc cao nhất của dòng K mới nhất phá vỡ 4 EMA, cho thấy giao dịch nên được hòa ngay lập tức.

Phân tích lợi thế

  • Sử dụng 7 đường EMA tốc độ khác nhau để tạo ra dốc, có thể xác định chính xác hơn điểm biến hướng
  • Xác định vị trí dài kết hợp với mức cao sáng tạo và mức cao lịch sử, giảm sáng tạo và mức thấp lịch sử để xác định vị trí ngắn, tránh đột phá giả
  • Điều kiện đặt hàng bằng hai lần là nghiêm ngặt hơn, có thể dừng lỗ kịp thời

Phân tích rủi ro

  • Không có thiết lập dừng lỗ, có nguy cơ mất mát lớn
  • Điều kiện hòa đôi có thể gây ra sự ra đi sớm
  • EMA ngắn có thể tạo ra nhiều tiếng ồn hơn, tăng tần suất giao dịch và chi phí phí

Giải pháp:

  1. Thiết lập dừng chân đứng và dừng chân di chuyển
  2. Điều chỉnh độ dài của EMA để giảm mức độ nghiêm ngặt của điều kiện hai lần.
  3. Tăng độ dài EMA, giảm tần suất giao dịch

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

  • Thêm các chiến lược dừng lỗ, chẳng hạn như dừng phần trăm cố định, dừng di chuyển
  • Điều chỉnh tham số EMA để tìm các tham số kết hợp tốt nhất
  • Thêm các bộ lọc cho các chỉ số khác như MACD, ATR, KDJ, để cải thiện chất lượng tín hiệu
  • Kết hợp chiến lược băng tần để nắm bắt biến động thứ cấp trong xu hướng
  • Xem xét thêm mô-đun quản lý tài chính

Tóm tắt

Chiến lược này có tư duy tổng thể rõ ràng, sử dụng 7 tốc độ EMA để đánh giá xu hướng, và có điều kiện đồng bằng đôi, có thể đánh giá nhạy cảm hơn đối với xu hướng đảo ngược. Tuy nhiên, chính chiến lược không thiết lập dừng lỗ, có nguy cơ mất mát rất lớn, ngoài ra dễ gây ra vấn đề thoát sớm. Trong tương lai, cần cải thiện chiến lược từ nhiều chiều như dừng lỗ, tối ưu hóa tham số, lọc chỉ số, để trở thành một hệ thống giao dịch định lượng ổn định và đáng tin cậy.

Mã nguồn chiến lượ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)