
GridDCA là một chiến lược giao dịch tự động, sử dụng phương pháp chi phí đô la trung bình DCA trên nhiều lưới giá để giảm rủi ro đầu tư và tăng sự ổn định của tài sản. Chiến lược này được phát triển dựa trên nền tảng Pin Script trên TradingView, có thể thiết lập các tham số linh hoạt như số lưới, khoảng cách lưới, tỷ lệ dừng lỗ và mục tiêu lợi nhuận và hỗ trợ cả giá thị trường và giá giới hạn.
DCA là một chiến lược đầu tư dài hạn, bằng cách đầu tư một khoản tiền cố định trong một khoảng thời gian cố định, không xem xét giá hiện tại của tài sản, để giảm tác động của biến động thị trường đối với đầu tư. Trên cơ sở này, chiến lược GridDCA đã giới thiệu khái niệm về lưới giá, tạo ra nhiều lưới với giá khác nhau tùy theo số lưới và khoảng cách lưới do người dùng thiết lập. Mỗi lưới có số lượng mua và giá tương ứng.
Chiến lược chi phí trung bình đô la lưới ((GridDCA) là một chiến lược giao dịch tự động dựa trên luật chi phí trung bình đô la, giảm hiệu quả ảnh hưởng của biến động thị trường đối với đầu tư bằng cách đầu tư trên nhiều lưới giá, tăng sự ổn định của tích lũy tài sản. Chiến lược này có những lợi thế như tự động hóa giao dịch, giảm rủi ro, linh hoạt, đa dạng hóa đơn đặt hàng mạnh mẽ, nhưng đồng thời cũng đối mặt với những thách thức như rủi ro xu hướng thị trường, rủi ro đặt tham số và rủi ro tính thanh khoản.
/*backtest
start: 2023-03-22 00:00:00
end: 2023-08-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DCA Trading Strategy", overlay=true)
// Define input options
numGrids = input.int(5, title="Number of Grids")
gridDistance = input.float(0.5, title="Grid Distance")
stopLossPct = input.float(1, title="Stop Loss Percentage")
takeProfitPct = input.float(1, title="Take Profit Percentage")
useMarketOrder = input.bool(false, title="Use Market Order")
// Define DCA function
dca(quantity, price, stopLoss, takeProfit) =>
if useMarketOrder
strategy.entry("DCA Buy", strategy.short, qty=quantity)
else
strategy.entry("DCA Buy", strategy.short, qty=quantity, limit=price)
strategy.exit("Stop Loss/ Take Profit", "DCA Buy", stop=stopLoss, limit=takeProfit)
// Calculate grid levels
gridLevels = math.floor(strategy.position_size / (numGrids + 1) + 0.5)
// Calculate buy quantity
buyQuantity = strategy.position_size / numGrids
// Loop through each grid level
for i = 1 to numGrids
priceLevel = strategy.position_avg_price * (1 - gridDistance * i)
stopLossPrice = priceLevel * (1 - stopLossPct / 100)
takeProfitPrice = priceLevel * (1 + takeProfitPct / 100)
dca(buyQuantity, priceLevel, stopLossPrice, takeProfitPrice)
// Plot grid levels
plotshape(series=gridLevels, title="Grid Levels", location=location.abovebar, color=color.blue, style=shape.triangleup, size=size.small)