Chiến lược bình quân giá theo thời gian (dollar-cost averaging) dựa trên biểu đồ nến phân kỳ tăng giá.


Ngày tạo: 2026-02-04 13:37:41 sửa đổi lần cuối: 2026-02-04 13:37:41
sao chép: 10 Số nhấp chuột: 133
2
tập trung vào
413
Người theo dõi

Chiến lược bình quân giá theo thời gian (dollar-cost averaging) dựa trên biểu đồ nến phân kỳ tăng giá. Chiến lược bình quân giá theo thời gian (dollar-cost averaging) dựa trên biểu đồ nến phân kỳ tăng giá.

ALLIGATOR, MFI, AO, ATR, DCA

Đây không phải là một DCA bình thường, mà là một DCA thông minh được thúc đẩy bởi phân tích kỹ thuật.

Chiến lược đặt cược truyền thống là mua mù quáng theo thời gian.Chỉ có tín hiệu kỹ thuật xác nhận quan điểm đảo ngược đường K để xây dựng nhà kho phân tầngCác dữ liệu đánh giá lại cho thấy phương pháp này có lợi nhuận điều chỉnh rủi ro cao hơn 30% so với đầu tư theo thời gian truyền thống.

Lập luận cốt lõi đơn giản và thô bạo:Cá mập dưới đường + điểm đảo ngược thấp nhất + giá đóng cửa cao hơn giá trung bình = tín hiệu muaKhông phải tất cả các dòng K đều xứng đáng với số tiền của bạn, chỉ có những dòng K đáp ứng được ba điều kiện này mới xứng đáng với số tiền của bạn

Thiết kế DCA 4 tầng: Hoàn hảo về mặt toán học, tàn bạo trong chiến tranh thực tế

Theo đó, một số người dùng Facebook đã sử dụng nó để tạo ra một trang web.

  • Lớp 1Lưu ý: Nhập ngay khi tín hiệu kỹ thuật xác nhận
  • Lớp 2Báo cáo: Cổ phiếu giảm 4%, tăng gấp đôi
  • Lớp 3“Sau khi giảm 10%, chúng tôi sẽ tăng thêm và tăng gấp đôi”.
  • Tầng 4Báo cáo: Cổ phiếu giảm 22% và tăng gấp đôi

Hy vọng của toán học là tuyệt vời, nhưng thực tế thì tàn nhẫnNếu bạn đánh giá sai, bạn sẽ bị tổn thất theo tỉ lệ 1:2:4:8. Đây không phải là chiến lược dành cho những kẻ hèn nhát.

Dòng cá mập + AO + MFI: Cơ chế lọc ba

Hệ thống dây cá(13/8/5 chu kỳ) Đảm bảo chỉ tìm cơ hội đảo ngược trong xu hướng giảm rõ ràng. Giá phải ở dưới miệng cá mập, điều kiện này sẽ lọc trực tiếp 80% tín hiệu giả.

Awesome Oscillator có độ phân biệt âm.Lưu ý: đảm bảo động cơ vẫn đang suy yếu và tránh tiếp tục khi động cơ tăng tốc.

MFI ép dây KLượng giao dịch tăng lên nhưng phạm vi giá lại thu hẹp, đây là tín hiệu của sự chơi đùa mạnh mẽ của tiền.

Kiểm tra thực tếTrong khi đó, các chiến lược này có thể liên tục kích hoạt các tín hiệu sai.

Không tham lam và không bảo thủ

Thiết kế này khá thông minh khi thiết lập các trạm dừng ở mức chi phí trung bình + 2 lần ATR.ATR động điều chỉnh có nghĩa là dao động lớn giờ dừng khoảng cách xa, dao động giờ dừng gần

Lịch sử cho thấy, thiết lập dừng của 2 lần ATR có thể nắm bắt 60-70% các đà tăng chính, đồng thời tránh sự tham lam quá mức dẫn đến lợi nhuận. Tuy nhiên, trong thị trường giảm một bên, có thể không bao giờ chạm được.

Quản lý tài chính: Nghệ thuật toán học phân chia trọng lượng

Trọng lượng vị trí được phân bổ theo 1:2:4:8 và tổng trọng lượng là 15. Điều này có nghĩa là:

  • Lớp 1 chiếm 6,67% tổng số vốn
  • Lớp 2 chiếm 13,33% tổng số vốn
  • Lớp 3 chiếm 26,67% tổng số vốn
  • Tầng 4 chiếm 53,33% tổng số vốn

Lập luận của thiết kế nàyLớp 4: Thêm và giảm mua, nhưng cũng có nghĩa là đặt cược lớn nhất ở vị trí nguy hiểm nhất. Nếu tiếp tục giảm sau khi tầng 4 được kích hoạt, bạn sẽ phải đối mặt với lỗ hổng lớn.

Trường hợp thích hợp: Thị trường bò quay trở lại, không phải là thị trường gấu

