Chiến lược mua bán ngược của EMA

Tác giả:ChaoZhang, Ngày: 2023-11-28 16:54:14
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng dựa trên đường EMA. Nó sử dụng hai đường EMA với các khoảng thời gian khác nhau, 21 và 55. Khi đường EMA nhanh hơn vượt qua trên đường EMA chậm hơn, một tín hiệu mua được tạo ra. Khi đường EMA nhanh hơn vượt qua dưới đường chậm hơn, một tín hiệu bán được tạo ra.

Ngoài ra, chiến lược bao gồm giao dịch ngược, ATR dừng lỗ và đảo ngược lợi nhuận để tăng cường sự ổn định và lợi nhuận.

Chiến lược logic

  1. Sử dụng các đường EMA 21 và 55.

  2. Khi EMA 21 vượt trên EMA 55, nó cho thấy xu hướng ngắn hạn thay đổi lên, tạo ra tín hiệu mua.

  3. Khi 21 EMA vượt dưới 55 EMA, nó cho thấy xu hướng ngắn hạn biến xuống, tạo ra tín hiệu bán.

  4. Giao dịch ngược: chỉ mua khi giá thấp hơn giá mở và chỉ bán khi giá cao hơn giá mở.

  5. ATR stop loss: sử dụng N lần ATR để đặt giá stop loss. Điều này điều chỉnh stop loss dựa trên biến động thị trường.

  6. Lợi nhuận đảo ngược: sử dụng giá nhập khẩu trừ N lần ATR làm mục tiêu lợi nhuận.

Ưu điểm của Chiến lược

  1. Khám phá xu hướng trung và dài hạn bằng cách sử dụng EMA kép.

  2. Giao dịch ngược phù hợp với các giao dịch giảm giá ngắn hạn của xu hướng.

  3. ATR dừng thích nghi với biến động thị trường.

  4. Lợi nhuận đảo ngược nằm gần các mức kỹ thuật quan trọng với xác suất cao hơn.

  5. Logic đơn giản và rõ ràng, dễ hiểu và sửa đổi.

  6. Áp dụng cho các thị trường biến động cao như tiền điện tử.

Rủi ro và giải pháp

  1. EMA đôi có thể tạo ra tín hiệu sai và kéo dài thời gian EMA.

  2. Giao dịch ngược có xu hướng dừng lỗ.

  3. Các vụ trốn thoát giả thường xảy ra.

  4. Rủi ro cao khi lấy lợi nhuận.

Các đề xuất tối ưu hóa

  1. Thêm các chỉ số như MACD, KD để lọc tín hiệu trong các khu vực mua quá mức / bán quá mức.

  2. Thêm nhiều EMA như EMA thời gian 120 để đánh giá xu hướng toàn diện.

  3. Thiết lập trượt khác nhau cho dài và ngắn để có giá nhập tốt hơn.

  4. Thả lỏng ATR dừng lỗ cho giao dịch tiền điện tử biến động cao.

  5. Tối ưu hóa các cơ chế tăng nhân ATR và ngăn chặn kéo dài để đạt được lợi nhuận tối đa và rút tiền tối thiểu.

Kết luận

Tóm lại, đây là một chiến lược theo xu hướng EMA kép tương đối đơn giản. Sức mạnh của nó nằm trong logic sạch, các tham số linh hoạt, khả năng áp dụng trong các xu hướng trung và dài hạn và đảo ngược ngắn hạn. Chúng tôi cũng đã phân tích những điểm yếu và giải pháp tiềm năng của nó, cùng với một số khuyến nghị cải tiến trong tương lai. Nhìn chung, chiến lược này thực tế đến một mức độ nào đó và có không gian để phát triển, nhưng các tham số của nó cần điều chỉnh cho các thị trường khác nhau.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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/
// © TheHulkTrading

// Simple EMA strategy, based on ema55+ema21 and ATR(Average True Range) and it enters a deal from ema55 when the other entry conditions are met


//@version=4
strategy("Simple Ema_ATR Strategy HulkTrading", overlay=true)

atr_multiplier = input(2, minval=1, title="ATR Multiplier") // ATR Multiplier. Recommended values between 1..4


emaFast=ema(close,21)
emaSlow=ema(close,55)

//Basically long and short conditions

//If long: 
// 1) close must be less than open (because we are searching for a pullback)
// 2) emaFast(21) must be bigger than emaSlow(55) - for a trend detection
// 3) Difference between emaFast and emaSlow must be greater than ATR(14) - for excluding flat
longCond = close < open and emaFast > emaSlow and abs(emaSlow-emaFast) > atr(14)  

//For short conditions are opposite
shortCond = close > open and emaFast < emaSlow and abs(emaSlow-emaFast) > atr(14) 

//Stop levels and take profits, based on ATR multiplier

stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14)
take_level_long = strategy.position_avg_price + atr_multiplier*atr(14)
stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14)
take_level_short = strategy.position_avg_price - atr_multiplier*atr(14)


//Entries and exits 
strategy.entry("Long", strategy.long, when=longCond, limit = emaSlow)
strategy.exit("Stop Loss/TP","Long", stop=stop_level_long, limit = take_level_long)
strategy.entry("Short", strategy.short, when=shortCond, limit = emaSlow)
strategy.exit("Stop Loss/TP","Short", stop=stop_level_short, limit = take_level_short)



Thêm nữa