
Chiến lược kéo ngược thời gian trung bình (Momentum Average Inverse Relief Pullback Strategy) là một chiến lược đơn giản để thực hiện hoạt động đảo ngược gần đường trung bình di chuyển. Chiến lược này sử dụng đường trung bình di chuyển chỉ số 50 kỳ làm chỉ số đánh giá xu hướng chính và kết hợp với quy tắc nuốt chửng hình học để tìm cơ hội đảo ngược. Sau khi phá vỡ đường trung bình di chuyển, chờ cho một đường K ngược thứ hai hoặc thứ ba hình thành, và nếu phù hợp với hình thức đảo ngược, hãy mở cửa ngược khi đường K tiếp theo đóng cửa và đặt đồng hồ dừng lỗ một phút.
Chiến lược này dựa trên hai giả định chính:
50 EMA có thể đánh giá hiệu quả xu hướng của thị trường. Khi giá tăng, nó được coi là giao dịch nhiều đầu; khi giảm, nó được coi là giao dịch trống.
Sau khi xu hướng phá vỡ EMA, thường có một đợt phục hồi điều chỉnh ngắn hạn, sử dụng các đặc điểm hình dạng của đường K quay ngược, có thể bắt kịp thời điểm kết thúc đợt phục hồi để thực hiện hoạt động đảo ngược.
Cụ thể, chiến lược đầu tiên tính toán 50 EMA, sau đó đánh giá liệu giá có phá vỡ EMA hay không. Nếu phá vỡ nhiều đầu, hãy chờ 2-3 đường K âm xuống, nếu K tiếp theo là nhiều đầu, hãy làm nhiều khi K đóng cửa; Nếu phá vỡ đầu không, hãy chờ 2-3 đường lên, nếu K tiếp theo là đầu không, hãy làm trống khi K đóng cửa.
Chiến lược này có những ưu điểm sau:
Logic hoạt động đơn giản, rõ ràng, dễ hiểu và phù hợp cho người mới bắt đầu.
Các tín hiệu giao dịch có hiệu quả hơn khi sử dụng đầy đủ tính năng định hướng và hình dạng đường K của đường trung bình di chuyển.
Đặt thời gian dừng lỗ để kiểm soát tổn thất của một giao dịch.
Các quy tắc về thủ tục được xác định rõ ràng, tránh ảnh hưởng của phán đoán chủ quan, và làm cho chiến lược đáng tin cậy hơn.
Chiến lược này cũng có một số rủi ro:
50 ngày EMA không thể đánh giá chính xác xu hướng, có thể có sai sót.
Phân định hình dạng K cũng có một xác suất sai lệch.
Thời gian dừng lỗ được thiết lập không đúng cách có thể làm tăng lỗ hoặc giảm lợi nhuận.
Có thể có các vấn đề như điểm trượt, chuỗi đơn trong giao dịch máy móc, ảnh hưởng đến lợi nhuận.
Phản ứng:
Tối ưu hóa các tham số chu kỳ của trung bình di chuyển để tìm các giá trị phù hợp hơn.
Kết hợp với các chỉ số khác để đánh giá kết hợp, tăng độ tin cậy của tín hiệu.
Kiểm tra và tối ưu hóa các tham số thời gian dừng để tìm các tham số tối ưu.
Thiết lập điều khiển trượt trong chiến lược để tránh mất trượt nghiêm trọng.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tối ưu hóa các tham số chu kỳ trung bình di chuyển để tìm các tham số tối ưu.
Thay thế các loại trung bình di chuyển khác, chẳng hạn như trung bình di chuyển có trọng lượng.
Tăng bộ lọc như âm lượng và tần số để tránh các tín hiệu sai trong tổng hợp.
Kết hợp với Stochastics, MACD và các chỉ số khác để thực hiện chiến lược kết hợp, cải thiện chất lượng tín hiệu.
Thiết lập thời gian dừng lỗ tối ưu dựa trên các đặc điểm của các giống và thời gian giao dịch.
Thêm chiến lược dừng lỗ, chủ động dừng lỗ khi lợi nhuận đạt tiêu chuẩn nhất định.
Chiến lược kéo lùi giảm giá của trung bình động là một chiến lược giao dịch đường ngắn đơn giản và thực tế, chủ yếu sử dụng đường trung bình di chuyển để đánh giá xu hướng và sử dụng đường K để phát hiện cơ hội đảo ngược, do đó thực hiện hoạt động đường ngắn. Chiến lược này có lợi thế về tính rõ ràng và dễ thực hiện, nhưng cũng có một số tham số tối ưu hóa. Với một số thử nghiệm và điều chỉnh, chiến lược này có thể trở thành điểm khởi đầu tốt cho người mới bắt đầu giao dịch định lượng.
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("LinoR EMA Pullback Strategy", shorttitle="EPS", overlay=true)
// Define EMA period
emaPeriod = input(50, title="EMA Period")
// Calculate 50 EMA
ema50 = ta.ema(close, emaPeriod)
// Calculate engulfing conditions
engulfingBullish = close[1] < open[1] and close > open and close > close[1] and open < open[1]
engulfingBearish = close[1] > open[1] and open > close and open > open[1] and close < close[1]
// Define a 1-minute timer
var timer = 0
if bar_index > 0
timer := timer[1] + 1
// Long condition
longCondition = ta.crossover(close, ema50) and engulfingBullish
if longCondition
strategy.entry("Buy", strategy.long)
// Short condition
shortCondition = ta.crossunder(close, ema50) and engulfingBearish
if shortCondition
strategy.entry("Sell", strategy.short)
// Exit after 1 minute
if timer >= 1
strategy.close("Exit")
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)