Chiến lược Three SMA Crossover Momentum là một chiến lược chỉ số kỹ thuật điển hình theo dõi xu hướng thị trường. Nó kết hợp các đường trung bình di chuyển đơn giản 16-, 36- và 72 giai đoạn và sử dụng các đường chéo tăng và giảm của chúng để xác định xu hướng thị trường, cùng với Đường trung bình di chuyển thích nghi Kaufman (KAMA) như một bộ lọc để có các vị trí dài hoặc ngắn khi hướng xu hướng tương đối rõ ràng.
Các chỉ số cốt lõi của chiến lược này là các đường trung bình di chuyển đơn giản 16-, 36- và 72-thời gian. Khi SMA ngắn hạn vượt qua đường SMA dài hơn lên, nó báo hiệu rằng thị trường đang bước vào xu hướng tăng. Khi SMA ngắn hạn vượt qua đường SMA dài hơn xuống, nó báo hiệu rằng thị trường đang bước vào xu hướng giảm. Ví dụ, khi 16-SMA vượt qua đường 36-SMA và 72-SMA, đó là một tín hiệu tăng. Và khi 16-SMA vượt qua đường 36-SMA và 72-SMA, đó là một tín hiệu giảm.
Đường trung bình chuyển động thích nghi Kaufman (KAMA) phục vụ như một bộ lọc để tránh các tín hiệu sai khi xu hướng không rõ ràng.
Chiến lược theo dõi các tình huống chéo SMA để có các vị trí dài hoặc ngắn khi xu hướng tương đối rõ ràng. Điều kiện dài là 16-SMA vượt qua 36-SMA và 72-SMA với KAMA tuyến tính. Điều kiện ngắn là 16-SMA vượt qua dưới 36-SMA và 72-SMA với KAMA tuyến tính.
Những lợi thế của chiến lược này là:
Ngoài ra còn có một số rủi ro với chiến lược này:
Các rủi ro có thể được giảm bằng cách điều chỉnh các thông số SMA, thiết lập các hạn chế dừng lỗ hoặc chỉ áp dụng cho các thị trường biến động cao.
Chiến lược có thể được tối ưu hóa theo những cách sau:
Chiến lược Three SMA Crossover Momentum là một chiến lược theo xu hướng khá cổ điển và thực tế nói chung. Nó đánh giá các xu hướng thị trường trung và dài hạn hiệu quả thông qua các giao dịch chéo SMA nhiều giai đoạn và lọc ra một số tiếng ồn. Nó có thể phục vụ như một trong những chỉ số tham chiếu thời gian cho giao dịch vị trí. Nhưng chiến lược này cũng có một số điểm yếu, đòi hỏi phải cải thiện và tối ưu hóa hơn nữa để đứng ở các thị trường đa dạng hơn.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h 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/ // © Wielkieef //@version=5 strategy(title='Three SMA-crossover strategy [30min] ', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) src = close Length1 = input.int(16, title=' 1-SMA Lenght', minval=1, group='SMA') Length2 = input.int(36, title=' 2-SMA Lenght', minval=1, group='SMA') Length3 = input.int(72, title=' 3-SMA Lenght', minval=1, group='SMA') SMA1 = ta.sma(close, Length1) SMA2 = ta.sma(close, Length2) SMA3 = ta.sma(close, Length3) Long_ma = SMA1 > SMA2 and SMA2 > SMA3 Short_ma = SMA1 < SMA2 and SMA2 < SMA3 LengthMainSMA = input.int(100, title=' Trend SMA ', minval=1) SMAas = ta.sma(src, LengthMainSMA) // Powered Kaufman Adaptive Moving Average by alexgrover (modificated by Wielkieef) lengthas = input.int(50, title=' KAMA Lenght') sp = input.bool(true, title=' Self Powered') er = math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas) pow = sp ? 1 / er : 2 per = math.pow(math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas), pow) a = 0. a := per * src + (1 - per) * nz(a[1], src) mad4h = 0. a_f = a / a[1] > .999 and a / a[1] < 1.001 ///. Bar_color = close > SMAas ? color.green : Long_ma ? color.blue : Short_ma ? color.maroon : color.gray barcolor(color=Bar_color) long_cond = Long_ma and SMAas < close and not a_f and close > a short_cond = Short_ma and SMAas > close and not a_f and close < a long_stop = Short_ma and SMAas < close short_stop = Long_ma and SMAas > close SMA1plot = plot(SMA1, color=Bar_color, linewidth=2) SMA2plot = plot(SMA2, color=Bar_color, linewidth=4) SMA3plot = plot(SMA3, color=Bar_color, linewidth=2) fill(SMA1plot,SMA3plot,title="RANGE " ,color = color.new(Bar_color, 50)) if long_cond strategy.entry('Long', strategy.long) if short_cond strategy.entry('Short', strategy.short) strategy.close_all(when=long_stop or short_stop) //by wielkieef