Chiến lược này sử dụng chỉ số dao động đường trung bình hai chiều để đánh giá điểm mua và bán của cổ phiếu. Chỉ số dao động đường trung bình hai chiều bao gồm các đường trung bình chuyển động hai chiều dài và chiều dài của hai tham số khác nhau, đo đạc sự quá mua và quá bán bằng cách tính toán động lực của biến động giá.
Chỉ số cốt lõi của chiến lược này là chỉ số dao động đồng tuyến nhịp nhàng (TSI). Chỉ số này được tính bằng cách:
Tính toán biến động giá pc=close-preclose
Phương pháp làm mịn hai chỉ số cho pc, lấy trung bình chỉ số 12 ngày của chu kỳ dài và 9 ngày của chu kỳ ngắn.
Tương tự như vậy đối với các giá trị tuyệt đối của arraypc được xử lý bằng phẳng hai chỉ số, và có được double_smoothed_abs_pc
Chỉ số TSI cuối cùng = 100*(double_smoothed_pc/double_smoothed_abs_pc)
Bằng cách tính toán giá trị TSI và mối quan hệ của nó với đường tín hiệu tsi_signal, đánh giá vùng quá mua quá bán, để quyết định mua và bán.
Dấu hiệu mua: Đi qua đường tín hiệu của nó trên giá TSI, cho thấy giá cổ phiếu đã đảo ngược, bước vào khu vực bán tháo, có thể mua.
Tín hiệu bán: Đi qua đường tín hiệu của nó dưới giá TSI, cho thấy giá cổ phiếu đã đảo ngược, khu vực bán tháo đã kết thúc và nên bán.
Ưu điểm lớn nhất của chiến lược này là sử dụng chỉ số đường trung bình trơn kép để xác định các đặc điểm chu kỳ trong giá cổ phiếu. Sử dụng hai chu kỳ ngắn cùng một lúc trong chỉ số đường trung bình trơn kép, có thể nắm bắt xu hướng thay đổi giá một cách nhạy cảm và chính xác hơn, có lợi thế mạnh hơn so với đường trung bình đơn lẻ trong việc xác định điểm mua và bán.
Ngoài ra, chiến lược này sử dụng chỉ số TSI thay vì các chỉ số kỹ thuật phổ biến khác vì chỉ số TSI tập trung nhiều hơn vào thông tin động lực về biến động giá. Điều này có thể xác định chính xác hơn về hiện tượng mua quá mức, do đó có thể lựa chọn điểm mua và bán tốt hơn.
Rủi ro lớn nhất của chiến lược này là đường trung bình hai chiều tự nó nhạy cảm hơn với sự thay đổi giá, dễ tạo ra tín hiệu sai khi giá cổ phiếu dao động. Ngoài ra, chỉ số TSI vẫn là tiêu chuẩn chủ quan để đánh giá vùng quá mua quá bán, và cài đặt tham số không đúng cũng có thể ảnh hưởng đến độ chính xác của phán đoán.
Để kiểm soát những rủi ro này, khuyến cáo tối ưu hóa các tham số thích hợp, điều chỉnh chiều dài của đường trung bình dài và ngắn; đồng thời kết hợp với các chỉ số khác để xác minh tín hiệu, tránh mở vị trí trong tình trạng biến động. Ngoài ra, tối ưu hóa chiến lược dừng lỗ, thiết lập các biện pháp kiểm soát rủi ro đối với các sự kiện bất ngờ cũng rất cần thiết.
Chiến lược này tập trung vào hai khía cạnh:
Tối ưu hóa tham số. Có thể kiểm tra sự kết hợp tối ưu nhất của các tham số đường trung bình dài và đường tín hiệu thông qua nhiều phản hồi hơn, nâng cao độ nhạy của chỉ số.
Thiết lập các chỉ số lọc. Ví dụ, kết hợp với các chỉ số khác như Brin, KDJ để xác minh tín hiệu mua và bán, tránh mở vị trí sai. Hoặc thiết lập bộ lọc khối lượng giao dịch, chỉ mở vị trí khi khối lượng giao dịch lớn hơn.
Tăng chiến lược dừng lỗ. Thiết lập dừng di chuyển, dừng thời gian để kiểm soát tổn thất đơn lẻ. Đồng thời, cũng có thể tạm dừng giao dịch theo tình trạng thị trường lớn, kiểm soát rủi ro hệ thống.
Quản lý vị trí tối ưu. Thiết lập quy mô và tỷ lệ vị trí được điều chỉnh động, có thể kiểm soát lỗ hổng rủi ro cho mỗi giao dịch tùy thuộc vào tình hình thị trường.
Chiến lược này sử dụng phương pháp tính toán của chỉ số osilator đường trung bình hai chiều, đồng thời kết hợp hai chu kỳ phân tích động lực giá thay đổi để đánh giá khu vực quá mua quá bán và quyết định thời điểm mua bán. Với một đường trung bình đơn lẻ, chiến lược này có lợi thế là đánh giá chính xác hơn.
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shankardey7310
//@version=5
strategy("TSI STOCKS", shorttitle="TSI", overlay=true)
initialCapital = input(10000, title="Initial Capital")
riskPercent = input(1, title="Risk Percentage") / 100
longLength = input(12, title="Long Length")
shortLength = input(9, title="Short Length")
signalLength = input(12, title="Signal Length")
price = close
pc = ta.change(price)
double_smooth(src, long, short) =>
first_smooth = ta.ema(src, long)
ta.ema(first_smooth, short)
double_smoothed_pc = double_smooth(pc, longLength, shortLength)
double_smoothed_abs_pc = double_smooth(math.abs(pc), longLength, shortLength)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi_signal = ta.ema(tsi_value, signalLength)
riskAmount = (initialCapital * riskPercent) / close
if (tsi_value > tsi_signal and tsi_value[1] <= tsi_signal[1])
strategy.entry("Long", strategy.long)
if (tsi_value < tsi_signal and tsi_value[1] >= tsi_signal[1])
strategy.close("Long")
plot(tsi_value, title="True Strength Index", color=#2962FF)
plot(tsi_signal, title="Signal", color=#E91E63)
hline(0, title="Zero", color=#787B86)