Chiến lược giao dịch định lượng chéo trung bình động theo hàm số

Tác giả:ChaoZhang, Ngày: 2024-03-29 10:59:57
Tags:

img

Tổng quan

Chiến lược này sử dụng sự chéo chéo của hai đường trung bình động theo cấp số nhân (EMA) làm tín hiệu mua và bán. Khi EMA ngắn hạn vượt qua EMA dài hạn từ dưới, nó tạo ra tín hiệu mua; ngược lại, khi EMA ngắn hạn vượt qua dưới EMA dài hạn từ trên, nó tạo ra tín hiệu bán. Ngoài ra, chiến lược xác định xem điểm chéo là giá cao nhất hoặc thấp nhất trong 10 kỳ giao dịch gần đây để xác nhận sức mạnh của xu hướng. Nếu điểm chéo là giá cao nhất, nền sẽ màu xanh lá cây; nếu đó là giá thấp nhất, nó sẽ màu đỏ. Hơn nữa, chiến lược hiển thị giá của điểm chéo trên biểu đồ.

Nguyên tắc chiến lược

  1. Tính toán hai EMA với các khoảng thời gian khác nhau, với khoảng thời gian mặc định là 5 và 10.
  2. Xác định liệu hai EMA có giao nhau không. Nếu EMA ngắn hạn vượt qua trên EMA dài hạn từ dưới, nó tạo ra tín hiệu mua; nếu EMA ngắn hạn vượt qua dưới EMA dài hạn từ trên, nó tạo ra tín hiệu bán.
  3. Khi một tín hiệu chéo xảy ra, xác định xem điểm chéo hiện tại là giá cao nhất hoặc thấp nhất trong 10 giai đoạn giao dịch gần đây nhất. Nếu đó là giá cao nhất, xu hướng tăng được coi là mạnh; nếu đó là giá thấp nhất, xu hướng giảm được coi là mạnh.
  4. Nếu một tín hiệu mua được tạo ra và không có vị trí hiện tại, mở một vị trí dài; nếu một tín hiệu bán được tạo ra và không có vị trí hiện tại, mở một vị trí ngắn.
  5. Nếu giữ một vị trí dài và EMA ngắn hạn vượt qua dưới EMA dài hạn từ trên, đóng vị trí dài; nếu giữ một vị trí ngắn hạn và EMA ngắn hạn vượt qua EMA dài hạn từ dưới, đóng vị trí ngắn.

Ưu điểm chiến lược

  1. Các đường trung bình động theo hàm số phản ứng nhanh hơn với sự thay đổi giá so với các đường trung bình động đơn giản, do đó tạo ra các tín hiệu giao dịch kịp thời hơn.
  2. Bằng cách xác định xem điểm chéo là giá cao nhất hoặc thấp nhất gần đây, nó có thể lọc các cơ hội giao dịch với sức mạnh xu hướng lớn hơn và cải thiện lợi nhuận chiến lược.
  3. Việc đánh dấu giá điểm chéo trên biểu đồ cung cấp cho các nhà giao dịch các tham chiếu giao dịch trực quan hơn.
  4. Logic mã là rõ ràng và dễ hiểu và thực hiện.

Rủi ro chiến lược

  1. Các tín hiệu được tạo ra bởi các giao dịch chéo EMA có thể bị trì hoãn, dẫn đến việc bỏ lỡ các cơ hội giao dịch tốt nhất.
  2. Trong một thị trường biến động, sự giao thoa EMA có thể xảy ra thường xuyên, dẫn đến tần suất giao dịch quá cao và chi phí giao dịch tăng lên.
  3. Chiến lược này thiếu các biện pháp dừng lỗ, vì vậy nếu phán quyết sai, nó có thể phải đối mặt với rủi ro rút vốn lớn hơn.

Hướng dẫn tối ưu hóa chiến lược

  1. Đưa ra nhiều chỉ số kỹ thuật hơn, chẳng hạn như RSI, MACD, v.v., để hỗ trợ đánh giá sức mạnh và hướng xu hướng và cải thiện độ chính xác tín hiệu.
  2. Đặt mức dừng lỗ và lấy lợi nhuận hợp lý để kiểm soát rủi ro giao dịch duy nhất.
  3. Tối ưu hóa các thông số giao dịch, chẳng hạn như thời gian EMA và thời gian xác nhận chéo, để cải thiện khả năng thích nghi chiến lược.
  4. Kết hợp các chỉ số tâm lý thị trường, chẳng hạn như VIX, để lọc các tín hiệu giao dịch và giảm các tín hiệu sai.
  5. Xem xét thêm các mô-đun quản lý vị trí và quản lý vốn để điều chỉnh động số tiền cho mỗi giao dịch và cải thiện hiệu quả sử dụng vốn.

Tóm lại

Chiến lược này sử dụng tỷ lệ chéo trung bình động theo cấp số nhân như là logic cốt lõi của nó, đồng thời cũng xem xét vị trí tương đối của giá điểm chéo trong giai đoạn gần đây để xác định sức mạnh xu hướng. Nhìn chung, logic chiến lược rõ ràng và lợi thế là hiển nhiên, nhưng nó cũng có một số hạn chế và rủi ro nhất định. Bằng cách giới thiệu nhiều chỉ số phán đoán phụ, thiết lập các biện pháp kiểm soát rủi ro hợp lý và tối ưu hóa các thông số chính, sự ổn định và lợi nhuận của chiến lược này có thể được cải thiện hơn nữa.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading
// @version=5
strategy("ema giao nhau", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Get user input
emaLength1 = input.int(title="EMA #1 Length", defval=5)
emaLength2 = input.int(title="EMA #2 Length", defval=10)

// Get MAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Draw MAs
plot(ema1, color=color.blue, title="EMA 1")
plot(ema2, color=color.red, title="EMA 2")

// Detect crossovers
bool crossOver = ta.crossover(ema1, ema2)
bool crossUnder = ta.crossunder(ema1, ema2)
bool cross = crossOver or crossUnder
//float crossPrice = ta.valuewhen(cross, close, 0)
float crossPrice = cross ? close : na

// Check if the crossover price is the highest price over the past 10 bars
bool highestPrice = crossOver
for i = 1 to 10
    if crossPrice <= close[i]
        highestPrice := false
        break

// Check if the crossover price is the lowest price over the past 10 bars
bool lowestPrice = crossUnder
for i = 1 to 10
    if crossPrice >= close[i]
        lowestPrice := false
        break

// Flag the bar if it is a high/low close
bgcolor(highestPrice ? color.new(color.green, 50) : na)
bgcolor(lowestPrice ? color.new(color.red, 50) : na)

// Display crossover price
if cross
    highestEmaPrice = ema1 > ema2 ? ema1 : ema2
    label myLabel = label.new(bar_index, highestEmaPrice, "CrossPrice=" + str.tostring(crossPrice), color=color.white)
    if highestPrice and strategy.position_size == 0
        strategy.entry(id="Buy", direction=strategy.long)
    if lowestPrice and strategy.position_size == 0
        strategy.entry(id="Sell", direction=strategy.short)

// Exit trades when short-term EMA is breached
if strategy.position_size > 0 and crossUnder
    strategy.close("Buy")
if strategy.position_size < 0 and crossOver
    strategy.close("Sell")

Thêm nữa