커뮤니티

부탁드립니다.

프로필 이미지
다올
2023-07-12 10:59:39
1112
글번호 170556
답변완료
변형 부탁 드립니다 // normalize values into the range -1 to +1 normalize(value, minValue, maxValue) => range = maxValue - minValue == 0 ? 0.0001 : maxValue - minValue -1 + (((value - minValue) / range) * 2) atrValue = atr(9) priceRange = 2 * atrValue // RSI rsiValue = rsi(close, 14) rsiValueNormalized = normalize(rsiValue, 25, 75) rsiColor = rsiValueNormalized <= 0 ? orange : yellow // Elliot Wave emaDiff = ema(close, 5) - ema(close, 35) emaDiffNormalized = normalize(emaDiff, -priceRange, priceRange) emaColor = emaDiff <= 0 ? red : lime // MACD fastMovingAverage = ema(close, 12) slowMovingAverage = ema(close, 26) macd = fastMovingAverage - slowMovingAverage macdSignal = sma(macd, 9) macdHistogram = macd - macdSignal macdNormalized = normalize(macd, -priceRange, priceRange) macdSignalNormalized = normalize(macdSignal, -priceRange, priceRange) macdHistogramNormalized = normalize(macdHistogram, -priceRange, priceRange) isMACDAbove = macd >= macdSignal crossoverColor = isMACDAbove ? lime : red crossoverValue = cross(macd, macdSignal) ? macdSignalNormalized : na // MFI positiveFlow = sum(volume * (change(hlc3) <= 0 ? 0 : hlc3), 14) negativeFlow = sum(volume * (change(hlc3) >= 0 ? 0 : hlc3), 14) mfiValue = rsi(positiveFlow, negativeFlow) mfiValueNormalized = normalize(mfiValue, 25, 75) // Composite compositeValue = emaDiffNormalized + rsiValueNormalized + macdHistogramNormalized + mfiValueNormalized compositeNormalized = normalize(compositeValue, -4, 4) compositeColor = compositeValue <= 0 ? red : lime compositeStyle = histogram // Plots plot(compositeNormalized, title="Composite", color=compositeColor, style=area, linewidth=2, transp=60) plot(macdSignalNormalized, title="MacD Signal", style=line, linewidth=1, color=crossoverColor) plot(crossoverValue, title="Crossover", style=circles, linewidth=3, color=crossoverColor)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-07-12 11:44:49

