
Chiến lược này sử dụng các đường cong chết và Golden Cross để đánh giá xu hướng thị trường và điểm đảo ngược. Bên cạnh đó, chiến lược này cũng kết hợp với mức sóng thực trung bình để thiết lập điểm dừng đường mòn, trong khi đảm bảo lợi nhuận.
Chiến lược đảo ngược hai đường bằng nhau sử dụng giao thoa của đường nhanh và đường chậm để đánh giá xu hướng thị trường. Khi đường nhanh đi từ trên xuống qua đường chậm, hình thành một cái chết, cho thấy thị trường chuyển từ thả xuống xuống; khi đường nhanh đi từ dưới lên qua đường chậm, hình thành một giao thoa vàng, cho thấy thị trường chuyển từ thả xuống xuống. Chiến lược làm trống khi giao thoa chết, làm nhiều khi giao thoa vàng.
Cụ thể, chiến lược chọn đường nhanh của chỉ số STOCH ngày 9 làm đường nhanh, EMA ngày 3 làm đường chậm. Khi đóng cửa thấp hơn ngày trước đóng cửa, và đường nhanh cao hơn 50 và vượt qua đường chậm để xóa bỏ; Khi đóng cửa cao hơn ngày trước đóng cửa, và đường nhanh thấp hơn 50 và vượt qua đường chậm để xóa bỏ.
Chiến lược ATR Trailing Stop sử dụng mức sóng thực trung bình để thiết lập điểm dừng. Chỉ số ATR có thể phản ánh hiệu quả sự biến động ngắn hạn của thị trường. Chiến lược này thiết lập điểm dừng theo giá trị của ATR và dừng khi giá biến động.
Cụ thể, chiến lược chọn ATR 5 ngày, điểm dừng lỗ được thiết lập là gần trừ ATR 3,5 lần. Khi giá đạt đến điểm dừng lỗ, dừng lỗ sẽ được thực hiện.
Phương pháp kết hợp giữa hai chiến lược trailing stop và trailing stop ATR kết hợp lợi thế của chiến lược trailing stop trong việc xác định xu hướng và đảo ngược, và lợi thế của chiến lược trail stop ATR trong việc kiểm soát rủi ro, làm cho nó trở thành một chiến lược rất thực tế.
Cụ thể, chiến lược này có những lợi thế sau:
Sử dụng các hình thức hình thành hai đường cong và hình dạng giao thoa vàng để đánh giá điểm biến đổi xu hướng thị trường, đánh giá chính xác các tín hiệu đảo ngược.
Kết hợp với chỉ số STOCH để xác nhận tín hiệu đảo ngược, tránh tín hiệu sai.
ATR trailing stop là điểm dừng lỗ linh hoạt theo biến động của thị trường, khóa lợi nhuận tối đa.
Chiến lược này kết hợp nhiều chỉ số và các phương pháp phân tích kỹ thuật, được sử dụng kết hợp, làm cho chiến lược mạnh mẽ hơn.
Chiến lược được xây dựng rõ ràng và dễ hiểu, các tham số được điều chỉnh linh hoạt và dễ dàng sử dụng trên thực tế.
Trong khi chiến lược này có nhiều lợi thế, nó cũng có một số rủi ro cần lưu ý:
Tín hiệu được tạo ra bởi hai đường trung bình có thể bị trì trệ, không thể mua và bán chính xác trước và sau điểm đảo ngược. Chu kỳ trung bình có thể được rút ngắn thích hợp hoặc được tối ưu hóa kết hợp với các chỉ số khác.
Chỉ số ATR không nhạy cảm với sự biến động lớn của thị trường và không thể cập nhật điểm dừng lỗ kịp thời. Bạn có thể cân nhắc điều chỉnh kết hợp với chỉ số động lượng hoặc chỉ số tỷ lệ dao động.
Việc sử dụng nhiều tham số và điều kiện kết hợp làm tăng sự phức tạp của chiến lược. Các tham số không phù hợp có thể dẫn đến giao dịch quá quyết liệt và tăng rủi ro. Các tham số cần được đánh giá cẩn thận và điều chỉnh dần dần.
Theo phân tích rủi ro trên, chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Điều chỉnh tham số chu kỳ trung bình, rút ngắn chu kỳ để nắm bắt cơ hội đảo ngược sớm hơn.
Thêm các chỉ số khác để đánh giá tín hiệu đảo ngược, như MACD, KD, v.v., tạo thành xác nhận đa dạng.
Hoạt động điều chỉnh chu kỳ ATR hoặc giới thiệu tỷ lệ biến động của thị trường, cập nhật điểm dừng lỗ trong thời gian thực.
Đánh giá sự khác biệt giữa thị trường chứng khoán và thị trường tương lai, điều chỉnh các tham số tương ứng để phù hợp hơn với đặc điểm của hai loại thị trường.
Thêm chi phí giao dịch và điểm trượt vào thời điểm đánh giá lại, làm cho chiến lược gần gũi hơn với môi trường giao dịch thực tế.
Có thể xem xét thêm mô hình học máy để tối ưu hóa động nhiều tham số.
Chiến lược này có thể được mở rộng và tối ưu hóa từ nhiều góc độ để phù hợp với môi trường thị trường rộng lớn hơn. Nói chung, chiến lược này cung cấp một khung chiến lược tuyệt vời cho giao dịch định lượng.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 17/05/2019
// This is combo strategies for get
// a cumulative signal. Result signal will return 1 if two strategies
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Secon strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort
// The related article is copyrighted material from Stocks & Commodities Jun 2009
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
ATR_TrailingStop(nATRPeriod, nATRMultip) =>
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
pos = 0.0
xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Average True Range Trailing Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nATRPeriod = input(5)
nATRMultip = input(3.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posATR_TrailingStop = ATR_TrailingStop(nATRPeriod, nATRMultip)
pos = iff(posReversal123 == 1 and posATR_TrailingStop == 1 , 1,
iff(posReversal123 == -1 and posATR_TrailingStop == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue )