Chiến lược giao dịch chéo EMA kép

Tác giả:ChaoZhang, Ngày: 2023-10-16 16:24:00
Tags:

img

Thông tin chi tiết

Chiến lược giao dịch phá vỡ EMA kép là một chiến lược theo dõi xu hướng sử dụng hai đường EMA khác nhau để đánh giá tín hiệu mua bán. Chiến lược này cũng kết hợp các chỉ số EMA bổ sung để lọc tín hiệu giao dịch để có được thời gian vào tốt hơn trong thị trường xu hướng.

Nguyên tắc

Chiến lược này sử dụng đường EMA nhanh (9 chu kỳ) và đường EMA chậm (21 chu kỳ) để xác định thời gian mua và bán. Một tín hiệu mua được tạo ra khi đường EMA nhanh đi qua đường chậm, và một tín hiệu bán được tạo ra khi đường EMA chậm đi qua đường nhanh. Để lọc các tín hiệu giả mạo, chiến lược cũng đưa ra một EMA phụ (5 chu kỳ) và hai EMA phụ (1, 4, 4) khác. Chỉ khi đường EMA chậm xảy ra cùng một lúc, EMA phụ nằm giữa đường nhanh và EMA 1 chu kỳ cao hơn EMA 4 chu kỳ mới kích hoạt tín hiệu giao dịch thực sự.

Khi tín hiệu giao dịch được kích hoạt, chiến lược sẽ thiết lập mức dừng và mức dừng dựa trên giá trị của ATR. TP1 là 6 lần ATR, để lấy phần lợi nhuận với tốc độ nhanh hơn. Nếu giá không kích hoạt TP1, khi EMA đường nhanh vượt qua EMA phụ trợ, chiến lược sẽ ngay lập tức làm phẳng vị trí để thực hiện TP2 stop.

Ưu điểm

  • Tăng chất lượng tín hiệu giao dịch bằng cách lọc các tín hiệu giả bằng cách kết hợp hai EMA
  • Các chỉ số hỗ trợ EMA có thể xác minh thêm hướng xu hướng và giảm rủi ro hoạt động ngược
  • Thiết kế hai điểm dừng để kiếm được lợi nhuận nhanh chóng và theo dõi xu hướng lợi nhuận bền vững
  • ATR Dynamic Stop Loss Pump có thể điều chỉnh theo biến động của thị trường để giảm rủi ro

Rủi ro và tối ưu hóa

  • Chỉ số EMA dễ gây ra đường cong, tín hiệu giao dịch có thể bị chậm
  • Sự kết hợp EMA chu kỳ ngắn có thể tạo ra nhiều tín hiệu giao dịch ồn hơn
  • Hoạt động đường ngắn dễ bị ảnh hưởng bởi các sự kiện bất ngờ và có nguy cơ bị hỏng cao hơn

Định hướng tối ưu:

  • Kiểm tra nhiều nhóm EMA để tìm các thông số tối ưu
  • Thêm xác minh các chỉ số khác như khối lượng giao dịch, tỷ lệ biến động, v.v.
  • Nới rộng phạm vi dừng lỗ thích hợp để giảm khả năng dừng lỗ được kích hoạt
  • Tối ưu hóa tỷ lệ thiết lập hai điểm dừng, cân bằng tốc độ lợi nhuận và hiệu quả sử dụng vốn

Tóm lại

Chiến lược giao dịch phá vỡ EMA đôi sử dụng hai EMA để phân tích xu hướng, được hỗ trợ bởi nhiều bộ lọc EMA và ATR động để theo dõi lợi nhuận xu hướng hiệu quả. Tuy nhiên, các vấn đề như phù hợp với đường cong EMA, rủi ro dừng lỗ cần được chú ý.

Tổng quan

Chiến lược giao dịch chéo EMA kép sử dụng hai đường EMA của các giai đoạn khác nhau để tạo ra tín hiệu mua và bán bằng cách xác định hướng xu hướng. Nó cũng kết hợp các chỉ số EMA bổ sung để lọc tín hiệu, cho phép thời gian nhập cảnh tốt hơn vào thị trường xu hướng.

Nguyên tắc

Chiến lược này sử dụng đường EMA nhanh (9 giai đoạn) và đường EMA chậm (21 giai đoạn) để xác định các mục nhập. Một đường chéo vàng khi đường EMA nhanh vượt qua trên đường EMA chậm tạo ra tín hiệu mua, trong khi đường chéo chết với đường EMA nhanh vượt qua dưới đường EMA chậm tạo ra tín hiệu bán. Để lọc các tín hiệu sai, chiến lược cũng sử dụng đường EMA phụ trợ (5 giai đoạn) và hai đường EMA thêm (1 giai đoạn, 4 giai đoạn).

Một khi tín hiệu giao dịch được kích hoạt, chiến lược sử dụng giá trị ATR để thiết lập mức dừng lỗ và lấy lợi nhuận. TP1 được thiết lập ở mức 6 x ATR để lấy lợi nhuận nhanh hơn. Nếu giá không đạt TP1, chiến lược sẽ đóng vị trí trực tiếp khi EMA nhanh vượt qua EMA phụ trợ, nhận ra TP2.

Ưu điểm

  • Thiết kế EMA kép lọc tín hiệu sai và cải thiện chất lượng tín hiệu
  • EMA phụ trợ thêm xác minh hướng xu hướng, giảm rủi ro giao dịch ngược
  • Lợi nhuận hai lần cho phép lợi nhuận nhanh chóng và xu hướng bền vững sau
  • Đánh giá giá giá trị của các loại sản phẩm khác

