Chiến lược mua ba giai đoạn theo dõi động ATH suy giảm nhiều cấp

ATH DCA
Ngày tạo: 2024-12-20 14:53:04 sửa đổi lần cuối: 2024-12-20 14:53:04
sao chép: 0 Số nhấp chuột: 372
1
tập trung vào
1617
Người theo dõi

Chiến lược mua ba giai đoạn theo dõi động ATH suy giảm nhiều cấp

Tổng quan

Đây là một chiến lược mua nhiều tầng dựa trên việc theo dõi động lực của giá cao nhất trong lịch sử (ATH). Chiến lược này thực hiện các hoạt động mua hàng loạt bằng cách theo dõi mức độ rút lui của giá từ ATH, thực hiện các hoạt động mua hàng loạt ở các mức giảm khác nhau và bán hết lợi nhuận khi giá gần ATH. Chiến lược này tận dụng tối đa sự biến động của thị trường để giảm chi phí nắm giữ tổng thể bằng cách xây dựng kho hàng loạt có hệ thống.

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

Logic cốt lõi của chiến lược bao gồm các yếu tố chính sau:

  1. Động thái theo dõi ATH: Tiếp tục cập nhật mức cao nhất trong lịch sử và đặt lại dấu mua khi phá vỡ mức cao mới
  2. Thị trường giảm 3 cấp kích hoạt: đặt điểm mua ở mức giảm 10%, 15% và 20%
  3. Quản lý tiền cố định: sử dụng số tiền tương tự cho mỗi lần mua (($1000)
  4. Phục hồi cơ chế thanh toán: thanh toán tất cả các vị trí giữ khi giá trở lại khoảng cách 5% ATH Chiến lược này được xây dựng bằng cách tạo vị trí theo cấp bậc, giảm dần chi phí giữ vị trí trung bình trong quá trình giảm và khóa thu nhập bằng cách giữ vị trí bằng phẳng khi thị trường hồi phục.

Lợi thế chiến lược

  1. Phân tán rủi ro: Giảm rủi ro khi chọn thời điểm bằng cách xây dựng lô hàng
  2. Tối ưu hóa chi phí: Sử dụng sự điều chỉnh lớn hơn để giảm chi phí giữ trung bình
  3. Theo dõi xu hướng: cập nhật động lực ATH đảm bảo hoạt động liên tục trong xu hướng tăng
  4. Hiệu quả tài chính: phân bổ vốn cố định đảm bảo khả năng kiểm soát sử dụng vốn
  5. Tự động hóa thực hiện: Điều kiện nhập cảnh và xuất cảnh rõ ràng cho phép hoạt động có hệ thống

Rủi ro chiến lược

  1. Rủi ro đảo ngược xu hướng: Có thể tạo ra một loạt các lỗ hổng trong xu hướng giảm dài hạn
  2. Rủi ro cạn kiệt vốn: có thể nhanh chóng cạn kiệt vốn có sẵn trong thị trường biến động mạnh
  3. Rủi ro mất cơ hội: Điều kiện mua hàng nghiêm ngặt có thể khiến bạn bỏ lỡ một số cơ hội tốt
  4. Rủi ro thời điểm cân bằng: Điều kiện cân bằng thống nhất có thể không phù hợp với tất cả các môi trường thị trường Những rủi ro này nên được quản lý bằng cách thiết lập giới hạn rút tối đa và kiểm soát vị trí tổng thể.

Hướng tối ưu hóa chiến lược

  1. Thêm bộ lọc xu hướng: thêm đường trung bình hoặc chỉ số động lực để xác nhận xu hướng tổng thể
  2. Quản lý vốn tối ưu hóa: Điều chỉnh số tiền mỗi lần mua theo biến động của tỷ lệ biến động
  3. Cải thiện cơ chế thanh toán: tăng các tùy chọn thanh toán theo lô để tránh rủi ro thanh toán giá đơn
  4. Tham gia vào cơ chế dừng lỗ: thiết lập mức dừng lỗ tuyệt đối để kiểm soát rủi ro tối đa
  5. Tối ưu hóa tham số động: Tự động điều chỉnh mức mua theo chu kỳ thị trường khác nhau

Tóm tắt

Chiến lược này tận dụng tốt sự biến động của thị trường thông qua cơ chế đặt hàng theo đợt và đặt hàng bằng phẳng thống nhất. Hoạt động thành công của chiến lược phụ thuộc vào thị trường có đủ biến động và xu hướng tăng cuối cùng. Với kiểm soát rủi ro hợp lý và tối ưu hóa tham số, chiến lược có thể duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.

Mã nguồn chiến lược
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bsticks22

//@version=6

strategy("Long-term Bean Dip (v.1)", overlay=true)

// === Inputs ===
dip1 = input.float(10.0, "First Dip (%)", step=0.1)       // 10%
dip2 = input.float(15.0, "Second Dip (%)", step=0.1)      // 15%
dip3 = input.float(20.0, "Third Dip (%)", step=0.1)       // 20%
recovery_threshold = input.float(5.0, "Sell when within X% of ATH", step=0.1) // 5%
buy_amount = input.float(50000.0, "Buy Amount ($)", step=100) // $1000 increments

// === Variables ===
var float all_time_high = na
var bool dip1_bought = false
var bool dip2_bought = false
var bool dip3_bought = false

// === Update All-Time High ===
if na(all_time_high)
    all_time_high := high
else
    // Update ATH to the previous bar's high to exclude current bar's high
    all_time_high := math.max(all_time_high[1], high[1])
    if high[1] > all_time_high[1]
        // New ATH reached on the previous bar
        dip1_bought := false
        dip2_bought := false
        dip3_bought := false

// === Calculate Percentage Drop from ATH ===
percent_drop = (all_time_high - close) / all_time_high * 100.0

// === Define Dip Conditions ===
buyDip1 = (percent_drop >= dip1) and not dip1_bought
buyDip2 = (percent_drop >= dip2) and not dip2_bought
buyDip3 = (percent_drop >= dip3) and not dip3_bought

// === Calculate Quantity to Buy ===
qty1 = buy_amount / close

// === Execute Buys on Dips ===
if buyDip1
    strategy.entry("Dip1 Buy", strategy.long, qty=qty1)
    dip1_bought := true

if buyDip2
    strategy.entry("Dip2 Buy", strategy.long, qty=qty1)
    dip2_bought := true

if buyDip3
    strategy.entry("Dip3 Buy", strategy.long, qty=qty1)
    dip3_bought := true

// === Sell Condition: Recovery to Within X% of ATH ===
sell_condition = close >= all_time_high * (1 - recovery_threshold / 100.0)

// === Execute Sell on Recovery ===
if sell_condition and strategy.position_size > 0
    strategy.close_all()

// === Plotting ===
plot(all_time_high, title="All-Time High", color=color.new(color.blue, 0))
plot(all_time_high * (1 - dip1 / 100.0), title="Dip1 Level", color=color.new(color.green, 50), style=plot.style_linebr)
plot(all_time_high * (1 - dip2 / 100.0), title="Dip2 Level", color=color.new(color.orange, 50), style=plot.style_linebr)
plot(all_time_high * (1 - dip3 / 100.0), title="Dip3 Level", color=color.new(color.red, 50), style=plot.style_linebr)
plot(all_time_high * (1 - recovery_threshold / 100.0), title="Recovery Level", color=color.new(color.purple, 50), style=plot.style_linebr)

// === Plot Buy and Sell Signals ===
plotshape(buyDip1, title="Dip1 Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy10%")
plotshape(buyDip2, title="Dip2 Buy", location=location.belowbar, color=color.orange, style=shape.labelup, text="Buy15%")
plotshape(buyDip3, title="Dip3 Buy", location=location.belowbar, color=color.red, style=shape.labelup, text="Buy20%")
plotshape(sell_condition and strategy.position_size > 0, title="Sell", location=location.abovebar, color=color.purple, style=shape.labeldown, text="Sell")

// === Alerts ===
alertcondition(buyDip1, title="Dip1 Buy", message="Price dipped 10% from ATH, buying $1000")
alertcondition(buyDip2, title="Dip2 Buy", message="Price dipped 15% from ATH, buying $1000")
alertcondition(buyDip3, title="Dip3 Buy", message="Price dipped 20% from ATH, buying $1000")
alertcondition(sell_condition and strategy.position_size > 0, title="Sell at Recovery", message="Price recovered to within 5% of ATH, selling all")