Kết thúc tháng đột phá trên chiến lược trung bình di chuyển 200 ngày

Tác giả:ChaoZhang, Ngày: 2023-12-08 16:02:08
Tags:

img

Tổng quan

Chiến lược này dựa trên sự phá vỡ giá của đường trung bình động 200 ngày vào cuối tháng để nắm bắt hướng xu hướng của giá cổ phiếu. Một vị trí dài sẽ được thiết lập khi giá phá vỡ đường MA 200 ngày, nếu không vị trí sẽ được xóa.

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

  1. Sử dụng đường trung bình di chuyển đơn giản 200 ngày dma200 làm chỉ số để đánh giá xu hướng giá
  2. Vào ngày giao dịch cuối cùng của mỗi tháng, đánh giá xem giá đóng cửa có cao hơn dma200 không
  3. Nếu giá đóng phá vỡ mức MA 200 ngày, thiết lập một vị trí dài đầy đủ vào đầu ngày giao dịch tiếp theo
  4. Nếu giá đóng phá vỡ dưới mức MA 200 ngày, xóa tất cả các vị trí vào ngày giao dịch tiếp theo
  5. Điều này có thể đạt được hiệu ứng theo xu hướng, thiết lập các vị trí khi giá cổ phiếu đi lên và tránh xu hướng giảm

Phân tích lợi thế

  1. Ưu điểm của chiến lược là nó đơn giản và hiệu quả, dễ hiểu và thực hiện
  2. Lấy vị trí vào cuối tháng có thể giảm tần suất giao dịch và giảm thiểu chi phí giao dịch và tác động trượt
  3. MA 200 ngày là một chỉ số đánh giá xu hướng trung và dài hạn được sử dụng rất phổ biến, hiệu quả đối với hầu hết các cổ phiếu
  4. Chiến lược có mức rút tương đối nhỏ và giảm tối đa, với rủi ro có thể kiểm soát được

Phân tích rủi ro

  1. MA 200 ngày có thể không đủ nhạy cảm để một số cổ phiếu nắm bắt sự đảo ngược giá trong thời gian
  2. Chỉ có 1 điểm giao dịch mỗi tháng để thực hiện các vị trí, có thể bỏ lỡ các cơ hội tăng/giảm
  3. Chiến lược có thể không đánh giá chính xác khi xu hướng thị trường tổng thể không chắc chắn
  4. Các chỉ số khác nên được kết hợp để giảm các rủi ro này

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

  1. Xem xét tăng điểm giao dịch vào đầu hoặc giữa tháng để cải thiện tần suất chiến lược
  2. Thêm các chỉ số như Bollinger Bands để đánh giá biến động giá và tránh giao dịch sai
  3. Đánh giá hiệu ứng phù hợp của các tham số MA khác nhau đối với các cổ phiếu khác nhau để tìm kết hợp các tham số tối ưu
  4. Thiết lập các cơ chế định kích thước vị trí năng động để ngăn chặn lỗ một cách tích cực khi rút tiền trở nên quá cao

Tóm lại

Chiến lược tương đối đơn giản và thực tế nói chung, có hiệu quả nắm bắt xu hướng giá cổ phiếu trung và dài hạn thông qua việc phá vỡ cuối tháng của MA 200 ngày, với mức rút tương đối nhỏ và rủi ro. Bằng cách kết hợp nhiều chỉ số và tối ưu hóa năng động hơn, sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")

Thêm nữa