Chiến lược này tính toán trung bình động và tỷ lệ thay đổi giá để xác định xem trạng thái hiện tại có xu hướng tăng hay giảm kết hợp với các đường K trong một khoảng thời gian nhất định, và theo đó đi dài hoặc ngắn.
Chiến lược này đầu tiên tính toán trung bình động đơn a của chiều dài l và tỷ lệ thay đổi giá r của chiều dài l. Sau đó nó tính toán sự khác biệt k giữa giá K-line hiện tại và trung bình động. Cuối cùng, nó tính toán tổng số của k trên các đường K s trước đây.
Khi sum> 0, nó chỉ ra một xu hướng tăng hiện tại và chiến lược sẽ đi dài. Khi sum<0, nó chỉ ra một xu hướng giảm hiện tại và chiến lược sẽ đi ngắn.
Sau khi mua dài hoặc ngắn, vị trí sẽ được giữ cho đến khi xu hướng đảo ngược (tổng thay đổi từ dương sang âm hoặc ngược lại), sau đó vị trí sẽ được đóng.
Ưu điểm lớn nhất của chiến lược này là nó có thể bắt được xu hướng và phù hợp với giao dịch xu hướng.
Sử dụng đường trung bình động để xác định hướng xu hướng tổng thể có thể lọc hiệu quả tiếng ồn thị trường và khóa xu hướng chính.
Áp dụng chỉ số tỷ lệ thay đổi giá để đo cường độ động lực tránh mất động lực mạnh.
Việc tính đến nhiều đường K trong một khoảng thời gian có thể xác định xu hướng chính xác hơn và tránh bị đánh lừa bởi các nhà phát ngôn cá nhân.
Miễn là xu hướng vẫn không thay đổi, tiếp tục giữ vị trí để tối đa hóa lợi nhuận từ thị trường xu hướng.
Những rủi ro chính của chiến lược này là:
Không thể xác định chính xác thời gian kết thúc xu hướng, có thể dừng lỗ sớm hoặc bỏ lỡ một số lợi nhuận.
Không thể kiểm soát hiệu quả kích thước lỗ đơn lẻ, lỗ có thể lớn trong điều kiện thị trường cực đoan.
Các thông số chiến lược không phù hợp có thể dẫn đến giao dịch quá thường xuyên hoặc bỏ lỡ một số cơ hội giao dịch.
Các cổ phần dài hạn có thể phải đối mặt với rủi ro lãi suất và ký quỹ qua đêm.
Để kiểm soát rủi ro, chúng ta có thể đặt điểm dừng lỗ, chỉ giao dịch các sản phẩm thanh khoản cao, tối ưu hóa các thông số và sử dụng đòn bẩy hợp lý.
Các khía cạnh chính để tối ưu hóa chiến lược này bao gồm:
Kiểm tra các đường trung bình động và tỷ lệ thay đổi giá của các chiều dài khác nhau để tìm ra sự kết hợp thông số tốt nhất.
Hãy thử các chỉ số khác như MACD để xác định xu hướng tốt hơn và tăng thêm độ chính xác.
Thêm các cơ chế quản lý vị trí, chẳng hạn như lấy lợi nhuận sau khi kiếm được một số lợi nhuận, để kiểm soát lỗ đơn.
Bao gồm các chỉ số biến động để thiết lập các điểm dừng năng động để giảm rủi ro trong điều kiện thị trường cực đoan.
Tối ưu hóa logic vào và ra để lọc các vụ phá vỡ sai và cải thiện hiệu quả giao dịch.
Lý thuyết tổng thể của chiến lược này là rõ ràng và dễ thực hiện. Bằng cách theo dõi xu hướng giao dịch nắm giữ dài hạn, kiểm soát rút vốn tương đối hợp lý. Nó phù hợp với các nhà đầu tư tìm kiếm lợi nhuận ổn định. Tăng cường thêm việc dừng lỗ và quản lý vị trí có thể mong đợi lợi nhuận ổn định dài hạn tốt.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false) l = input(defval=170,title="Length for indicator") s = input(title="Length of summation",defval=18) a= sma(close,l) r=roc(close,l) k=close-a sum = 0 for i = 0 to s sum := sum + k[i] //plot(a,color=yellow,linewidth=2,transp=0) //bc = iff( sum > 0, white, teal) //plot(sum,color=bc, transp=20, linewidth=3,style=columns) //plot(sma(sum,3),color=white) //hline(0) inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na ////buyEntry = crossover(source, lower) ////sellEntry = crossunder(source, upper) if sum>0 strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if sum<0 strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") strategy.initial_capital = 50000 plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2) hline(0) //longCondition = sum>0 //exitlong = sum<0 //shortCondition = sum<0 //exitshort = sum>0 //strategy.entry(id = "Long", long=true, when = longCondition) //strategy.close(id = "Long", when = exitlong) //strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong) //strategy.entry(id = "Short", long=false, when = shortCondition) //strategy.close(id = "Short", when = exitshort) //strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)