
Chiến lược này là một chiến lược giao dịch đơn giản trên đường trung bình di chuyển dựa trên các đường trung bình di chuyển ngắn hạn và dài hạn. Nó sử dụng các đường trung bình di chuyển 34 chu kỳ và 89 chu kỳ để quan sát sự giao nhau của chúng trong thời gian giao dịch sáng để tạo ra tín hiệu mua và bán.
Lập luận cốt lõi của chiến lược này dựa trên sự giao thoa giữa đường trung bình di chuyển ngắn hạn và dài hạn làm tín hiệu giao dịch. Cụ thể, chiến lược xác định đường trung bình di chuyển ngắn hạn và dài hạn 34 chu kỳ và 89 chu kỳ (SMA). Chỉ quan sát sự giao thoa giữa hai SMA này trong khoảng thời gian giao dịch sáng (08:00 - 10:00).
Sau khi nhận được tín hiệu mua hoặc bán, chiến lược sẽ vào vị trí và đặt một điều kiện để thoát khỏi vị trí, tức là sau khi vào vị trí giữ số lượng đường K gốc được chỉ định (đặc biệt là 3 gốc) và sau đó chủ động dừng lỗ. Như vậy, bạn có thể khóa một phần lợi nhuận và tránh thiệt hại mở rộng hơn nữa.
Cần lưu ý rằng chiến lược này chỉ nhận ra tín hiệu chéo trong thời gian đầu tiên. Điều này là do khối lượng giao dịch thị trường lớn hơn trong thời gian này và tín hiệu chuyển hướng có độ tin cậy cao hơn. Trong các thời gian khác, thị trường có nhiều biến động và dễ gây ra tín hiệu sai lệch.
Chiến lược này có một số lợi thế:
Sử dụng phương pháp chéo trung bình di chuyển đơn giản, dễ hiểu và phù hợp cho người mới bắt đầu
Chỉ nhận ra tín hiệu trong các khoảng thời gian đầu tiên có nhiều tín hiệu chất lượng cao, có thể lọc các tín hiệu giả trong các khoảng thời gian khác
Thiết lập điều kiện dừng lỗ, có thể dừng lỗ kịp thời, khóa một phần lợi nhuận, giảm rủi ro mất mát
Nhiều tham số có thể tùy chỉnh, điều chỉnh theo thị trường và phong cách cá nhân
Dễ mở rộng, có thể thiết kế các chiến lược phức tạp hơn dựa trên khuôn khổ này kết hợp với các chỉ số khác
Chiến lược này cũng có một số rủi ro, chủ yếu từ những khía cạnh sau:
Đường trung bình di chuyển tự nó có độ trễ cao, có thể bỏ lỡ các điểm đảo ngược giá trong thời gian ngắn
Chỉ dựa vào chỉ số đơn giản, dễ bị thất bại trong một môi trường thị trường cụ thể (trend swing, ranging, v.v.)
Cài đặt sai vị trí dừng lỗ có thể gây ra tổn thất không cần thiết
Cài đặt tham số không đúng (chu kỳ trung bình di chuyển, chu kỳ giữ vị trí, v.v.) cũng ảnh hưởng đến hiệu suất của chiến lược
Giải pháp tương ứng:
Tăng độ nhạy cảm với những thay đổi ngắn hạn, kết hợp với các chỉ số tiên tiến khác
Tăng các điều kiện lọc để tránh ảnh hưởng của tín hiệu nghỉ ngơi trong thị trường chấn động và phân đoạn
Tối ưu hóa logic dừng lỗ, điều chỉnh phạm vi dừng lỗ theo biến động của thị trường
Tối ưu hóa tham số đa kết hợp, tìm thiết lập tham số tối ưu
Chiến lược này cũng có rất nhiều khả năng tối ưu hóa, chủ yếu từ các khía cạnh sau:
Thêm các điều kiện lọc khác để tránh ảnh hưởng của tín hiệu nghỉ trong thị trường chấn động và phân đoạn
Kết hợp các chiến lược số lượng động để nhận diện các tín hiệu đột phá mạnh mẽ hơn
Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, tìm kiếm các tham số kết hợp tốt nhất
Tự động tối ưu hóa mức dừng lỗ theo biến động thị trường
Cố gắng tự động tối ưu hóa toàn bộ chiến lược dựa trên kỹ thuật học máy
Cố gắng kết hợp với các chiến lược khác để thiết kế hệ thống đa chiến lược phức tạp hơn
Chiến lược này nói chung là đơn giản và thực tế, phù hợp cho người mới bắt đầu. Nó thể hiện mô hình điển hình của chiến lược giao dịch chéo trung bình di chuyển, bằng cách thiết lập dừng lỗ để kiểm soát rủi ro. Tuy nhiên, chiến lược này có thể được tối ưu hóa hơn nữa, làm cho hiệu quả hoạt động của nó tốt hơn, thích nghi với nhiều môi trường thị trường hơn.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("34 89 SMA Crossover Strategy", overlay=true)
// Define the length for the SMAs
short_length = input(34, title="Short SMA Length")
long_length = input(89, title="Long SMA Length")
exit_candles = input(3, title="Exit after how many candles?")
exit_at_open = input(true, title="Exit at Open?")
// Define morning session
morning_session = input("0800-1000", "Morning Session")
// Calculate SMAs
short_sma = ta.sma(close, short_length)
long_sma = ta.sma(close, long_length)
// Function to check if current time is within specified session
in_session(session) =>
session_start = na(time(timeframe.period, "0800-1000")) ? na : true
session_start
// Condition for buy signal (short SMA crosses over long SMA) within specified trading hours
buy_signal = ta.crossover(short_sma, long_sma)
// Condition for sell signal (short SMA crosses under long SMA) within specified trading hours
sell_signal = ta.crossunder(short_sma, long_sma)
// Function to exit the trade after specified number of candles
var int trade_entry_bar = na
var int trade_exit_bar = na
if (buy_signal or sell_signal)
trade_entry_bar := bar_index
if (not na(trade_entry_bar))
trade_exit_bar := trade_entry_bar + exit_candles
// Exit condition
exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar))
// Execute trades
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.entry("Sell", strategy.short)
if (exit_condition)
strategy.close("Buy")
strategy.close("Sell")
// Plot SMAs on the chart
plot(short_sma, color=color.blue, linewidth=1)
plot(long_sma, color=color.red, linewidth=1)