Chiến lược đảo ngược dựa trên đường trung bình động, mô hình giá và khối lượng


Ngày tạo: 2024-01-17 17:48:40 sửa đổi lần cuối: 2024-01-17 17:48:40
sao chép: 0 Số nhấp chuột: 551
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược dựa trên đường trung bình động, mô hình giá và khối lượng

Tổng quan

Chiến lược này sử dụng sự kết hợp của đường trung bình di chuyển, hình thức giá và khối lượng giao dịch để xác định điểm đảo ngược của thị trường. Chiến lược sẽ làm nhiều khi đường trung bình di chuyển nhanh xuyên qua đường trung bình di chuyển chậm và có nhiều hình thức nuốt, phá vỡ ngưỡng kháng cự và tăng khối lượng giao dịch; ngược lại, khi đường trung bình di chuyển nhanh xuyên qua đường trung bình di chuyển chậm và có hình thức nuốt trống, phá vỡ ngưỡng hỗ trợ và tăng khối lượng giao dịch, chiến lược sẽ làm trống.

Nguyên tắc

Ý tưởng cốt lõi của chiến lược này là sử dụng sự kết hợp của hệ thống đường thẳng, hình thức giá và ba yếu tố quan trọng để xác định điểm đảo ngược tiềm năng. Cụ thể, giao điểm vàng và giao điểm chết của đường thẳng có thể xác định sự chuyển đổi của xu hướng. Hai hình thức giá - tiêu thụ nhiều đầu và tiêu thụ đầu không - thường báo hiệu một sự đảo ngược ngắn hạn.

Từ quan điểm logic của mã, đầu tiên tính toán trung bình di chuyển nhanh và trung bình di chuyển chậm. Sau đó, thiết lập các điều kiện phán đoán cho nhiều đầu ăn và đầu ăn trống. Đồng thời cũng thiết lập các điều kiện hỗ trợ ngưỡng kháng cự và tăng khối lượng giao dịch.

Ưu điểm

Lợi thế lớn nhất của chiến lược này là sử dụng sự kết hợp của nhiều tín hiệu để xác định đảo ngược, điều này có thể làm giảm hiệu quả các tín hiệu giả. Cụ thể, chỉ dựa vào một đường trung bình, hình dạng giá hoặc số lượng có thể dễ dàng tạo ra tín hiệu giao dịch sai. Nhưng nếu ba tín hiệu xuất hiện cùng một lúc, thì tỷ lệ dự đoán đảo ngược sẽ được cải thiện đáng kể.

Ngoài ra, chiến lược này sử dụng cả hai yếu tố xu hướng và đảo ngược. Trước khi có tín hiệu đảo ngược, xu hướng phải có mặt. Nói cách khác, chiến lược này chỉ tìm kiếm cơ hội đảo ngược trong bối cảnh xu hướng. Điều này cũng làm giảm ngẫu nhiên và tăng tỷ lệ lợi nhuận.

Rủi ro

Rủi ro lớn nhất của chiến lược này là thất bại trong việc đảo ngược, tức là sau khi phát đi nhiều tín hiệu, giá tiếp tục đi xuống; hoặc sau khi phát đi tín hiệu, giá tiếp tục tăng. Điều này thường là do phán đoán sai, tín hiệu đảo ngược chỉ là giả mạo, hoặc chỉ là điều chỉnh ngắn hạn, sau đó tiếp tục xu hướng ban đầu.

Cách giải quyết là điều chỉnh tham số đường trung bình, nhận ra xu hướng có chu kỳ dài hơn; đồng thời tăng cường mức dừng lỗ thích hợp, dừng lỗ kịp thời sau khi đảo ngược thất bại. Ngoài ra, bạn cũng có thể kết hợp nhiều yếu tố để xác nhận đảo ngược, chẳng hạn như hình dạng giá của chu kỳ lớn.

Tối ưu hóa

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Điều chỉnh tham số đường trung bình để xác định chu kỳ dài hoặc ngắn phù hợp hơn.

  2. Kiểm tra các thuật toán hỗ trợ resistor bit khác nhau, chẳng hạn như resistor bit hỗ trợ Pareto.

  3. Thử các chỉ số khối lượng giao dịch khác nhau, chẳng hạn như chỉ số dòng năng lượng, chỉ số biến động khối lượng giao dịch.

  4. Thêm nhiều tín hiệu xác nhận sự đảo ngược, chẳng hạn như hình thức giá dài hạn, tăng mạnh khối lượng giao dịch.

  5. Kết hợp với chỉ số cổ phiếu tương lai để xác nhận xuyên thị trường, sử dụng chỉ số cổ phiếu tương lai để xác nhận sự đảo ngược của từng cổ phiếu.

Chiến lược này có thể được tối ưu hóa hơn nữa bằng cách thử nghiệm các kết hợp tham số khác nhau, từ đó cải thiện tỷ lệ lợi nhuận và tỷ lệ thắng.

Tóm tắt

Chiến lược này kết hợp ba yếu tố để nhận biết sự đảo ngược, đó là hệ thống đường trung bình, hình dạng giá và khối lượng giao dịch, để thực hiện sự kết hợp hiệu quả của nhiều tín hiệu. Nó chỉ tìm kiếm cơ hội đảo ngược trong bối cảnh xu hướng, tránh giao dịch ngẫu nhiên. Bằng cách tối ưu hóa các tham số hơn nữa và thêm các yếu tố xác nhận, chiến lược này có thể trở thành một chiến lược đảo ngược đường ngắn rất thực tế.

Mã nguồn chiến lược
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profit Table Strategy", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100

// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]

// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")

// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition

// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition

// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)

// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)

// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")

// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)