Chiến lược chéo trung bình động kép là một chiến lược theo xu hướng phổ biến. Nó sử dụng hai trung bình động của các giai đoạn khác nhau để xác định hướng xu hướng và tạo ra các tín hiệu giao dịch dựa trên chéo của chúng. Cụ thể, khi trung bình động giai đoạn ngắn hơn vượt qua trên giai đoạn dài hơn, một thập giá vàng được hình thành, cho thấy xu hướng tăng. Ngược lại, khi MA ngắn hơn vượt qua dưới MA dài hơn, một thập giá chết được hình thành, cho thấy xu hướng giảm.
Chiến lược chủ yếu sử dụng các đường EMA 6 giai đoạn, 14 giai đoạn, 25 giai đoạn và 80 giai đoạn.
Khi EMA 6 giai đoạn vượt trên EMA 14 giai đoạn hoặc 25 giai đoạn, và nó vượt trên EMA 80 giai đoạn, một tín hiệu mua được tạo ra. Điều này cho thấy MA ngắn hạn đang phá vỡ MA trung hạn đến dài hạn, và xu hướng tăng có thể bắt đầu, vì vậy chúng ta có thể xem xét mua.
Ngược lại, khi EMA 6 giai đoạn vượt qua dưới EMA 14 giai đoạn hoặc 25 giai đoạn, và nó dưới EMA 80 giai đoạn, một tín hiệu bán được tạo ra. Điều này cho thấy MA ngắn hạn bị phá vỡ bởi MA trung hạn đến dài hạn, và xu hướng giảm có thể bắt đầu, vì vậy chúng ta có thể xem xét bán.
Sau khi tạo tín hiệu, chiến lược sẽ mở các vị trí dài hoặc ngắn. Nó cũng có logic dừng lỗ để thoát khỏi các vị trí khi lỗ vượt quá ngưỡng để kiểm soát rủi ro.
Những lợi thế của chiến lược này là:
Sử dụng chéo MA để xác định xu hướng là một chỉ số kỹ thuật trưởng thành và đáng tin cậy.
Kết hợp nhiều khung thời gian làm giảm tín hiệu sai. MA 6 giai đoạn tạo ra tín hiệu, trong khi MA 14 giai đoạn, 25 giai đoạn xác nhận, và MA 80 giai đoạn xác định xu hướng tổng thể.
Việc dừng lỗ kiểm soát rủi ro và bảo vệ vốn hiệu quả.
Logic là đơn giản và rõ ràng, dễ hiểu và xác nhận.
Thời gian MA có thể được điều chỉnh để tối ưu hóa cho các điều kiện thị trường thay đổi.
Một số rủi ro của chiến lược này bao gồm:
Giá có thể xoay quanh MA trong khoảng thời gian, tạo ra các tín hiệu không hợp lệ quá mức.
Lưu ý sử dụng dừng dừng hoặc dừng động thay vào đó.
Tăng thêm logic để bỏ qua stop loss trong những trường hợp như vậy.
Không thể phản ứng với biến động giá ngắn hạn.
Không gian tối ưu hóa hạn chế.
Một số cách để tối ưu hóa chiến lược:
Kiểm tra các kết hợp thời gian MA khác nhau để tìm các thông số nhạy cảm hơn với thị trường.
Cải thiện cơ chế dừng lỗ bằng cách sử dụng dừng lại hoặc dừng động để giảm rủi ro dừng chạy.
Thêm các chỉ số lọc như KDJ, MACD để tránh giao dịch quá mức trong khoảng cách.
Tối ưu hóa các quy tắc nhập cảnh, chờ cho MA giao tiếp hình thành đầy đủ trước khi nhập để giảm tín hiệu sai.
Sử dụng các đường trung bình động thích nghi tự động điều chỉnh các giai đoạn dựa trên biến động.
Thêm các quy tắc kích thước vị trí để điều chỉnh kích thước vị trí dựa trên điều kiện thị trường.
Bao gồm lợi nhuận lấy ra.
Tóm lại, chiến lược chéo trung bình động kép này dễ dàng xác định hướng xu hướng dựa trên logic chéo MA đơn giản và có rủi ro có thể kiểm soát được. Nó phù hợp để theo dõi xu hướng trung và dài hạn. Nhưng chiến lược có nhiều chỗ để tối ưu hóa, thông qua các quy tắc nhập cảnh, kỹ thuật dừng lỗ, điều kiện lọc vv. Nhìn chung nó phục vụ như một xu hướng cơ sở vững chắc sau chiến lược, với thuận và bất lợi hợp lý. Nó đáng để học và thực hành.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = " bhramaji EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") stopLoss = input(20, title = "Stop loss percentage(0.1%)") maSource = input(defval = close, title = "MA Source") maLength6 = input(defval = 6, title = "MA Period 6", minval = 1) maLength14 = input(defval = 14, title = "MA Period 14", minval = 1) maLength25 = input(defval = 25, title = "MA Period 25", minval = 1) maLength80 = input(defval = 80, title = "MA Period 80", minval = 1) ma6 = ema(maSource, maLength6) ma14 = ema(maSource, maLength14) ma25 = ema(maSource, maLength25) ma80 = ema(maSource, maLength80) ma_6_plot = plot(ma6 , title = "MA 6", color = red, linewidth = 2, style = line, transp = 50) ma14_plot = plot(ma14, title = "MA 14", color = green, linewidth = 2, style = line, transp = 50) ma25_plot = plot(ma25, title = "MA 25", color = blue, linewidth = 2, style = line, transp = 50) ma80_plot = plot(ma80, title = "MA 80", color = silver, linewidth = 2, style = line, transp = 50) longEMA = (crossover(ma6, ma14) or crossover(ma6, ma25)) and (ma6>ma80) exitLong = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) shortEMA = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) and (ma6< ma80) exitShort =(crossover(ma6, ma14) or crossover(ma6, ma25)) if (longEMA) strategy.entry("LongId", strategy.long) if (shortEMA) strategy.entry("ShortId", strategy.short) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)