АвторСообщение



Сообщение: 12
Зарегистрирован: 14.02.14
Репутация: 0
ссылка на сообщение  Отправлено: 17.03.14 15:15. Заголовок: Получение максимума цены за определенное время


Здравствуйте подскажите как получить максимум или минимум за определенное время например на графике м5 к примеру время час дня нам надо узнать максимальную цену за период открытия торгового дня до например десяти часов тридцати минут как составить такую функцию которая будет вычислять максимум и минимум за определенный промежуток времени но не с нулевого бара.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]







Сообщение: 380
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 20.03.14 14:25. Заголовок: Добрый день. Для тог..


Добрый день.
Для того чтобы решить какую-либо задачу, необходимо разбить ее на множество мелких подзадач, каждая из которых является неким элементарным действием. Применительно к этой задаче нужно исходить из того, что максимум и минимум цен вычисляются при помощи функций iHighest и iLowest. Причем функции возвращают только индекс бара экстремума. Чтобы получить значение экстремума необходимо к результату применить функции iHigh и iLow соответственно.

Для функций iHighest и iLowest необходимо знать, с какого бара начинать поиск. Так как поиск производится справа налево по графику, то нужно знать индекс крайнего правого бара интервала. К нему будет добавлено количество баров, составляющих интервал. Чтобы найти это количество, потребуется найти индекс бара, являющегося крайним левым баром интервала по графику. В итоге приходим к следующему алгоритму:

1. Найти индексы баров нужного таймфрейма, составляющие границы интервала.
2. Вычислить длину интервала (разность значений найденных в п. 1).
3. Найти индекс бара экстремума интервала.
4. Определить значение экстремума по индексу бара из п. 3.

Причем п. 1 разбивается еще на две задачи:
1.1 Найти индекс бара левой границы интервала - первый бар текущего дня.
1.2 Найти индекс бара правой границы интервала - бар текущего дня с указанным временем.

Решение для п. 1.1 (пройти все бары, начиная от текущего, до того бара, у которого номер дня в году не будет равен номеру текущего дня в году):

 цитата:

int currentDay = TimeDayOfYear(TimeCurrent());
int total = iBars(NULL, i_usedTF);

for (int i = 1; i < total; i++)
{
datetime barTime = iTime(NULL, i_usedTF, i);
if (TimeDayOfYear(barTime) != currentDay)
return i - 1;
}



Решение для п. 1.2 (пройти все бары, начиная от текущего, до того бара, у которого количество минут за текущий день меньше или равно количеству минут за день заданного времени):

 цитата:
rightBarIndex = -1;
int total = iBars(NULL, i_usedTF);

for (int i = 1; i < total; i++)
{
int dayMinutes = TimeHour(barTime) * 60 + TimeMinute(barTime);
datetime nextBarTime = iTime(NULL, i_usedTF, i - 1);
int nextBarMinutes = TimeHour(nextBarTime) * 60 + TimeMinute(nextBarTime);
if (dayMinutes <= specifiedMinutes && nextBarMinutes > specifiedMinutes)
return i;
}



Эти два пункта объединяем в одну функцию GetIntervalsLimits (см. ссылку на код скрипта ниже).

Решение для п. 2 (dayBeginBar - начальный бар дня, daySpecifiedBar - бар, соответствующий искомому времени дня):

 цитата:
int cnt = dayBeginBar - daySpecifiedBar + 1;



Решение для п. 3 (на примере максимума):

 цитата:
int highBar = iHighest(NULL, i_usedTF, MODE_HIGH, cnt, daySpecifiedBar);



Решение для п. 4:

 цитата:
double high = iHigh(NULL, i_usedTF, highBar);



Исходный код скрипта, решающего поставленную задачу - здесь.

Ну и в процессе решения задачи не стоит забывать о проверке корректности исходных данных и доступности данных заданного таймфрейма.

Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 13
Зарегистрирован: 14.02.14
Репутация: 0
ссылка на сообщение  Отправлено: 21.03.14 14:47. Заголовок: Здравствуйте, спасиб..


Здравствуйте, спасибо большое очень доступно пояснили. Но не могу разобраться с еще одной проблемой не могу понять, как получить значение цены определенного уровня объекта фибонанчи. Допустим эксперт нарисовал объект Фибо нужно получить значение цены уровня 1.618,функцию получения: описания уровня я нашел в справочнике, а вот чтоб цену уровня получить не как не могу найти, подскажите пожалуйста за ранее спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 387
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 28.03.14 20:27. Заголовок: Напрямую ценовые зна..


Напрямую ценовые значения уровней сетки или расширения Фибоначчи получить нельзя. Их требуется рассчитывать.

Для этого потребуется получить цены начального и конечного уровней объекта:

 цитата:
double price1 = ObjectGet(name, OBJPROP_PRICE1);
double price2 = ObjectGet(name, OBJPROP_PRICE2);



Это цены, соответствующие 0% и 100% сетки Фибоначчи, вне зависимости от реального наличия этих уровней у сетки. К сожалению, если неизвестно направление развертывания сетки, то точно узнать, какой из этих уровней 0%, а какой - 100%, не получится.

После получения этих данных нам нужно определиться, цену какого уровня нужно рассчитать. Возьмем, к примеру, уровень 61.8%:

 цитата:
double price618 = MathAbs(price1 - price2) * 61.8 / 100;



Таким образом, мы нашли относительное положение уровня 61.8 на "шкале" сетки. Для нахождения абсолютного значения цены нужно знать направление сетки, т. е., какой из (price1; price2) является 0%.
Если 0% - price1 и это значение больше, чем 100%, то искомая цена будет:

 цитата:
double absPrice = price1 - price618;


Если же price1 меньше price2 и 0% - это именно price1, то соответственно:

 цитата:
double absPrice = price1 + price618;



Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 14
Зарегистрирован: 14.02.14
Репутация: 0
ссылка на сообщение  Отправлено: 29.03.14 00:53. Заголовок: Благодарю за ответ!..


Благодарю за ответ!

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет