
Chiến lược Pine Script thực hiện một chiến lược chi phí trung bình hàng ngày trên nền tảng TradingView, kết hợp với các tín hiệu cảm ứng của chỉ số EMA để xác định điểm vào. Chiến lược này tuân theo quy tắc đầu tư chi phí trung bình, mua với số tiền cố định mỗi ngày để phân tán rủi ro. Đồng thời, thông qua tín hiệu cảm ứng của EMA để hướng dẫn thời điểm vào cụ thể.
Chiến lược này có một số đặc điểm:
Luật đầu tư chi phí trung bình hàng ngày
Chỉ số EMA xác định điểm nhập cảnh
Cơ chế dừng lỗ động
Giới hạn vị trí tối đa
Cụ thể, chiến lược này đặt một số tiền cố định mỗi ngày, số lượng cổ phiếu có thể mua được được tính theo giá đóng cửa trong ngày. Dựa trên đó, nếu giá đóng cửa vào ngày hôm đó vượt qua bất kỳ EMA nào trong các ngày 5, 10 và 20, nó sẽ kích hoạt tín hiệu mua. Một khi vị trí tích lũy đạt đến giới hạn tối đa 300, sẽ không có hoạt động mua mới. Ngoài ra, nếu giá đóng cửa giảm xuống SMA ngày 20 hoặc đến ngày rút lui được thiết lập trước, thì sẽ thanh toán lỗ hổng. Chiến lược này cũng vẽ đường EMA của các chu kỳ khác nhau trên biểu đồ giá, để phân tích trực quan.
Chiến lược này có một số lợi thế:
Phân phối đầu tư, giảm rủi ro đầu tư đơn lẻ
EMA kết hợp, tránh điều chỉnh ngắn hạn
Động lực dừng lỗ, kiểm soát lỗ
Giới hạn vị trí tối đa, kiểm soát rủi ro
EMA trực quan, dễ dàng đánh giá
Độ cao tùy chỉnh
Chiến lược này cũng có một số rủi ro cần lưu ý:
Rủi ro hệ thống khó tránh được
Rủi ro của khoản đầu tư cố định
EMA không thể phản ứng với tình huống cực đoan
Giới hạn vị trí cũng hạn chế khả năng kiếm tiền
Thiết lập điểm dừng đòi hỏi kinh nghiệm và kỹ năng
Chiến lược này có thể được tối ưu hóa thêm:
Tăng năng động điều chỉnh số tiền đầu tư hàng ngày
Kết hợp nhiều tiêu chí để đánh giá
Sử dụng chỉ số trung bình di chuyển
Động lực điều chỉnh vị trí tối đa
Sử dụng dừng dần dần
Nhìn chung, chiến lược chi phí trung bình hàng ngày kết hợp với tín hiệu cảm ứng EMA, thực hiện ý tưởng đầu tư theo đợt dài hạn. So với một lần mở một vị trí lớn, có thể phân tán rủi ro, tránh ăn mừng ở điểm cao. Tham gia của EMA cũng tránh được một phần rủi ro do điều chỉnh ngắn hạn, áp dụng các biện pháp ngăn chặn để kiểm soát tổn thất tối đa. Đồng thời, vẫn cần chú ý đến rủi ro của thiên bạch đen và sự tiếc nuối của số tiền đầu tư cố định không thể nắm bắt đầy đủ cơ hội.
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000)
// Customizable Parameters
daily_investment = input(50000, title="Daily Investment")
start_year = input(2022, title="Start Year")
start_month = input(1, title="Start Month")
start_day = input(1, title="Start Day")
end_year = input(2023, title="End Year")
end_month = input(12, title="End Month")
end_day = input(1, title="End Day")
trade_count_limit = input(10000, title="Pyramiding Limit")
enable_sell = input(true, title="Enable Sell")
start_date = timestamp(start_year, start_month, start_day)
var int trade_count = 0
// Calculate the number of shares to buy based on the current closing price
shares_to_buy = daily_investment / close
// Check if a new day has started and after the start date
isNewDay = dayofmonth != dayofmonth[1] and time >= start_date
// Buy conditions based on EMA crossovers
ema5_cross_above = crossover(close, ema(close, 5))
ema10_cross_above = crossover(close, ema(close, 10))
ema20_cross_above = crossover(close, ema(close, 20))
ema50_cross_above = crossover(close, ema(close, 50))
ema100_cross_above = crossover(close, ema(close, 100))
ema200_cross_above = crossover(close, ema(close, 200))
if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit
strategy.entry("Buy", strategy.long, qty=shares_to_buy)
trade_count := trade_count + 1
// Dynamic sell conditions (optional)
sell_condition = true
if enable_sell and sell_condition
strategy.close_all()
// EMA Ribbon for visualization
plot(ema(close, 5), color=color.red, title="EMA 5")
plot(ema(close, 10), color=color.orange, title="EMA 10")
plot(ema(close, 20), color=color.yellow, title="EMA 20")
plot(ema(close, 50), color=color.green, title="EMA 50")
plot(ema(close, 100), color=color.blue, title="EMA 100")
plot(ema(close, 200), color=color.purple, title="EMA 200")