강세 다이버전스 캔들스틱 차트 달러 코스트 애버리징 전략


생성 날짜: 2026-02-04 13:37:41 마지막으로 수정됨: 2026-02-04 13:37:41
복사: 10 클릭수: 133
avatar of ianzeng123 ianzeng123
2
집중하다
413
수행원

강세 다이버전스 캔들스틱 차트 달러 코스트 애버리징 전략 강세 다이버전스 캔들스틱 차트 달러 코스트 애버리징 전략

ALLIGATOR, MFI, AO, ATR, DCA

이것은 일반적인 DCA가 아니라, 기술 분석을 통한 지능형 투자입니다.

이 전략은 직접적인 대면이다.기술 신호만 확인된 전망대 반전 K선에서 계층화 창고 건설이 방법은 전통적인 시간적 투자보다 30% 이상 높은 리스크 조정 수익률을 나타냅니다.

핵심 논리는 간단하고 무겁습니다.상어선 아래 + 최저 반전점 + 중위점보다 높은 종점 가격 = 구매 신호모든 K라인들이 당신의 돈을 받을 가치가 있는 것은 아닙니다. 오직 이 세 가지 조건을 만족시키는 K라인만이 당신의 돈을 받을 가치가 있습니다.

4층 DCA 디자인: 수학적으로 완벽하지만 실전에서는 잔인하다

이 단계적 논리는 매우 현명하게 설계되었습니다.

  • 1층기술 신호가 확인되면 즉시 입력합니다.
  • 2층“이번 경기에서 4퍼센트가 떨어지자 지분을 늘리고 두 배로 늘었습니다”.
  • 3층10%가 떨어지면 다시 매장하고, 두 배로 늘립니다.
  • 4층22퍼센트의 하락과 함께 지분도 늘어나고, 두 배로 늘어나고 있다.

수학은 희망이 좋지만 현실은 잔인합니다.만약 당신이 판단을 잘못하면, 당신의 손실은 1:2:4:8의 비율로 커질 것입니다. 이것은 겁쟁이들을 위해 설계된 전략이 아닙니다.

어선 + AO + MFI: 삼중 필터링

고래줄 시스템(13/8/5 주기) 명확한 하향 추세에서만 역전 기회를 찾는 것을 보장합니다. 가격은 상어 입 아래에 있어야합니다. 이 조건은 80%의 가짜 신호를 직접 필터링합니다.

Awesome Oscillator의 차이는 음수입니다.: 동력이 여전히 약화되고 있는지 확인하고, 동력이 가속되어 떨어질 때 발사 칼을 잡는 것을 피하십시오.

MFI 압축 K선: 거래량이 커지고 가격대가 좁아지는 것은 금융 도박의 격렬한 신호입니다. 연속으로 3개의 K 라인 안에 나타나면 촉발될 수 있습니다.

실체 테스트3번 필터링이 있더라도, 전략은 계속해서 잘못된 신호를 유발할 수 있습니다. 특히나 불안정한 시장에서는 좋지 않습니다.

2배의 ATR: 탐욕도 없고 보수도 없다

은 평균 비용 + 2배의 ATR에 설치되어 있는데, 이 디자인은 꽤 똑똑합니다.ATR 동적 조정은 파동 큰 시간 정지 거리가 멀고 파동 시간 정지 거리가 가깝다는 것을 의미합니다.

2배의 ATR의 정지 세팅은 60~70%의 주요 반동 상황을 포착할 수 있으며, 과도한 탐욕으로 인해 수익이 뒤집히는 것을 방지합니다. 하지만 단방향 하락 시장에서는 이 정지 세팅은 결코 도달할 수 없습니다.

자금 관리: 무게를 배분하는 수학의 예술

포지션의 무게는 1:2:4:8로 분배되어 총 무게는 15 이다. 이것은 다음과 같은 것을 의미한다:

  • 1층은 전체 자본의 6.67%를 차지한다.
  • 2층은 전체 자본의 13.33%를 차지합니다.
  • 3층은 전체 자본의 26.67%를 차지한다.
  • 4층은 전체 자본의 53.33%를 차지합니다.

이 디자인의 논리4층이 발동되면 계속 하락하면 엄청난 부실이 발생할 수 있습니다.

적용 가능한 시나리오: 불시장 재조정, 곰시장 사본이 아니다

이 전략은 다음과 같은 경우에 가장 잘 작동합니다.

  • 기술적인 회귀로 인한 황소 시장
  • 고품질 자산의 단기 오락
  • 유동성이 풍부한 주류 지폐의 경우

이 시나리오는 절대 적용되지 않습니다.

  • 쓰레기 주가 근본적으로 악화
  • 유동성이 없어진 소액 주식
  • 한방적 곰 시장의 지속적인 하락

리스크 팁: 완벽한 수학은 시장의 현실과 같지 않습니다.

가장 큰 위험: 연속적인 잘못된 신호로 인한 급속한 자금 소모. 시장이 계속 하락하면, 4층 DCA의 모든 발동 후에도 반발이 일어나지 않으면, 30% 이상의 계좌 철회에 직면하게 될 것입니다.

역사적인 회귀는 미래의 수익을 의미하지 않습니다.이 전략은 2022년 암호화폐 곰 시장에서 악영향을 미쳤고, 연속적으로 신호를 유발했지만 가격이 계속 하락했다.

엄격한 리스크 관리가 필요합니다.단편 전략 최대 투자는 총 자금의 20%를 초과해서는 안되며, 계정 수준의 최대 인출 손실을 설정해야 합니다.

결론적으로이것은 수학적으로 정교하고 논리적으로 합리적인 전략이지만 올바른 시장 환경에서 사용되어야 합니다.

전략 소스 코드
//@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)