Chiến lược cổ phiếu dao động trung bình động kép

Tác giả:ChaoZhang, Ngày: 2024-02-05 10:47:38
Tags:

máy tính để có được double_smoothed_abs_pc

  1. Cuối cùng chỉ số TSI = 100* ((double_smoothed_pc/double_smoothed_abs_pc)

Bằng cách so sánh giá trị TSI với đường tín hiệu tsi_signal của nó, chúng ta có thể xác định các khu vực mua quá mức hoặc bán quá mức, do đó quyết định các điểm mua và bán.

Tín hiệu mua: TSI vượt qua tín hiệu của nó lên, chỉ ra sự đảo ngược giá cổ phiếu, đánh dấu sự khởi đầu của khu vực mua quá mức nơi chúng ta nên dài.

Tín hiệu bán: TSI vượt dưới tín hiệu của nó xuống, cho thấy sự đảo ngược của giá cổ phiếu, đánh dấu kết thúc khu vực mua quá mức nơi chúng ta nên bán ra.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này nằm ở việc sử dụng chỉ số trung bình động kép để xác định các đặc điểm chu kỳ trong giá cổ phiếu. Bằng cách đồng thời sử dụng cả hai giai đoạn dài và ngắn trong trung bình động kép, nó 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 so với một trung bình động duy nhất, và hiệu quả hơn trong việc xác định tín hiệu giao dịch.

Ngoài ra, chiến lược này chọn chỉ số TSI thay vì các chỉ số kỹ thuật phổ biến khác, bởi vì TSI chú ý nhiều hơn đến việc tính toán động lực thay đổi giá, có thể đánh giá chính xác hơn các điều kiện mua quá mức / bán quá mức, dẫn đến các điểm giao dịch tốt hơn.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là trung bình di chuyển kép tự nó khá nhạy cảm với sự thay đổi giá. Trong trường hợp biến động giá, nó có thể dễ dàng tạo ra tín hiệu sai. Hơn nữa, các tiêu chí cho TSI để đánh giá các vùng mua quá mức / bán quá mức vẫn còn chủ quan, và cài đặt tham số không chính xác cũng ảnh hưởng đến độ chính xác.

Để kiểm soát các rủi ro như vậy, nên tối ưu hóa các tham số một cách thích hợp bằng cách điều chỉnh chiều dài của các đường trung bình động đôi. Kết hợp các chỉ số khác để xác minh tín hiệu cũng cần thiết để tránh mở các vị trí trong bối cảnh biến động. Hơn nữa, tối ưu hóa các chiến lược dừng lỗ và thiết lập các biện pháp kiểm soát rủi ro chống lại các trường hợp khẩn cấp là rất cần thiết.

Hướng dẫn tối ưu hóa

Các hướng tối ưu hóa của chiến lược này chủ yếu tập trung vào hai khía cạnh:

  1. Tối ưu hóa tham số. Sự kết hợp tối ưu của các tham số như chiều dài của trung bình di chuyển dài và ngắn và đường tín hiệu có thể được kiểm tra lại để cải thiện độ nhạy.

  2. Thiết lập các chỉ số lọc. chẳng hạn như kết hợp Bollinger Bands, KDJ v.v. để xác minh tín hiệu mua / bán và ngăn chặn việc mở sai các vị trí. Bộ lọc khối lượng giao dịch cũng có thể được áp dụng cho các vị trí mở chỉ khi khối lượng tăng vọt.

  3. Thêm chiến lược dừng lỗ. Thiết lập dừng lỗ di chuyển, thời gian thoát để hạn chế mất một vị trí. Chúng tôi cũng có thể tạm dừng giao dịch dựa trên điều kiện thị trường để kiểm soát rủi ro có hệ thống.

  4. Tối ưu hóa kích thước vị trí. Thiết lập kích thước và tỷ lệ vị trí năng động dựa trên điều kiện thị trường để quản lý rủi ro của mỗi giao dịch.

Tóm lại

Chiến lược này sử dụng phương pháp tính toán của chỉ số dao động trung bình động kép, tích hợp cả phân tích dài hạn và ngắn hạn về sự thay đổi động lực giá, do đó xác định các khu vực mua quá mức và bán quá mức để quyết định các bước vào và ra. So với một đường trung bình động duy nhất, nó có lợi thế của phán đoán chính xác và nhạy cảm hơn. Tất nhiên, vẫn cần tối ưu hóa tham số thích hợp, cùng với các chỉ số khác để lọc tín hiệu, để tăng sự ổn định và lợi nhuận. Nhìn chung, chiến lược này cung cấp một công cụ kỹ thuật hiệu quả để xác định các điểm giao dịch, đáng để thử nghiệm và tối ưu hóa trực tiếp.


/*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)

Thêm nữa