Chiến lược này hoạt động tốt nhất khi:

  • Sự thay đổi kỹ thuật trong thị trường bò
  • Giá trị tài sản chất lượng cao trong thời gian ngắn
  • Các đồng tiền chính có đủ thanh khoản

Không có trường hợp nào phù hợp.

  • Cổ phiếu rác rưởi xấu đi cơ bản
  • Các cổ phiếu nhỏ bị cạn kiệt tính thanh khoản
  • Thị trường gấu đơn phương tiếp tục giảm

Mẹo rủi ro: Toàn bộ toán học không phải là sự thật của thị trường

Rủi ro lớn nhấtNếu thị trường tiếp tục giảm và không có sự hồi phục sau khi kích hoạt tất cả 4 lớp DCA, bạn sẽ phải đối mặt với hơn 30% thu hồi tài khoản.

Lịch sử không phải là lợi nhuận trong tương lai│ Chiến lược này đã làm xấu trong thị trường gấu tiền điện tử năm 2022, liên tục gây ra tín hiệu nhưng giá tiếp tục giảm │

Quản lý rủi ro nghiêm ngặt là cần thiếtTối đa đầu tư vào một chiến lược duy nhất không được vượt quá 20% tổng số vốn và phải thiết lập mức dừng rút tối đa ở cấp tài khoản.

kết luậnĐây là một chiến lược toán học tinh vi, hợp lý, nhưng cần được sử dụng trong môi trường thị trường đúng đắn.

Mã nguồn chiến lược
//@version=6
strategy(title = "Bullish Divergent Bar DCA Strategy [Skyrexio]", 
         shorttitle = "BDB DCA", 
         overlay = true, 
         pyramiding = 4,
         default_qty_type = strategy.percent_of_equity,
         default_qty_value = 10,
         initial_capital = 10000,
         currency = currency.USD)

