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.
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.
Định hướng tối ưu:
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ú ý.
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.
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.
Các hướng cải tiế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")