Chiến lược giao dịch xu hướng và xu hướng chéo của EMA

Tác giả:ChaoZhang, Ngày: 2023-09-20 14:32:22
Tags:

Tổng quan

Chiến lược này sử dụng hướng dốc và mối quan hệ chéo giữa nhiều EMA để xác định hướng xu hướng, cho giao dịch xu hướng không ngừng.

Chiến lược logic

  1. Tính toán 3 nhóm EMA - nhanh, trung bình và chậm.

  2. Khi EMA nhanh vượt qua trên EMA trung bình, và độ dốc EMA trung bình trở nên dương tính, tín hiệu dài được tạo ra.

  3. Khi EMA nhanh vượt qua dưới EMA trung bình, và độ dốc EMA trung bình trở thành âm, tín hiệu ngắn được tạo ra.

  4. Đi dài khi giá vượt qua EMA chậm, và ngắn khi giá vượt qua dưới EMA chậm.

  5. Các mối quan hệ độ dốc EMA phản ánh sự thay đổi xu hướng.

Phân tích lợi thế

  1. Nhiều EMA cải thiện độ chính xác trong đánh giá xu hướng.

  2. EMA nhanh, trung bình và chậm phân biệt hợp lý xu hướng và củng cố.

  3. Sự thay đổi độ dốc EMA cung cấp những gợi ý ban đầu về những thay đổi xu hướng.

  4. Giá chéo xác nhận thêm để tránh phá vỡ sai.

  5. Luôn giữ một vị trí để nắm bắt đầy đủ các cơ hội xu hướng.

Phân tích rủi ro

  1. Việc chỉ dựa vào EMA mang lại rủi ro lớn cho vị trí trong thời gian giới hạn phạm vi.

  2. Các thông số EMA không chính xác có thể bỏ lỡ các điểm chuyển đổi.

  3. Không thể xác định sức mạnh xu hướng, có nguy cơ đầu vào ngược sớm.

  4. Không có kiểm soát lỗ thương mại duy nhất hiệu quả.

Hướng dẫn cải thiện

  1. Kiểm tra các kết hợp EMA khác nhau để tìm các thông số tối ưu.

  2. Thêm các chỉ số khác như MACD để xác định sức mạnh.

  3. Thêm các cơ chế dừng lỗ để kiểm soát rủi ro.

  4. Đánh giá sức mạnh của xu hướng để tránh các mục nhập đảo ngược sớm.

  5. Tối ưu hóa kích thước vị trí cho quản lý vốn.

  6. tạm dừng giao dịch khi xu hướng trở nên hỗn loạn.

Tóm lại

Chiến lược này sử dụng hợp lý các combo EMA để xác định xu hướng. Nhưng chỉ dựa vào EMA có những hạn chế, để lại không gian tối ưu hóa lớn để kết hợp nhiều chỉ số hơn. Các cơ chế kiểm soát rủi ro cũng cần thiết để cải thiện sự ổn định.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA Slope + EMA Cross Strategy (by ChartArt)", shorttitle="CA_-_EMA_slope_cross", overlay=true)

// ChartArt's EMA Slope + EMA Cross Strategy
//
// Version 1.0
// Idea by ChartArt on March 10, 2018.
//
// This strategy uses divergences between
// three moving averages and their slope
// directions as well as crosses between
// the price and the moving averages
// to switch between long/short positions.
//
// The strategy is non-stop in the market
// and always either long or short.
// 
// In addition the moving averages are colored
// depending if they are trending up or down.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/

// Input
price = input(close)
MA1_Length = input(2,step=1, title="EMA 1 Length")
MA2_Length = input(4,step=1, title="EMA 2 Length")
MA3_Length = input(20,step=1, title="EMA 3 Length")

switch1=input(true, title="Show Bar Color?")
switch2=input(true, title="Show Moving Averages?")

// Calculation
MA1 = ema(price, MA1_Length)
MA2 = ema(price, MA2_Length)
MA3 = ema(price, MA3_Length)

// Strategy
long = crossunder(price, MA3) or ( change(price)<0 and change(MA1)<0 and crossunder(price,MA1) and change(MA2)>0 )
short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1)  and change(MA2)<0 ) 

if long
    strategy.entry("Long", strategy.long, comment="Long")

if short
    strategy.entry("Short", strategy.short, comment="Short")

// Strategy Alert
alertcondition(long, title='EMA Slope + EMA Cross Strategy, Long Alert', message='Go Long!')
alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!')

// MA trend bar color
up =  change(MA2)>0 and change(MA3)>0
dn =  change(MA2)<0 and change(MA3)<0
bar_color = up?green:dn?red:blue
barcolor(switch1?bar_color:na)

// MA trend output color
MA2_color = change(MA2)>0?lime:change(MA2)<0?red:blue
MA3_color = change(MA3)>0?lime:change(MA3)<0?red:blue

// MA output
EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color)
EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color)
fill(EMA2, EMA3, color=silver, transp=50)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Thêm nữa