
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.
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.
Giải pháp:
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.
/*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)