예스스탁
예스스탁 답변
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)