Chiến lược xu hướng chéo trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-12 10:56:57
Tags:

img

Tổng quan

Chiến lược giao dịch này dựa trên một hệ thống chéo trung bình di chuyển và trung bình di chuyển đơn giản để theo dõi xu hướng. Nó sử dụng chéo trung bình di chuyển nhanh và chậm với các khoảng thời gian khác nhau làm tín hiệu để đi dài hoặc ngắn. Khi MA nhanh vượt qua trên MA chậm từ dưới, đi dài; khi MA nhanh vượt qua dưới MA chậm từ trên, đi ngắn. Chiến lược này hoạt động tốt cho các sản phẩm có xu hướng rõ ràng.

Chiến lược logic

Chiến lược này sử dụng trung bình di chuyển đơn giản nhanh như 60 ngày và chậm như 200 ngày. MA nhanh phản ứng nhanh hơn với sự thay đổi giá, phản ánh xu hướng ngắn hạn; trong khi MA chậm phản ứng chậm hơn và hiển thị xu hướng trung hạn đến dài hạn.

Khi MA ngắn vượt qua trên MA dài từ dưới, nó báo hiệu rằng giá ngắn hạn bắt đầu tăng và đi vào thị trường tăng, vì vậy đi dài.

Chiến lược này sử dụng MA crossover để xác định hướng xu hướng. Khi giá ngắn tăng nhanh hơn, MA ngắn sẽ đẩy MA dài lên và vượt qua nó từ dưới. Điều này có nghĩa là xu hướng tăng đang nổi lên và nên nắm giữ vị trí dài. Ngược lại, khi giá ngắn giảm nhanh hơn, MA ngắn sẽ kéo MA dài xuống và vượt qua nó từ trên, ngụ ý xu hướng giảm và nên nắm giữ vị trí ngắn.

Bằng cách nắm bắt các điểm uốn của xu hướng giá bằng cách sử dụng chéo MA nhanh và chậm, chiến lược có thể điều chỉnh các vị trí dài / ngắn phù hợp.

Phân tích lợi thế

  • Sử dụng MA crossover để xác định xu hướng chính, tránh gây hiểu nhầm bởi tiếng ồn thị trường ngắn hạn.
  • Xem xét cả khung thời gian ngắn hạn và trung bình đến dài hạn, ổn định và đáng tin cậy hơn.
  • Thực hiện theo dõi xu hướng đơn giản và hiệu quả, ví dụ: đi dài trong xu hướng tăng và ngắn trong xu hướng giảm.
  • Các đường trung bình động có thể áp dụng rộng rãi, dễ hiểu và các thông số linh hoạt.
  • Các thông số quản lý rủi ro có thể điều chỉnh cho các rủi ro được kiểm soát.

Phân tích rủi ro

  • Chiến lược dựa trên xu hướng giá rõ ràng, thất bại có thể xảy ra trong những biến động thị trường mạnh mẽ.
  • Whipsaws có thể tạo ra nhiều tín hiệu sai trong các thị trường dao động, gây ra việc mở và đóng các vị trí thường xuyên.
  • Các đường trung bình động có sự chậm trễ, có khả năng thiếu các điểm chuyển đổi giá.
  • Cài đặt tham số không chính xác như dừng lỗ quá chặt chẽ hoặc lấy lợi nhuận quá rộng có thể dẫn đến việc thoát sớm hoặc mở lại các vị trí có lợi nhuận.
  • Các thông số hợp lý cần tối ưu hóa theo đặc điểm của các sản phẩm khác nhau.

Các phương pháp như điều chỉnh thời gian MA dựa trên tần suất biến động của sản phẩm, cải thiện dừng lỗ / lấy lợi nhuận bằng cách sử dụng các chỉ số phức tạp hơn, thêm bộ lọc khối lượng vv có thể tối ưu hóa chiến lược này và cải thiện sự ổn định.

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

Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Tối ưu hóa thời gian MA nhanh và chậm để thích nghi với các sản phẩm có tần số biến động khác nhau.

  2. Cải thiện điều kiện nhập bằng cách thêm nhiều bộ lọc như âm lượng tăng để giảm tín hiệu sai.

  3. Cải thiện stop loss / take profit như trailing stop hoặc dynamic take profit để cải thiện lợi nhuận.

  4. Xem xét chi phí giao dịch như hoa hồng và thêm các mô-đun đánh giá chi phí để kiểm tra hậu quả thực tế hơn.

  5. Thiết kế Parameter Universe để tìm kết hợp tham số tối ưu phù hợp với các sản phẩm khác nhau.

  6. Thêm nhận dạng mô hình địa phương để giúp xác định các điểm chuyển hướng xu hướng và cải thiện thời gian vào và ra.

Thông qua tối ưu hóa chiến lược có hệ thống, lợi nhuận, sự ổn định có thể được cải thiện đáng kể và giảm giảm.

Tóm lại

Chiến lược giao dịch xác định sự thay đổi xu hướng bằng cách sử dụng MA crossover, một chiến lược theo xu hướng điển hình. Nó sử dụng sự chuyển đổi giữa MA nhanh và chậm để tạo ra tín hiệu dài / ngắn, xác định hướng xu hướng thông qua sự kết hợp của cả hai. Chiến lược này liên tục và đáng tin cậy nắm bắt xu hướng và dễ hiểu và thực hiện. Khi được tối ưu hóa, nó có thể thích nghi với hầu hết các sản phẩm và tạo thành một chiến lược giao dịch định lượng cơ bản.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 10m
basePeriod: 1m
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/
// © thebearfib
//
//@version=5
//

strategy("x-over 150d_200d_sma - Free", overlay = true)

repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc   = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)

fast_length         = input(title="Fast Length", defval=60)
slow_length         = input(title="Slow Length", defval=275)

_fast               = ta.sma(srcmc,  fast_length)
_slow               = ta.sma(srcmc,  slow_length)

plot(_fast, 
  title="Fast SMA", 
  color=color.red,
  linewidth = 1) 

plot(_slow, 
  title="Slow SMA", 
  color=color.white,
  linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating  —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc      = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc        = input.float(title="Long Stop (%)",        minval=0.01, step=1.0, defval=13)  * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice  = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc *  (1 + longProfitPerc)
longStopPrice = strategy.opentrades  > 0 ? strategy.position_avg_price * (1 - longStopPerc)   : srcmc *  (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition   = srcmc > _slow and  ta.crossover(_fast, _slow)
closeCondition  =  ta.crossover(srcmc, _slow)  

if (longCondition)
    strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")

if (closeCondition)
    strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")

if (strategy.position_size > 0)
    strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// —————————————————————————————————  Never the End Just the beginning    —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//

Thêm nữa