TradingView - платформа для просмотра и анализа биржевых котировок. Преимуществом данной платформы является то, что разработчиками был создан свой собственный язык программирования Pine, который позволяет создавать свои собственные индикаторы и сигналы.

Индекс денежного потока (MFI, Money Flow Index)

Больше
01 сен 2022 20:54 - 01 сен 2022 20:57 #34 от roman
Рассмотрим алгоритм создания технического индикатора Money Flow Index (MFI) с помощью языка Pine в торговой платформе TradingView.
Расчет значения технического индикатора Money Flow Index состоит из нескольких этапов.
1.Сначала определяют типичную цену (Typical Price, TP) данного периода: TP = (HIGH + LOW + CLOSE) / 3
2. Затем рассчитывается величина денежного потока (Money Flow, MF): MF = TP * VOLUME
Если сегодняшняя типичная цена больше вчерашней, то денежный поток считается положительным. Если сегодняшняя типичная цена меньше вчерашней — денежный поток считается отрицательным.
Положительный денежный поток (POSITIVE MONEY FLOW) — это сумма значений положительных денежных потоков за выбранный период. Отрицательный денежный поток (NEGATIVE MONEY FLOW) — это сумма значений отрицательных денежных потоков за выбранный период.
3.  Индекс денежных потока определяется с помощью следующего выражения:
MFI = 100 - (100 / (1 + POSITIVE MONEY FLOW / NEGATIVE MONEY FLOW
Таким образом, код будет выглядеть следующим образом:

//Код представлен для TradingView. Версия PineCode v4.
//@version=4
study(title="Money Flow Index (MFI)")
length_mfi=10
mfi_src = (high + low + close)/3
mfi_upper = sum(volume * (change(mfi_src) <= 0 ? 0 : mfi_src), length_mfi)
mfi_lower = sum(volume * (change(mfi_src) >= 0 ? 0 : mfi_src), length_mfi)
mfi_Buffer=(mfi_lower!=0?100.0-100.0/(1+mfi_upper/mfi_lower):100.0)
plot(mfi_Buffer ? mfi_Buffer : na, color=color.red, style = plot.style_line, linewidth = 2, transp = 10)


В используемом коде применяются следующие функции:
sum(y,x) - Функция 'sum' возвращает сумму последних 'y' значений за 'x' баров назад.
change(y) - Функция для определения разницы между текущим и предыдущим значением: y[0]-y[1]
plot(series, title, style, color, linewidth) - Функция, которая отображает данные на графике.
series (series) Массив данных, который нужно графически отобразить.
title (const string) Заголовок plot.
style (integer) Тип графика: line, stepline, histogram, cross, area, columns, circles (Значение по умолчанию line).
color (color) Цвет plot. Вы можете использовать такие константы, как 'color=red' или 'color=#ff001a', а также сложные выражения, например, 'color = close >= open ? green : red'. Дополнительный аргумент.
linewidth (integer) Ширина отображаемой линии, значения от 1до 4. Значение по умолчанию 1. Нельзя применить ко всем стилям.
expr1 ? expr2 : expr3 - Тернарный оператор, который является альтернативой условному оператору if-else.

Результат в торговой платформе TradingView.
 
Последнее редактирование: 01 сен 2022 20:57 пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
01 сен 2022 20:55 - 01 сен 2022 20:58 #35 от roman
Также индикатор Money Flow Index (MFI) можно переписать в виде функции:

//Код представлен для TradingView. Версия PineCode v4.
//@version=4
function_MFI(mfi_src, length_mfi) =>
mfi_upper = sum(volume * (change(mfi_src) <= 0 ? 0 : mfi_src), length_mfi)
mfi_lower = sum(volume * (change(mfi_src) >= 0 ? 0 : mfi_src), length_mfi)
mfi_Buffer=(mfi_lower!=0?100.0-100.0/(1+mfi_upper/mfi_lower):100.0)
mfi_Buffer


Входными величинами являются следующие переменные:
mfi_src - массив цен
length_mfi - период усреднения

Выходными величинами являются следующие переменные:
mfi_Buffer - массив значений MFI

Обращение к функции выполняется следующим образом:

mfi_Buffer=function_MFI((high + low + close)/3 , 10)
plot(mfi_Buffer ? mfi_Buffer : na, color=color.red, style = plot.style_line, linewidth = 2, transp = 10)
Последнее редактирование: 01 сен 2022 20:58 пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум
Пользовательское соглашение.

По всем возникшим вопросам Вы можете обратиться к администрации сайта по электронной почте (administrator@simenergy.ru) или с помощью формы обратной связи.

Статистика сайта:
Яндекс.Метрика