Подскажите по расчёту фибо уровней

 

У индикатора есть 5 фибо уровней: 0.0, 23.6, 38.2, 50.0, 61.8
В диапазоне этих уровней гуляет текущая цена в пунктах (цен нет) 
Получается имеем 5 уровней и разницу в пунктах от точки открытия до текущей точки

Например:

Точка открытия =154
Текущая точка =131
Дистанция между точками (154 - 131) =23

Как рассчитать на каком уровне находится текущая точка?
В расчёт я думаю надо брать максимальный фибо  61.8, точку открытия 154 и дистанцию 23

 
forex2030:

У индикатора есть 5 фибо уровней: 0.0, 23.6, 38.2, 50.0, 61.8
В диапазоне этих уровней гуляет текущая цена в пунктах (цен нет) 
Получается имеем 5 уровней и разницу в пунктах от точки открытия до текущей точки

Например:

Точка открытия =154
Текущая точка =131
Дистанция между точками (154 - 131) =23

Как рассчитать на каком уровне находится текущая точка?

Обычная пропорция. Только нужно определиться, на каких ценовых значениях находятся уровень 0% и уровень 100%. Если эти данные известны, то можно любую цену перевести в % и наоборот: % в цену.

Например, 0% - 1.18843, 100% - 1.20159. Получаем, что высота сетки 0,01316.

Так, если нужно узнать, на какой цене 150%, то считаем следующим образом: 0.01316 * 150% / 100% + 1.18843 = 1,20817.

Если нужно узнать, сколько % будет при цене 1.17246, то считаем так: (1.17246 - 1.18843) / 0.01316 * 100% = -121.35%.

 
Ihor Herasko:

Только нужно определиться, на каких ценовых значениях находятся уровень 0% и уровень 100%. 

Например, 0% - 1.18843, 100% - 1.20159. Получаем, что высота сетки 0,01316.
Если нужно узнать, сколько % будет при цене 1.17246, то считаем так: (1.17246 - 1.18843) / 0.01316 * 100% = -121.35%.

Что-то не те показатели у меня получаются

Есть параметры дня

HI = iHigh(Symbol(), 1440, 0);  //Уровень 100%
LO = iLow(Symbol(), 1440, 0);  //Уровень 0%
OP = iOpen(Symbol(), 1440, 0);
CL = iClose(Symbol(), 1440, 0);

Надо получит % при CL
===========================================
Если делать так:
double Percent = MathAbs((HI-CL) / (HI-LO) * 100.0);

то рассчитывает вроде правильно, но в обратном направлении,
т.е. у меня 100% вверху и 0% внизу
этот расчёт увеличивает по движению цены вниз, а мне надо увеличивать вверх к 100%

 
Общая форма
forex2030:

Что-то не те показатели у меня получаются

Есть параметры дня

HI = iHigh(Symbol(), 1440, 0);  //Уровень 100%
LO = iLow(Symbol(), 1440, 0);  //Уровень 0%
OP = iOpen(Symbol(), 1440, 0);
CL = iClose(Symbol(), 1440, 0);

Надо получит % при CL

Здесь формула такая:   Х% = (Close - Low) * 100% / (High - Low).

Только не забывайте проверять знаменатель на 0.

===========================================
Если делать так:
double Percent = MathAbs((HI-CL) / (HI-LO) * 100.0);

то рассчитывает вроде правильно, но в обратном направлении,
т.е. у меня 100% вверху и 0% внизу
этот расчёт увеличивает по движению цены вниз, а мне надо увеличивать вверх к 100%

Да, у Вас в формуле ошибка. Правильную формулу я привел.

 
Ihor Herasko:

Здесь формула такая:   Х% = (Close - Low) * 100% / (High - Low).
Да, у Вас в формуле ошибка. Правильную формулу я привел.

Тоже самое рассчитывает по этой формуле
Сделал по другому, направление расчёта правильное (верх-низ) и вроде процент расчёта правильный

double  MaxFibo = 61.8 ;
double Percent  =  (CL-LO) / (HI - LO) * MaxFibo;

 
forex2030:

У индикатора есть 5 фибо уровней: 0.0, 23.6, 38.2, 50.0, 61.8
В диапазоне этих уровней гуляет текущая цена в пунктах (цен нет) 
Получается имеем 5 уровней и разницу в пунктах от точки открытия до текущей точки

Например:

Точка открытия =154
Текущая точка =131
Дистанция между точками (154 - 131) =23

Как рассчитать на каком уровне находится текущая точка?
В расчёт я думаю надо брать максимальный фибо  61.8, точку открытия 154 и дистанцию 23

в пунктах (цен нет) - Если вам нужно знать на каком то уровне Фиба будет какая цена

то в параметрах описания нужно добавить знак 161.8(%$) 

ко всему уровни можно добавить и свои - не только по дефалту...

Файлы: