Chiến lược giao dịch chéo MA dựa trên chéo trung bình động ngắn hạn và dài hạn

Tác giả:ChaoZhang, Ngày: 2024-02-22 15:36:49
Tags:

img

Tổng quan

Chiến lược này là một chiến lược giao dịch chéo trung bình di chuyển đơn giản dựa trên chéo trung bình di chuyển ngắn hạn và dài hạn. Nó sử dụng trung bình di chuyển 34 giai đoạn và 89 giai đoạn để quan sát chéo của chúng trong phiên buổi sáng như tín hiệu mua và bán. Khi trung bình di chuyển ngắn hạn vượt qua trên trung bình di chuyển dài hạn từ dưới, một tín hiệu mua được tạo ra. Khi nó vượt qua dưới từ trên, một tín hiệu bán được tạo ra.

Chiến lược logic

Định nghĩa cơ bản của chiến lược này dựa trên sự giao thoa giữa trung bình di chuyển ngắn hạn và dài hạn như là tín hiệu giao dịch. Cụ thể, chiến lược xác định trung bình di chuyển đơn giản ngắn hạn và dài hạn (SMA) 34 giai đoạn và 89 giai đoạn. Nó chỉ quan sát sự giao thoa giữa hai SMA này trong phiên buổi sáng (08:00 - 10:00). Khi SMA ngắn hạn vượt qua trên SMA dài hạn từ dưới, thị trường được coi là có xu hướng tăng, do đó tạo ra tín hiệu mua. Khi SMA ngắn hạn vượt qua dưới SMA dài hạn từ trên, thị trường được coi là có xu hướng giảm, do đó tạo ra tín hiệu bán.

Sau khi nhận được tín hiệu mua hoặc bán, chiến lược sẽ nhập vào một vị trí và đặt điều kiện để thoát khỏi vị trí, đó là kiếm lợi nhuận sau khi nắm giữ một số lượng nến được chỉ định (mục tiêu là 3 nến) kể từ khi nhập vào. Điều này cho phép khóa lợi nhuận một phần và tránh tổn thất thêm.

Cần lưu ý rằng chiến lược chỉ xác định các tín hiệu chéo trong phiên buổi sáng. Điều này là do khung thời gian này có khối lượng giao dịch cao hơn và các tín hiệu thay đổi xu hướng đáng tin cậy hơn. Các khung thời gian khác có biến động giá lớn hơn và dễ tạo ra tín hiệu sai hơn.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Sử dụng các quy tắc chéo trung bình động đơn giản và phổ biến, dễ hiểu, phù hợp cho người mới bắt đầu

  2. Chỉ xác định tín hiệu trong buổi sáng khi tín hiệu chất lượng dồi dào, lọc ra các tín hiệu sai trong các khung thời gian khác

  3. Có các điều kiện dừng lỗ cho phép dừng lỗ kịp thời, khóa lợi nhuận một phần và giảm rủi ro mất mát

  4. Nhiều thông số tùy chỉnh có thể được điều chỉnh dựa trên điều kiện thị trường và phong cách giao dịch cá nhân

  5. Dễ mở rộng để kết hợp với các chỉ số khác để thiết kế các chiến lược phức tạp hơn

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro, chủ yếu từ các khía cạnh sau:

  1. Đường trung bình di chuyển có các thuộc tính chậm hơn, có thể bỏ lỡ các điểm đảo ngược giá ngắn hạn

  2. Chỉ dựa trên các chỉ số đơn giản, dễ bị thất bại trong một số môi trường thị trường nhất định (sốc xu hướng, giới hạn phạm vi, v.v.)

  3. Vị trí dừng lỗ không chính xác có thể gây ra tổn thất không cần thiết

  4. Các thiết lập tham số không chính xác (thời gian trung bình động, thời gian giữ, v.v.) cũng có thể ảnh hưởng đến hiệu suất chiến lược

Các giải pháp tương ứng:

  1. Kết hợp các chỉ số hàng đầu khác để cải thiện độ nhạy cảm với những thay đổi ngắn hạn

  2. Thêm các điều kiện lọc để tránh bị ảnh hưởng bởi các tín hiệu sai trong các cú sốc và thị trường giới hạn phạm vi

  3. Tối ưu hóa logic dừng lỗ và điều chỉnh động phạm vi dừng lỗ dựa trên biến động thị trường

  4. Tối ưu hóa đa tham số để tìm các thiết lập tham số tối ưu

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

Chiến lược cũng có tiềm năng tối ưu hóa lớn, chủ yếu là từ các khía cạnh sau:

  1. Thêm các điều kiện lọc khác để tránh tín hiệu sai trong các cú sốc và thị trường giới hạn phạm vi

  2. Kết hợp các chỉ số động lực để xác định các tín hiệu đột phá mạnh hơn

  3. Tối ưu hóa các thông số thời gian trung bình động để tìm kết hợp thông số tốt nhất

  4. Tự động tối ưu hóa phạm vi dừng lỗ dựa trên biến động thị trường

  5. Cố gắng tự động tối ưu hóa toàn bộ chiến lược dựa trên các kỹ thuật học máy

  6. Cố gắng kết hợp với các chiến lược khác để thiết kế các hệ thống đa chiến lược phức tạp hơn

Kết luận

Nói chung, chiến lược này tương đối đơn giản và thực tế, phù hợp cho người mới bắt đầu học hỏi. Nó thể hiện mô hình điển hình của các chiến lược chéo trung bình động và sử dụng dừng để kiểm soát rủi ro. Tuy nhiên, có thể tối ưu hóa thêm để cải thiện hiệu suất cho nhiều điều kiện thị trường hơn. Các nhà đầu tư có thể tận dụng khuôn khổ cơ bản này để thiết kế các chiến lược giao dịch định lượng tiên tiến 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)


Thêm nữa