
Chiến lược động lượng chéo ba chiều 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 ba đường trung bình di chuyển đơn giản trong 16 chu kỳ, 36 chu kỳ và 72 chu kỳ để đánh giá xu hướng thị trường thông qua giao thoa đa đầu và giao thoa đầu trống của chúng, và kết hợp với đường trung bình di chuyển tự thích ứng của Kaufman làm bộ lọc để thực hiện hành động làm nhiều hoặc làm trống khi hướng xu hướng rõ ràng hơn.
Các chỉ số cốt lõi của chiến lược này là ba đường trung bình di chuyển đơn giản với 16 chu kỳ, 36 chu kỳ và 72 chu kỳ. Khi đường trung bình có chu kỳ ngắn đi qua đường trung bình có chu kỳ dài, thị trường sẽ đi vào xu hướng đa đầu; Khi đường trung bình có chu kỳ ngắn đi qua đường trung bình có chu kỳ dài, thị trường sẽ đi vào xu hướng trống. Ví dụ, khi đường trung bình 16 đi qua đường trung bình 36 và đường trung bình 72, tín hiệu đa đầu; Khi đường trung bình 16 đi qua đường trung bình 36 và đường trung bình 72, tín hiệu trống.
Kaufman Adaptive Moving Average ((KAMA) được sử dụng như một bộ lọc để tránh tín hiệu sai trong trường hợp xu hướng không rõ ràng. Chỉ khi KAMA ở chế độ không tăng tốc hoặc không giảm tốc (tức là đoạn đường thẳng), tín hiệu giao tuyến đồng đều sẽ được kích hoạt và thực hiện.
Chiến lược này được thực hiện bằng cách theo dõi sự giao nhau của đường trung bình, khi xu hướng rõ ràng hơn, thực hiện hoạt động tăng hoặc giảm giá. Điều kiện tăng là 16 đường trung bình trên đường trung bình 36 và đường trung bình 72, và KAMA tuyến tính ((không tăng tốc); điều kiện giảm giá là 16 đường trung bình dưới đường trung bình 36 và đường trung bình 72, và KAMA tuyến tính ((không giảm tốc))
Chiến lược này có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Bạn có thể giảm rủi ro bằng cách điều chỉnh các tham số đường trung bình, thiết lập các hạn chế dừng lỗ, hoặc chỉ sử dụng chiến lược này trong thị trường có nhiều biến động.
Chiến lược này có thể được tối ưu hóa bằng cách:
Chiến lược động lực giao chéo ba đường trung bình nói chung là một chiến lược theo dõi xu hướng cổ điển và thực tế hơn. Nó đánh giá xu hướng đường dài giữa thị trường thông qua giao chéo của đường trung bình trong nhiều khoảng thời gian và lọc một phần tiếng ồn hiệu quả. Nó có thể được sử dụng như là một trong những chỉ số tham khảo cho giao dịch tại thời điểm.
/*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