Chiến lược đột phá trung bình động kép là một xu hướng điển hình sau chiến lược giao dịch định lượng. Nó tạo ra tín hiệu giao dịch bằng cách tính toán trung bình động đơn giản của các giai đoạn khác nhau và kiểm tra xem giá có phá vỡ chúng để xác định vị trí hay không. Chiến lược này sử dụng trung bình động 20 ngày và 60 ngày làm tín hiệu giao dịch.
Lý thuyết cốt lõi của chiến lược MA kép làsử dụng các đường trung bình động của các giai đoạn khác nhau để nắm bắt xu hướng giá và tạo ra các tín hiệu giao dịch khi giá vượt qua đường trung bình động.
Đặc biệt, chiến lược này sử dụng trung bình di chuyển đơn giản 20 ngày và 60 ngày. Hai trung bình di chuyển này có thể được xem là công cụ để nắm bắt xu hướng ngắn hạn và trung hạn tương ứng. Khi giá ngắn hạn phá vỡ giá trung hạn dài hạn, nó báo hiệu rằng thị trường đang có xu hướng tăng và do đó nên đi dài. Khi giá ngắn hạn giảm xuống dưới giá trung hạn dài hạn, nó báo hiệu rằng thị trường đang có xu hướng giảm và do đó các vị trí nên được giảm.
Mã sử dụngta.crossover
vàta.crossunder
để xác định xem giá đã phá vỡ hoặc giảm xuống dưới mức trung bình động.
Chiến lược phá vỡ trung bình di chuyển kép có những lợi thế sau:
Ngoài ra còn có một số rủi ro với chiến lược:
Chiến lược có thể được tăng cường từ các khía cạnh sau:
Chiến lược breakout trung bình động kép là một chiến lược theo xu hướng đơn giản và thực tế. Nó có thể nắm bắt hiệu quả xu hướng trung dài hạn trong khi tránh tiếng ồn thị trường ngắn hạn. Ngoài ra, logic dễ hiểu và các tham số hạn chế làm cho nó rất phù hợp với giao dịch định lượng. Tất nhiên có nhiều phòng cải tiến, chẳng hạn như điều chỉnh tham số, lọc tín hiệu và dừng lỗ để làm cho nó ổn định và có lợi nhuận hơn.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m 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/ // © Astorhsu //@version=5 strategy("Astor SMA20/60", overlay=true) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma10 = ta.sma(close,10) sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 // trend1 = sma60 > sma20 //假設目前趨勢為60>20 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) strategy.close("open long60",comment="跌破m60平倉", qty=1) // longCondition2 = ta.crossover(close, ta.sma(close, 10)) // if (longCondition2) // strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多") // shortCondition2 = ta.crossunder(close, ta.sma(close, 10)) // if (shortCondition2) // strategy.close("open long10",comment="跌破m10平倉", qty=1)