안녕하세요 예스스탁입니다. 1 해당언어에서 rsi(close, 14)와 같이 rsi가 기준값과 기간을 지정해 계산을 하는데 아래와 같이 기간이 들어가는 자리에 누적값이 들어가는 경우가 있습니다. 해당 내용은 기간을 누적값으로 지정하면 어떤 방법으로 계산되는지 알수 없습니다. positiveFlow = sum(volume * (change(hlc3) <= 0 ? 0 : hlc3), 14) negativeFlow = sum(volume * (change(hlc3) >= 0 ? 0 : hlc3), 14) mfiValue = rsi(positiveFlow, negativeFlow) mfiValue는 변환을 해드릴수 없습니다. 해당 값은 주석처리로 막고 나머지만 변환해 드립니다. 2 var : atrValue(0),priceRange(0); var : rsiValue(0),rsiValueNormalized(0),rsiColor(0); var : emaDiff(0),emaDiffNormalized(0),emaColor(0); var : fastMovingAverage(0),slowMovingAverage(0),macdv(0),macdSignal(0); var : macdHistogram(0),macdNormalized(0),macdSignalNormalized(0),macdHistogramNormalized(0); var : isMACDAbove(False),crossoverColor(0),crossoverValue(0); var : positiveFlow(0),negativeFlow(0),mfiValue(0),mfiValueNormalized(0); var : compositeValue(0),compositeNormalized(0),compositeColor(0),compositeStyle(0); var : hlc3(0),r1(0),r2(0),r3(0),r4(0),r5(0); atrValue = atr(9); priceRange = 2 * atrValue; // RSI rsiValue = rsi(14); r1 = iff((75)-(25) == 0 , 0.0001 , (75) - (25)); rsiValueNormalized = -1 + (((rsiValue - 25) / r1) * 2); rsiColor = iff(rsiValueNormalized <= 0 , orange , yellow); // Elliot Wave emaDiff = ema(close, 5) - ema(close, 35); r2 = iff(priceRange-(-priceRange) == 0 , 0.0001 , priceRange-(-priceRange)); emaDiffNormalized = -1 + (((emaDiff - (-priceRange)) / r2) * 2); emaColor = iff(emaDiff <= 0 , red , lime); // MACD fastMovingAverage = ema(close, 12); slowMovingAverage = ema(close, 26); macdv = fastMovingAverage - slowMovingAverage; macdSignal = ma(macdv, 9); macdHistogram = macdv - macdSignal; r3 = iff(priceRange-(-priceRange) == 0 , 0.0001 , priceRange-(-priceRange)); macdNormalized = -1 + (((macdv - (-priceRange)) / r3) * 2); macdSignalNormalized = -1 + (((macdSignal - (-priceRange)) / r3) * 2); macdHistogramNormalized = -1 + (((macdHistogram - (-priceRange)) / r3) * 2); isMACDAbove = macdv >= macdSignal; crossoverColor = iff(isMACDAbove , lime , red); crossoverValue = iff(CrossUp(macdv, macdSignal) or CrossDown(macdv, macdSignal) , macdSignalNormalized , Nan); // MFI hlc3 = (h+l+c)/3; positiveFlow = AccumN(volume * IFf(hlc3-hlc3[1] <= 0 , 0 , hlc3), 14); negativeFlow = AccumN(volume * IFf(hlc3-hlc3[1] >= 0 , 0 , hlc3), 14); //mfiValue = rsi(positiveFlow, negativeFlow); r4 = iff(75-25 == 0 , 0.0001 , 75 - 25); mfiValueNormalized = -1 + (((mfiValue - 25) / r4) * 2); // Composite compositeValue = emaDiffNormalized + rsiValueNormalized + macdHistogramNormalized + mfiValueNormalized; r5 = iff(4-(-4) == 0 , 0.0001 , 4 - (-4)); compositeNormalized = -1 + (((compositeValue - (-4)) / r5) * 2); compositeColor = iff(compositeValue <= 0 , red , lime); plot1(compositeNormalized, "Composite", compositeColor); plot2(macdSignalNormalized, "MacD Signal", crossoverColor); plot3(crossoverValue, "Crossover", crossoverColor); 즐거운 하루되세요 > 다올 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 변형 부탁 드립니다 // normalize values into the range -1 to +1 normalize(value, minValue, maxValue) => range = maxValue - minValue == 0 ? 0.0001 : maxValue - minValue -1 + (((value - minValue) / range) * 2) atrValue = atr(9) priceRange = 2 * atrValue // RSI rsiValue = rsi(close, 14) rsiValueNormalized = normalize(rsiValue, 25, 75) rsiColor = rsiValueNormalized <= 0 ? orange : yellow // Elliot Wave emaDiff = ema(close, 5) - ema(close, 35) emaDiffNormalized = normalize(emaDiff, -priceRange, priceRange) emaColor = emaDiff <= 0 ? red : lime // MACD fastMovingAverage = ema(close, 12) slowMovingAverage = ema(close, 26) macd = fastMovingAverage - slowMovingAverage macdSignal = sma(macd, 9) macdHistogram = macd - macdSignal macdNormalized = normalize(macd, -priceRange, priceRange) macdSignalNormalized = normalize(macdSignal, -priceRange, priceRange) macdHistogramNormalized = normalize(macdHistogram, -priceRange, priceRange) isMACDAbove = macd >= macdSignal crossoverColor = isMACDAbove ? lime : red crossoverValue = cross(macd, macdSignal) ? macdSignalNormalized : na // MFI positiveFlow = sum(volume * (change(hlc3) <= 0 ? 0 : hlc3), 14) negativeFlow = sum(volume * (change(hlc3) >= 0 ? 0 : hlc3), 14) mfiValue = rsi(positiveFlow, negativeFlow) mfiValueNormalized = normalize(mfiValue, 25, 75) // Composite compositeValue = emaDiffNormalized + rsiValueNormalized + macdHistogramNormalized + mfiValueNormalized compositeNormalized = normalize(compositeValue, -4, 4) compositeColor = compositeValue <= 0 ? red : lime compositeStyle = histogram // Plots plot(compositeNormalized, title="Composite", color=compositeColor, style=area, linewidth=2, transp=60) plot(macdSignalNormalized, title="MacD Signal", style=line, linewidth=1, color=crossoverColor) plot(crossoverValue, title="Crossover", style=circles, linewidth=3, color=crossoverColor)