Rủi ro và cải tiến

  • Các EMA có thể chậm lại giá và tạo ra tín hiệu muộn
  • EMA ngắn hơn có thể tạo ra nhiều tiếng ồn hơn
  • Các điểm dừng chặt chẽ hơn đối mặt với rủi ro xảy ra đột ngột lớn hơn

Các hướng cải tiến:

  • Kiểm tra nhiều sự kết hợp EMA để có các thông số tốt hơn
  • Thêm các chỉ số xác nhận khác như khối lượng, biến động v.v.
  • Mở rộng lệnh dừng lỗ để giảm tỷ lệ dừng
  • Tối ưu hóa tỷ lệ lợi nhuận cho lợi nhuận so với hiệu quả vốn

Kết luận

Chiến lược giao thoa EMA kép sử dụng các giao thoa EMA để định hướng xu hướng, cùng với lọc EMA nhiều và ATR stop loss / profit taking năng động. Điều này cho phép theo dõi xu hướng và thu lợi nhuận hiệu quả. Tuy nhiên, các hạn chế phù hợp EMA và rủi ro stop loss đòi hỏi sự thận trọng. Tối ưu hóa thích hợp, quản lý rủi ro vv có thể dẫn đến hiệu suất mạnh mẽ hơn. Chiến lược phù hợp với các nhà giao dịch có kinh nghiệm để đạt hiệu quả vốn cao trong các thị trường xu hướng.

[/trans]


/*backtest
start: 2022-10-09 00:00:00
end: 2023-04-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @author ADHDCRYPT0

//@version=4
strategy(title = "EMA double crossover", shorttitle = "(TEST) double cross over", overlay = true, default_qty_value = 100, initial_capital = 1000,default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true)


// Variables
ema_len1 = input(9 , title="Fast EMA")
ema_len2 = input(21, title="Slow EMA")
ema_len3 = input(5, title="Exit EMA")
ema_len4 = input(1, title="FastConf EMA")
ema_len5 = input(4, title="SlowConf EMA")

fastEMA = ema(open, ema_len1)
slowEMA = ema(open, ema_len2)
exitEMA = ema(open, ema_len3)
conf1EMA = ema(open, ema_len4)
conf2EMA = ema(open, ema_len5)
plot(fastEMA, title='fastEMA', transp=0, color=color.green)
plot(slowEMA, title='slowEMA', transp=0, color=color.red  )
plot(exitEMA, title='exitEMA', transp=0, color=color.orange)
plot(conf1EMA, title='conf1EMA', transp=0, color=color.blue)
plot(conf2EMA, title='conf2EMA', transp=0, color=color.black)

vol = volume 
volma = sma(volume,7)
vol_cond = vol>volma

atr = atr(5)


// Entry Conditions and vol_cond
long = crossover(fastEMA, slowEMA) and (conf1EMA > conf2EMA) and (fastEMA < exitEMA)
short= crossunder(fastEMA, slowEMA) and (conf1EMA < conf2EMA) and (fastEMA > exitEMA)

tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])

pos = 0.0

if tradeType=="BOTH"
    pos:= long? 1 : short? -1 : pos[1]
if tradeType=="LONG"
    pos:= long? 1 : pos[1]
if tradeType=="SHORT"
    pos:=short? -1 : pos[1]

longCond  = long  and (pos[1]!= 1 or na(pos[1]))
shortCond = short and (pos[1]!=-1 or na(pos[1]))

// EXIT FUNCTIONS //
sl  = input(1, title="Stop Loss (ATR)", minval=0)
tp  = input(6, title="Take Profit 1 (ATR)", minval=0)

// Simple Stop Loss + 2 Take Profits
sl_long   =  valuewhen(longCond , low - atr * sl, 0)
sl_short  =  valuewhen(shortCond, high+ atr * sl, 0)

tp_long  = valuewhen(longCond , high + atr * tp, 0)
tp_short = valuewhen(shortCond, low  - atr * tp, 0)


long_exit = crossover(fastEMA, exitEMA) and pos[1]==1
short_exit= crossover(exitEMA, fastEMA) and pos[1]==-1

if long_exit or short_exit
	pos:=0


// Position Adjustment
long_sl  = low <sl_long [1] and pos[1]==1
short_sl = high>sl_short[1] and pos[1]==-1

if long_sl or short_sl
    pos:=0
    
//  Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("01 Sep 2002 13:30 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("30 Sep 2099 19:30 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true


// Make sure we are within the bar range, Set up entries and exit conditions
if strategy.equity >0
    strategy.entry("long" , strategy.long , when=longCond  and timeCond and tradeType!="SHORT" , alert_message="INSERT MESSAGE HERE")
    strategy.entry("short", strategy.short, when=shortCond and timeCond and tradeType!="LONG" , alert_message="INSERT MESSAGE HERE")
    
    strategy.exit("SL/TP1", from_entry = "long" , stop=sl_long , limit=tp_long , alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL/TP1", from_entry = "short", stop=sl_short, limit=tp_short, alert_message="INSERT MESSAGE HERE")

    strategy.exit("SL", from_entry = "long" , stop=sl_long, alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL", from_entry = "short", stop=sl_short, alert_message="INSERT MESSAGE HERE")
    
    strategy.close("long", when=long_exit , comment="TP2", alert_message="INSERT MESSAGE HERE")
    strategy.close("short", when=short_exit, comment="TP2", alert_message="INSERT MESSAGE HERE")


Thêm nữa