커뮤니티

문의드립니다.

프로필 이미지
as8282
2020-06-10 09:14:20
2216
글번호 139693
답변완료
아래수식을 예스로 부탁합니다. //Mode src = input(title = "Source", type = source, defval = close) atrLen = input(title = "ATR", type = integer, defval = 12, minval = 1, maxval = 1000) m1 = input(title = "ATR Multiplier - ADX Rising", type = float, defval = 4.0, minval = 1, step = 0.1, maxval = 1000) m2 = input(title = "ATR Multiplier - ADX Falling", type = float, defval = 1.5, minval = 1, step = 0.1, maxval = 1000) adxLen = input(title = "ADX", type = integer, defval = 14, minval = 1, maxval = 1000) // DI-Pos, DI-Neg, ADX hR = high - nz(high[1]) lR = nz(low[1]) - low dmPos = hR > lR ? abs(hR) : 0 dmNeg = lR > hR ? abs(lR) : 0 sTR = nz(sTR[1]) - nz(sTR[1]) / adxLen + tr sDMPos = nz(sDMPos[1]) - nz(sDMPos[1]) / adxLen + dmPos sDMNeg = nz(sDMNeg[1]) - nz(sDMNeg[1]) / adxLen + dmNeg DIP = sDMPos / sTR * 100 DIN = sDMNeg / sTR * 100 DX = abs(DIP - DIN) / (DIP + DIN) * 100 adx = sma(DX, adxLen) // Trailing ATR m = rising(adx, 1) ? m1 : falling(adx, 1) ? m2 : nz(m[1]) up = hl2 - m * atr(atrLen) dn = hl2 + m * atr(atrLen) TUp = src[1] > TUp[1] ? max(up, TUp[1]) : up TDown = src[1] < TDown[1] ? min(dn, TDown[1]) : dn trend = src > TDown[1] ? 1 : src < TUp[1]? -1 : nz(trend[1], 1) stop = trend == 1 ? TUp : TDown trendChange = change(trend) // Plot lineColor = not(trendChange) ? trend > 0 ? #00FF00DD : #FF0000DD : #00000000 shapeColor = trendChange ? trendChange > 0 ? #00FF00F8 : #FF0000F8 : #00000000 plot(stop, color = lineColor, style = line, linewidth = 1, title = "ATR Trend") plotshape(trendChange ? stop : na, style = shape.circle, size = size.tiny, location = location.absolute, color = shapeColor, title = "Change") // end
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-06-11 10:59:30

안녕하세요 예스스탁입니다. input : atrLen(12),m1(4.0),m2(1.5),adxLen(14); var : src(0),hr(0),lr(0),dmpos(0),dmneg(0),str(0),sdmpos(0),sdmneg(0),dip(0),din(0),dx(0),adxv(0),mm(0),upv(0),dnv(0); var : hl2(0),tup(0),tdown(0),stops(0),trend(0),trendChange(false),lineColor(0),shapeColor(0); src = c; hl2 = (H+L)/2; hR = high - high[1]; lR = low[1] - low; dmPos = iff(hR > lR , abs(hR) , 0); dmNeg = iff(lR > hR , abs(lR) , 0); if CurrentBar >= 1 then { sTR = sTR[1] - sTR[1]/adxLen + TrueRange; sDMPos = sDMPos[1] - sDMPos[1] / adxLen + dmPos; sDMNeg = sDMNeg[1] - sDMNeg[1] / adxLen + dmNeg; DIP = sDMPos / sTR * 100; DIN = sDMNeg / sTR * 100; DX = abs(DIP - DIN) / (DIP + DIN) * 100; adxv = ma(DX, adxLen); // Trailing ATR mm = iff(adxv > adxv[1], m1 ,iff(adxv < adxv[1] , m2 ,mm)); upv = hl2 - mm * atr(atrLen); dnv = hl2 + mm * atr(atrLen); TUp = iff(src[1] > TUp[1] , max(upv, TUp[1]) , upv); TDown = iff(src[1] < TDown[1] , min(dnv, TDown[1]) , dnv); trend = iff(src > TDown[1] , 1 , iff(src < TUp[1] , -1 , trend)); stops = iff(trend == 1 , TUp , TDown); trendChange = trend != trend[1]; // Plot lineColor = iff(trendChange ==false,iff(trend > 0 ,red,blue),BLACK); shapeColor = iff(trendChange == true,iff(trend > trend[1],MAGENTA,CYAN),BLACK); plot1(stops,"ATR Trend",lineColor); plot2(iff(trendChange == true,stops,nan),"Change",shapeColor); } 즐거운 하루되세요 > as8282 님이 쓴 글입니다. > 제목 : 문의드립니다. > 아래수식을 예스로 부탁합니다. //Mode src = input(title = "Source", type = source, defval = close) atrLen = input(title = "ATR", type = integer, defval = 12, minval = 1, maxval = 1000) m1 = input(title = "ATR Multiplier - ADX Rising", type = float, defval = 4.0, minval = 1, step = 0.1, maxval = 1000) m2 = input(title = "ATR Multiplier - ADX Falling", type = float, defval = 1.5, minval = 1, step = 0.1, maxval = 1000) adxLen = input(title = "ADX", type = integer, defval = 14, minval = 1, maxval = 1000) // DI-Pos, DI-Neg, ADX hR = high - nz(high[1]) lR = nz(low[1]) - low dmPos = hR > lR ? abs(hR) : 0 dmNeg = lR > hR ? abs(lR) : 0 sTR = nz(sTR[1]) - nz(sTR[1]) / adxLen + tr sDMPos = nz(sDMPos[1]) - nz(sDMPos[1]) / adxLen + dmPos sDMNeg = nz(sDMNeg[1]) - nz(sDMNeg[1]) / adxLen + dmNeg DIP = sDMPos / sTR * 100 DIN = sDMNeg / sTR * 100 DX = abs(DIP - DIN) / (DIP + DIN) * 100 adx = sma(DX, adxLen) // Trailing ATR m = rising(adx, 1) ? m1 : falling(adx, 1) ? m2 : nz(m[1]) up = hl2 - m * atr(atrLen) dn = hl2 + m * atr(atrLen) TUp = src[1] > TUp[1] ? max(up, TUp[1]) : up TDown = src[1] < TDown[1] ? min(dn, TDown[1]) : dn trend = src > TDown[1] ? 1 : src < TUp[1]? -1 : nz(trend[1], 1) stop = trend == 1 ? TUp : TDown trendChange = change(trend) // Plot lineColor = not(trendChange) ? trend > 0 ? #00FF00DD : #FF0000DD : #00000000 shapeColor = trendChange ? trendChange > 0 ? #00FF00F8 : #FF0000F8 : #00000000 plot(stop, color = lineColor, style = line, linewidth = 1, title = "ATR Trend") plotshape(trendChange ? stop : na, style = shape.circle, size = size.tiny, location = location.absolute, color = shapeColor, title = "Change") // end