danghungithp's picture
Upload 1398 files
bec48e1 verified
raw
history blame contribute delete
954 Bytes
export function calculateMFI(prices, volumes, period = 14) {
const mfiValues = [];
const typicalPrices = prices.map((price, index) => {
return (price.high + price.low + price.close) / 3;
});
for (let i = 0; i < typicalPrices.length; i++) {
if (i < period) {
mfiValues.push(null);
continue;
}
const gain = typicalPrices.slice(i - period + 1, i + 1).reduce((acc, price, index) => {
return acc + (price > typicalPrices[i - period + index] ? volumes[i - period + index] : 0);
}, 0);
const loss = typicalPrices.slice(i - period + 1, i + 1).reduce((acc, price, index) => {
return acc + (price < typicalPrices[i - period + index] ? volumes[i - period + index] : 0);
}, 0);
const moneyFlowRatio = gain / loss || 0;
const mfi = 100 - (100 / (1 + moneyFlowRatio));
mfiValues.push(mfi);
}
return mfiValues;
}