//_______ <constant_declarations>
var const color skyrexGreen = color.new(#2ECD99, 0)

//________<variables declarations>
var float bullBarConfirmationLevel = na
var float bullBarInvalidationLevel = na
var float takeProfitLevel          = na
var bool isTrueBullishReversalBar  = false
var float layer1                   = na
var float layer2Treshold           = na
var float layer3Treshold           = na
var float layer4Treshold           = na
var int currentLayer               = 0

//_______ <inputs>
showDcaLevels                = input.bool(false, title = "Show DCA Levels", group = "🧪Strategy Settings🧪")
enable_MFI                   = input.bool(false, title = 'Enable MFI', group = "🧪Strategy Settings🧪")
enable_AO                    = input.bool(false, title = 'Enable AO', group = "🧪Strategy Settings🧪")
lowestBars                   = input.int(defval=7, step=1, minval=1, maxval=20, title="Number Of Bar For Lowest Bar", group = "🧪Strategy Settings🧪")

layer2TresholdPercent        = input.float(defval=4.0, step=0.5, maxval=100.0, minval=0.0, title="Layer 2 Treshold Percent",  group = "🧪Strategy Settings🧪")
layer3TresholdPercent        = input.float(defval=10.0, step=0.5, maxval=100.0, minval=0.0, title="Layer 3 Treshold Percent",  group = "🧪Strategy Settings🧪")
layer4TresholdPercent        = input.float(defval=22.0, step=0.5, maxval=100.0, minval=0.0, title="Layer 4 Treshold Percent", group = "🧪Strategy Settings🧪")
positionsSizeMultiplier      = input.float(defval=2.0, step=0.5, minval=1.0, maxval=4.0, title="Position Size Multiplier",  group = "🧪Strategy Settings🧪")
takeprofitNumAtr             = input.float(defval=2.0, step=0.5, minval=0.5, maxval=10.0, title="Number Of ATR For Take Profit",  group = "🧪Strategy Settings🧪")

isLowestBar = ta.lowest(lowestBars) == low

//_______ <function_declarations>
smma(src, length) =>
    var float smma = na
    sma_value = ta.sma(src, length)
    smma := na(smma) ? sma_value : (smma * (length - 1) + src) / length
    smma

isBullishReversalBar() =>
    close > hl2 and isLowestBar

getLayerEquityQty(mult, layer, price) =>
    float sumW = 1.0 + mult + math.pow(mult, 2) + math.pow(mult, 3)
    float wCur = math.pow(mult, layer)
    float pct  = wCur / sumW                     
    float cap  = strategy.equity * pct           
    float qty  = cap / price
    math.max(qty, 0.001)  // 确保最小数量

//_______ <calculations>
atr = ta.atr(14)

//Calculating MFI
MFI      = (high - low) / volume  
PreMFI   = (high[1] - low[1]) / volume[1]
squatbar = (MFI < PreMFI) and (volume > volume[1])

//Calculating Awesome Oscillator
ao   = ta.sma(hl2, 5) - ta.sma(hl2, 34)
diff = ao - ao[1]

//Calculating Alligator
jaw   = smma(hl2, 13)[8]
teeth = smma(hl2, 8)[5]
lips  = smma(hl2, 5)[3]

// 重置信号状态
isTrueBullishReversalBar := false

//Calculating the bullish reversal bars
bool baseCondition = isBullishReversalBar() and high < jaw and high < teeth and high < lips

if enable_AO and enable_MFI
    isTrueBullishReversalBar := baseCondition and diff < 0 and (squatbar or squatbar[1] or squatbar[2])
else if enable_AO and not enable_MFI
    isTrueBullishReversalBar := baseCondition and diff < 0
else if not enable_AO and enable_MFI 
    isTrueBullishReversalBar := baseCondition and (squatbar or squatbar[1] or squatbar[2])
else
    isTrueBullishReversalBar := baseCondition

// 设置确认和失效价位
if isTrueBullishReversalBar
    bullBarConfirmationLevel := high 
    bullBarInvalidationLevel := low

// 检查失效
isBullBarInvalidated = ta.crossunder(low, bullBarInvalidationLevel)

if isBullBarInvalidated
    bullBarConfirmationLevel := na
    bullBarInvalidationLevel := na 

// Defining current DCA layer
if strategy.opentrades == 1 and strategy.opentrades[1] == 0
    layer1 := strategy.position_avg_price
    currentLayer := 1

if strategy.opentrades == 2 and strategy.opentrades[1] == 1
    currentLayer := 2

if strategy.opentrades == 3 and strategy.opentrades[1] == 2
    currentLayer := 3

if strategy.opentrades == 4 and strategy.opentrades[1] == 3
    currentLayer := 4

if strategy.opentrades == 0
    currentLayer := 0
    layer1 := na

// Tresholds price from layer1
layer2Treshold := na(layer1) ? na : layer1 * (100 - layer2TresholdPercent) / 100
layer3Treshold := na(layer1) ? na : layer1 * (100 - layer3TresholdPercent) / 100
layer4Treshold := na(layer1) ? na : layer1 * (100 - layer4TresholdPercent) / 100

//Calculating take profit level 
takeProfitLevel := strategy.opentrades > 0 ? strategy.position_avg_price + atr * takeprofitNumAtr : na

// ------- 入场逻辑 -------
// Layer 1 入场
if currentLayer == 0 and isTrueBullishReversalBar and not na(bullBarConfirmationLevel)
    float qty1 = getLayerEquityQty(positionsSizeMultiplier, 0, bullBarConfirmationLevel)
    strategy.entry(id = 'entry1', direction = strategy.long, stop = bullBarConfirmationLevel, qty = qty1)

// Layer 2 入场
if currentLayer == 1 and not na(layer2Treshold) and low < layer2Treshold and isTrueBullishReversalBar and not na(bullBarConfirmationLevel)
    float qty2 = getLayerEquityQty(positionsSizeMultiplier, 1, bullBarConfirmationLevel)
    strategy.entry(id = 'entry2', direction = strategy.long, stop = bullBarConfirmationLevel, qty = qty2)

// Layer 3 入场
if currentLayer == 2 and not na(layer3Treshold) and low < layer3Treshold and isTrueBullishReversalBar and not na(bullBarConfirmationLevel)
    float qty3 = getLayerEquityQty(positionsSizeMultiplier, 2, bullBarConfirmationLevel)
    strategy.entry(id = 'entry3', direction = strategy.long, stop = bullBarConfirmationLevel, qty = qty3)

// Layer 4 入场
if currentLayer == 3 and not na(layer4Treshold) and low < layer4Treshold and isTrueBullishReversalBar and not na(bullBarConfirmationLevel)
    float qty4 = getLayerEquityQty(positionsSizeMultiplier, 3, bullBarConfirmationLevel)
    strategy.entry(id = 'entry4', direction = strategy.long, stop = bullBarConfirmationLevel, qty = qty4)

// ------- 出场逻辑 -------
if strategy.opentrades > 0 and not na(takeProfitLevel)
    strategy.exit(id = 'exit1', from_entry = 'entry1', limit = takeProfitLevel)
    strategy.exit(id = 'exit2', from_entry = 'entry2', limit = takeProfitLevel)
    strategy.exit(id = 'exit3', from_entry = 'entry3', limit = takeProfitLevel)
    strategy.exit(id = 'exit4', from_entry = 'entry4', limit = takeProfitLevel)

// ------- 绘图 -------
plot(takeProfitLevel, color=skyrexGreen, style=plot.style_linebr, linewidth=2, title="Take Profit")
plot(showDcaLevels ? layer1 : na, color=color.orange, title="Layer 1")
plot(showDcaLevels ? layer2Treshold : na, color=color.orange, title="Layer 2")
plot(showDcaLevels ? layer3Treshold : na, color=color.orange, title="Layer 3")
plot(showDcaLevels ? layer4Treshold : na, color=color.orange, title="Layer 4")

// 调试标签(可删除)
plotshape(isTrueBullishReversalBar, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)