Stan The Man - Một chiến lược giao dịch chứng khoán tiên tiến dựa trên trung bình di chuyển kép và biến động

Tác giả:ChaoZhang, Ngày: 2023-12-20 14:54:41
Tags:

img

Tổng quan

Chiến lược này sử dụng hệ thống trung bình động kép và chỉ số sức mạnh tương đối, kết hợp với sự biến động lịch sử của cổ phiếu, để tự động hóa tín hiệu mua và bán cho giao dịch chứng khoán. Lợi thế là nó kết hợp cả kỹ thuật dài hạn và ngắn hạn để kiểm soát rủi ro hiệu quả. Tuy nhiên, vẫn còn chỗ để cải thiện, ví dụ như cơ chế dừng lỗ có thể được thêm vào.

Chiến lược logic

Chiến lược này sử dụng đường trung bình động 150 tuần và đường trung bình nhanh 50 ngày để tạo thành một hệ thống MA kép. Nó cũng sử dụng đường MA cực nhanh 20 ngày. Khi giá vượt trên đường MA 150 tuần, nó báo hiệu sự khởi đầu xu hướng tăng. Khi giá vượt dưới đường MA 50 ngày, nó báo hiệu xu hướng giảm. Điều này cho phép chúng ta mua trên đường đi lên và bán trên đường đi xuống.

Ngoài ra, chiến lược này cũng sử dụng giá cao nhất hàng năm dựa trên chỉ số biến động và chỉ số sức mạnh tương đối để xác định các điểm vào cụ thể. Nó chỉ gửi tín hiệu mua khi giá đóng trên mức giá tối đa được tính từ biến động và chỉ số RSI dương tính.

Ưu điểm

  1. Hệ thống MA kép có thể xác định hiệu quả các thay đổi xu hướng để theo đuổi tăng và dừng xuống.

  2. Chỉ số biến động và chỉ số RSI đảm bảo chúng ta không bị đánh bại trong thị trường bên cạnh.

  3. MA nhanh 20 ngày cho phép dừng lỗ nhanh hơn.

Rủi ro

  1. Có một số chậm trễ, không thể nhận ra dừng lỗ nhanh chóng.

  2. Không đặt stop loss, có thể dẫn đến tổn thất lớn.

  3. Thiếu tối ưu hóa tham số, các tham số được đặt khá tùy ý.

Để giảm thiểu rủi ro, stop loss có thể được thêm vào hoặc sử dụng số nhân ATR như tỷ lệ phần trăm stop loss.

Cơ hội gia tăng

  1. Thêm cơ chế dừng lỗ
  2. Tìm các thông số tối ưu thông qua tối ưu hóa
  3. Xem xét thêm các bộ lọc khác như âm lượng
  4. Có thể xây dựng nó thành một mô hình đa yếu tố với nhiều yếu tố

Tóm lại

Tóm lại, đây là một chiến lược đầu tư cổ phiếu khá bảo thủ. Sử dụng hệ thống MA kép để đo lường xu hướng tổng thể, kết hợp với các biện pháp biến động và sức mạnh để vào thời gian, nó có thể lọc hiệu quả các sự đột phá sai. MA nhanh cũng cho phép thoát nhanh. Tuy nhiên, chiến lược có thể được cải thiện hơn nữa bằng cách thêm dừng lỗ, tối ưu hóa tham số vv. Nhìn chung nó phù hợp với các nhà đầu tư cổ phiếu dài hạn.


/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Relative Strength
strategy("Stan my man", overlay=true)
comparativeTickerId = input("BTC_USDT:swap",  title="Comparative Symbol")
l = input(50, type=input.integer, minval=1, title="Period")
baseSymbol = security(syminfo.tickerid, timeframe.period, close)
comparativeSymbol = security(comparativeTickerId, timeframe.period, close)
hline(0, color=color.black, linestyle=hline.style_dotted)
res = baseSymbol / baseSymbol[l] /(comparativeSymbol / comparativeSymbol[l]) - 1
plot(res, title="RS", color=#1155CC)

//volume ma
vol1 = sma(volume,20)
// 30 week ma
ema1 = ema(close, 150)
//consolidation
h1 = highest(high[1],365)

fastPeriod = input(title="Fast MA", type=input.integer, defval=50)
slowPeriod = input(title="Slow MA", type=input.integer, defval=150)
fastestperiod = input(title="Fastest MA", type=input.integer, defval=20)

fastEMA = ema(close, fastPeriod)
slowEMA = ema(close, slowPeriod)
fastestEMA = ema(close, fastestperiod)

monitorStrategy = close < close[20]


// trade conditions
buytradecondition1 = close >ema1 and res>0 and volume> 1.5*vol1 and close > h1
buytradecondition2 = close > fastEMA  and volume> 1.5* vol1 
selltradecondition1  = close< 0.95 * fastEMA 
selltradecondition2  = close< 0.90 * open

if (buytradecondition1)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over Slow moving average",alert.freq_all)
    
if (buytradecondition2)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over fast moving average",alert.freq_all)
    
if (selltradecondition1)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down fast moving average",alert.freq_all)
    
if (selltradecondition2)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down 10% below open price  ",alert.freq_all)

//alertcondition(buytradecondition1,title ="BuySignal", message ="Price Crossed Slow Moving EMA ")

plot(fastEMA, color=color.navy)
plot(slowEMA, color=color.fuchsia)
plot(fastestEMA, color=color.green)

Thêm nữa