Chiến lược này sử dụng đường chéo của độ dốc của hai EMA với chiều dài khác nhau để tạo ra xu hướng sau tín hiệu.
Các điều kiện để đưa chiến lược vào thị trường là:
Khi các độ dốc đơn giản vượt qua theo hướng ngược lại, nó đóng vị trí.
Chiến lược này hoạt động tốt nhất trên Bitcoin và các altcoin thanh khoản và vốn hóa nhất, nhưng cũng hoạt động rất tốt trên các tài sản biến động, đặc biệt là nếu chúng thường đi xu hướng. Làm việc tốt nhất trong khoảng thời gian 4h.
Ngoài ra còn có bộ lọc biến động tùy chọn, chỉ mở vị trí nếu sự khác biệt giữa hai độ dốc lớn hơn một giá trị cụ thể.
Thưởng thức đi!
Cốt lõi của chiến lược này là so sánh độ dốc của hai EMA với chiều dài khác nhau.
Đầu tiên, EMA với chiều dài 130 và 400 được tính toán, sau đó độ dốc của mỗi người được tính toán, sau đó EMA dài 3 được tính toán trên mỗi độ dốc để có được đường cong độ dốc mịn.
Khi độ dốc EMA nhanh vượt qua độ dốc EMA chậm, một tín hiệu mua được tạo ra. Khi độ dốc EMA nhanh vượt qua độ dốc EMA chậm, một tín hiệu bán được tạo ra.
Để lọc ra tiếng ồn, EMA 200 giai đoạn có thể được sử dụng như một bộ lọc xu hướng, chỉ xem xét tín hiệu dài khi giá trên EMA, và tín hiệu ngắn chỉ khi dưới EMA.
Ngoài ra, một bộ lọc biến động có thể được sử dụng, tạo ra tín hiệu chỉ khi sự khác biệt giữa hai độ dốc lớn hơn một ngưỡng, để tránh các trường hợp khi độ dốc giao nhau nhưng độ biến động không đủ.
Khi độ dốc nhanh và chậm giao nhau ngược lại, các vị trí được đóng để dừng lợi nhuận / lỗ.
Sử dụng đường chéo độ dốc để tạo tín hiệu có thể theo dõi xu hướng hiệu quả
Điều chỉnh sự kết hợp thời gian EMA có thể thích nghi với các điều kiện thị trường khác nhau
Bộ lọc xu hướng tránh bị đánh lừa bởi hành động giá hỗn loạn
Bộ lọc biến động lọc ra các tín hiệu sai
Logic đơn giản và rõ ràng, dễ hiểu và thực hiện
Có thể được sử dụng trên nhiều khung thời gian
Có thể xảy ra mở và đóng thường xuyên trên các thị trường có phạm vi rộng
Thời gian EMA không phù hợp có thể bỏ lỡ các điểm chuyển hướng xu hướng
Các thông số nên được điều chỉnh để thích nghi với các điều kiện thị trường thay đổi
Giống như các hệ thống MA, các xu hướng lớn có thể đảo ngược ở mức cực
Thử các kết hợp thời gian EMA khác nhau để tìm các thông số tối ưu
Chọn các tham số theo đặc điểm tài sản và điều kiện thị trường
Xem xét thêm các chiến lược dừng lỗ để kiểm soát rủi ro
Xem xét điều chỉnh năng động các giai đoạn EMA
Kiểm tra các ngưỡng biến động khác nhau
Hiệu quả thử nghiệm trên các khung thời gian
Chiến lược có logic rõ ràng, dễ hiểu, sử dụng đường chéo độ nghiêng EMA để tạo ra tín hiệu và theo dõi xu hướng hiệu quả. Các bộ lọc xu hướng và biến động làm giảm các giao dịch ồn ào. Điều chỉnh các kết hợp thời gian EMA điều chỉnh nó theo các điều kiện thị trường khác nhau. Nhìn chung là một chiến lược theo xu hướng đơn giản và thực tế đáng để thử nghiệm và tối ưu hóa trong giao dịch trực tiếp.
/*backtest start: 2023-10-09 00:00:00 end: 2023-10-16 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy(title="Slopes",initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.06, slippage = 2, default_qty_value=30, overlay=false) //definizione input start = timestamp(input(2018, "start year"), input(1, "start month"), input(1, "start day"), 00, 00) end = timestamp(input(2020, "end year"), input(1, "end month"), input(1, "end day"), 00, 00) average = input (title="Source MA Type", type=input.string, defval="EMA",options=["EMA","SMA"]) len1=input(130,title="Fast MA Length") len2=input(400,title="Slow MA Length") smoothingavg = input (title="Smoothing MAs Type", type=input.string, defval="EMA",options=["EMA","SMA"]) smoothingavglen = input (3,title="Smoothing MAs Length") trendfilter=input(true,title="Trend Filter") trendfilterperiod=input(200,title="Trend Filter MA Period") trendfiltertype=input (title="Trend Filter MA Type", type=input.string, defval="EMA",options=["EMA","SMA"]) volatilityfilter=input(false,title="Volatility Filter") volatilitydelta=input(0.0003,step=0.0001,title="Delta Slopes EMA") //variabili m1 = if average == "EMA" ema(close,len1) else sma(close,len1) m2=if average == "EMA" ema(close,len2) else sma(close,len2) slp1=(m1-m1[1])/m1 slp2=(m2-m2[1])/m2 e1=if smoothingavg == "EMA" ema(slp1,smoothingavglen) else sma(slp1,smoothingavglen) e2=if smoothingavg == "EMA" ema(slp2,smoothingavglen) else sma(slp2,smoothingavglen) plot(e1,color=color.yellow) plot(e2,color=color.red) //plot (abs(e1-e2),color=color.white) //plot (ema(e1-e2,9),color=color.yellow) //variabili accessorie e condizioni TrendConditionL=if trendfiltertype =="EMA" close>ema(close,trendfilterperiod) else close>sma(close,trendfilterperiod) TrendConditionS=if trendfiltertype =="EMA" close<ema(close,trendfilterperiod) else close<sma(close,trendfilterperiod) VolatilityCondition = abs(e1-e2) > volatilitydelta ConditionEntryL= if trendfilter == true if volatilityfilter == true e1>e2 and TrendConditionL and VolatilityCondition else e1>e2 and TrendConditionL else if volatilityfilter == true e1>e2 and VolatilityCondition else e1>e2 ConditionEntryS= if trendfilter == true if volatilityfilter == true e1<e2 and TrendConditionS and VolatilityCondition else e1<e2 and TrendConditionS else if volatilityfilter == true e1<e2 and VolatilityCondition else e1<e2 ConditionExitL=crossunder(e1,e2) ConditionExitS=crossover(e1,e2) if true if ConditionExitS if strategy.position_size < 0 strategy.close("SLPShort") if true if ConditionExitL if strategy.position_size > 0 strategy.close("SLPLong") if true if ConditionEntryL strategy.entry ("SLPLong",long=true) if true if ConditionEntryS strategy.entry("SLPShort",long=false)