Chiến lược giao dịch hai TEMA là một chiến lược phổ biến hơn để theo dõi xu hướng giá. Chiến lược này sử dụng TEMA chỉ số di chuyển ba chiều với hai tham số khác nhau, tạo ra nhiều tín hiệu khi đường nhanh đi qua đường chậm từ phía dưới và ngang khi đường nhanh đi qua đường chậm từ phía trên xuống. Chiến lược này có thể theo dõi xu hướng giá một cách hiệu quả và thu được lợi nhuận tốt hơn khi xu hướng rõ ràng.
Chiến lược này sử dụng TEMA như là chỉ số kỹ thuật chính. Công thức tính toán TEMA là:
TEMA = (3*EMA1) - (3*EMA2) + EMA3
Trong đó, EMA1, EMA2 và EMA3 là EMA di chuyển theo chỉ số với độ dài N. TEMA có thể phản ứng nhanh hơn với sự thay đổi giá bằng cách tính toán EMA ba lần.
Chiến lược sử dụng TEMA ngắn hơn làm đường nhanh và TEMA dài hơn làm đường chậm. Khi đường nhanh vượt qua đường chậm, giá bắt đầu tăng và tạo ra nhiều tín hiệu; khi đường nhanh vượt qua đường chậm, giá bắt đầu giảm và đóng cửa.
Chìa khóa của chiến lược này là thiết lập tham số và phán đoán điều kiện. Thiết lập đường nhanh có chu kỳ ngắn hơn, chẳng hạn như 20 ngày, có thể nắm bắt được sự thay đổi giá nhanh hơn; thiết lập đường chậm có chu kỳ dài hơn, chẳng hạn như 60 ngày, có thể loại bỏ các đột phá giả. Khi giá có xu hướng tăng hoặc giảm rõ ràng, đường nhanh có thể nhanh chóng đi lên hoặc xuống đường chậm, tạo ra tín hiệu giao dịch.
Chiến lược này có những ưu điểm sau:
Sử dụng chỉ số TEMA có thể phản ứng nhanh hơn với sự thay đổi giá và nắm bắt xu hướng đảo ngược.
Cấu trúc TEMA đôi có thể lọc các đợt phá vỡ giả và nhập vào các giao dịch xu hướng có xác suất cao.
Cài đặt tham số có thể điều chỉnh linh hoạt, có thể điều chỉnh tham số theo thị trường, thích ứng với các tình huống khác nhau.
Chiến lược logic đơn giản, rõ ràng, dễ hiểu và có thể thực hiện được.
Có thể thu được lợi nhuận tốt hơn trong các tình huống xu hướng và hiệu quả hơn trong thị trường có xu hướng rõ ràng.
Chiến lược này cũng có những rủi ro sau:
Trong khi đó, các nhà đầu tư khác cũng có xu hướng mất nhiều giao dịch trong các vụ thu hồi tài chính.
Nếu các tham số được thiết lập không đúng, có thể tạo ra quá nhiều tín hiệu giả.
Không thể phản ứng hiệu quả với sự thay đổi ngắn hạn của tình hình do sự kiện bất ngờ.
Có một khoảng thời gian bị trễ, có thể bạn sẽ bỏ lỡ cơ hội truy cập ngắn.
Trong bối cảnh bất ổn lớn, rủi ro trong việc mở một vị trí là rất lớn.
Cần điều chỉnh các tham số theo thời gian để thích ứng với sự thay đổi của thị trường và cần có kinh nghiệm tối ưu hóa các tham số nhất định.
Các biện pháp quản lý rủi ro:
Tối ưu hóa các thiết lập tham số, tránh quá nhạy cảm.
Kết hợp với các chỉ số khác để lọc tín hiệu vào sân.
Sử dụng dừng lỗ ngoài sân để đảm bảo kiểm soát tổn thất đơn.
Giảm quy mô vị trí, kiểm soát rủi ro giao dịch đơn lẻ.
Thêm tham số để tối ưu hóa phán đoán và cơ chế can thiệp nhân tạo.
Chiến lược này có thể được tối ưu hóa bằng cách:
Tối ưu hóa các tham số của đường nhanh và đường chậm, làm cho chúng thích ứng tốt hơn với các giống và môi trường thương mại khác nhau. Có thể giới thiệu cơ chế tối ưu hóa tham số động.
Thêm kết hợp các chỉ số khác, như MACD, Brin và các chỉ số khác, để tăng hiệu quả của tín hiệu.
Thêm các chiến lược dừng lỗ, chẳng hạn như dừng di chuyển, dừng thời gian, dừng ATR, để kiểm soát tổn thất.
Kết hợp với chỉ số VIX để tránh mở vị trí trong cơn hoảng loạn.
Tiếp theo, chúng tôi sẽ đưa ra các chỉ số về năng lượng, sau đó xem xét việc xây dựng nhà kho khi có nhiều năng lượng.
Tối ưu hóa các chiến lược quản lý tài chính, chẳng hạn như giao dịch số lượng, quản lý vị trí.
Tự động tối ưu hóa các tham số kết hợp với học máy.
Chiến lược giao dịch TEMA là một chiến lược sử dụng chỉ số xu hướng để theo dõi xu hướng. Nó có lợi cho việc nắm bắt xu hướng giá và giao dịch dưới xu hướng rõ ràng. Nhưng cũng cần chú ý kiểm soát rủi ro để tránh thiệt hại do sử dụng không đúng cách. Bằng cách kiểm tra tối ưu hóa hơn nữa, bạn có thể thiết lập các tham số chiến lược một cách khoa học hơn và hợp lý hơn để có được lợi nhuận tốt hơn trong tình huống xu hướng.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 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/
// © nickrober
//@version=4
strategy(title="TEMA Cross Backtest", shorttitle="TEMA_X_BT", overlay=true, commission_type=strategy.commission.percent, commission_value=0, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Backtest inputs
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2010)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
// Define backtest timewindow
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true
//TEMA Section
xLength = input(20, minval=1, title="Fast Length")
xPrice = close
xEMA1 = ema(xPrice, xLength)
xEMA2 = ema(xEMA1, xLength)
xEMA3 = ema(xEMA2, xLength)
xnRes = (3 * xEMA1) - (3 * xEMA2) + xEMA3
xnResP = plot(xnRes, color=color.green, linewidth=2, title="TEMA1")
yLength = input(60, minval=1, title="Slow Length")
yPrice = close
yEMA1 = ema(yPrice, yLength)
yEMA2 = ema(yEMA1, yLength)
yEMA3 = ema(yEMA2, yLength)
ynRes = (3 * yEMA1) - (3 * yEMA2) + yEMA3
ynResP = plot(ynRes, color=color.red, linewidth=2, title="TEMA2")
fill(xnResP, ynResP, color=xnRes > ynRes ? color.green : color.red, transp=75, editable=true)
// Buy and Sell Triggers
LongEntryAlert = xnRes > ynRes
LongCloseAlert = xnRes < ynRes
ShortEntryAlert = xnRes < ynRes
ShortCloseAlert = xnRes > ynRes
// Entry & Exit signals
strategy.entry("Long", strategy.long, when = xnRes > ynRes and window())
strategy.close("Long", when = xnRes < ynRes)
//strategy.entry("Short", strategy.short, when = xnRes < ynRes and window())
//strategy.close("Short", when = xnRes > ynRes)