μ—­μ‹œ 파인 에디터에 λΆ™μ—¬λ„£κΈ°ν•΄μ„œ μ“°μ…ˆ


λ§κ·ΈλŒ€λ‘œ ν•˜μ΄ν‚¨ μ•„μ‹œ 차트λ₯Ό 밑에 ν•˜λ‚˜ 더 λ§Œλ“€μ–΄μ€Œ


μƒμŠΉμΆ”μ„Έ 녹색 ν•˜λ½μΆ”μ„Έ 뢉은색 λ°±κ·ΈλΌμš΄λ“œ 색칠 됨 


ν•„μš” μ—†μœΌλ©΄ κΊΌμ£Όμ‹œκ³ 









//@version=5

indicator("ν•˜μ΄ν‚¨μ•„μ‹œ 차트 - DC CHART", overlay= false, shorttitle="Custom HA")


// ───────────────────────────────

// 1. ν•˜μ΄ν‚¨ μ•„μ‹œ 계산

// ───────────────────────────────

var float haOpenVal = open

haCloseVal = (open + high + low + close) / 4

haOpenVal := na(haOpenVal[1]) ? (open + close) / 2 : (haOpenVal[1] + haCloseVal[1]) / 2

haHighVal = math.max(high, math.max(haOpenVal, haCloseVal))

haLowValΒ  = math.min(low, math.min(haOpenVal, haCloseVal))


// ν•˜μ΄ν‚¨ μ•„μ‹œ μΊ”λ“€ ν”Œλ‘―

plotcandle(haOpenVal, haHighVal, haLowVal, haCloseVal, title="Heikin Ashi",Β 

Β  Β  Β color = haCloseVal >= haOpenVal ? color.new(color.green,0) : color.new(color.red,0))


// ───────────────────────────────

// 2. 이동평균선 (MA50, MA99, MA200) - ν•˜μ΄ν‚¨μ•„μ‹œ μ’…κ°€ κΈ°μ€€

// ───────────────────────────────

ma50Β  Β = ta.sma(haCloseVal, 50)

ma99Β  Β = ta.sma(haCloseVal, 99)

ma200Β  = ta.sma(haCloseVal, 200)


plot(ma50, color=color.blue, title="MA50")

plot(ma99, color=color.orange, title="MA99")

plot(ma200, color=color.purple, title="MA200")


// ───────────────────────────────

// 3. λ³Όλ¦°μ € λ°΄λ“œ (Period=20, Multiplier=2)

// ───────────────────────────────

bb_period = input.int(20, "λ³Όλ¦°μ € λ°΄λ“œ κΈ°κ°„", minval=1)

bb_multΒ  Β = input.float(2.0, "λ³Όλ¦°μ € λ°΄λ“œ 배수", step=0.1)


bb_basisΒ  = ta.sma(haCloseVal, bb_period)

bb_devΒ  Β  = bb_mult * ta.stdev(haCloseVal, bb_period)

bb_upperΒ  = bb_basis + bb_dev

bb_lowerΒ  = bb_basis - bb_dev


plot(bb_basis, color=color.yellow, title="BB Basis")

plot(bb_upper, color=color.yellow, title="BB Upper")

plot(bb_lower, color=color.yellow, title="BB Lower")


// ───────────────────────────────

// 4. λ§₯긴리 λ‹€μ΄λ‚˜λ―Ή (McGinley Dynamic)

// ───────────────────────────────

// McGinley Dynamic 곡식:Β 

// MD = MD_prev + (price - MD_prev) / (N * (price/MD_prev)^4)


var float mg7Β  = na

var float mg14 = na

var float mg28 = na


if bar_index == 0

Β  Β  mg7Β  := haCloseVal

Β  Β  mg14 := haCloseVal

Β  Β  mg28 := haCloseVal

else

Β  Β  mg7Β  := na(mg7[1])Β  ? ta.ema(haCloseVal, 7)Β  : mg7[1]Β  + (haCloseVal - mg7[1])Β  / (7Β  * math.pow(haCloseVal / mg7[1], 4))

Β  Β  mg14 := na(mg14[1]) ? ta.ema(haCloseVal, 14) : mg14[1] + (haCloseVal - mg14[1]) / (14 * math.pow(haCloseVal / mg14[1], 4))

Β  Β  mg28 := na(mg28[1]) ? ta.ema(haCloseVal, 28) : mg28[1] + (haCloseVal - mg28[1]) / (28 * math.pow(haCloseVal / mg28[1], 4))


plot(mg7,Β  title="MG Dynamic 7",Β  color=color.aqua,Β  Β  linewidth=1)

plot(mg14, title="MG Dynamic 14", color=color.green, linewidth=1)

plot(mg28, title="MG Dynamic 28", color=color.orange,Β  Β  linewidth=1)


// ───────────────────────────────

// 5. MA6 (Close, Open) - ν•˜μ΄ν‚¨ μ•„μ‹œ κΈ°μ€€

// ───────────────────────────────

ma6_close = ta.sma(haCloseVal, 6)

ma6_openΒ  = ta.sma(haOpenVal, 6)



sma6gcross= ma6_close > ma6_open

sma6dcross= ma6_close < ma6_open


sma6cross= sma6gcross orΒ  sma6dcross


sma6crossColor = sma6cross ? (sma6gcrossΒ  ? color.new(color.green, 90) : color.new(color.red, 90)) : na


bgcolor(sma6crossColor)