Получение максимума и минимума за определенное количества свечей

Страницы: 1
RSS
Получение максимума и минимума за определенное количества свечей, Нужен совет
 
Добрый день! Подскажите, как через getCandlesByIndex получить максимум и минимум за определенное количество свечей.
В моем случае нужно выбрать все максимумы свечей от свечи n2 - 33 до свечи n2 - 3 и выбрать из них максимальное значение. Из минимумов соответственно  минимальное значение.
 
sav 312,
Здравствуйте,
А в чем состоит проблема?
В том как получить данные?
Или в том как из этих данных найти min/max?
 
Цитата
Sergey Gorokhov написал:
sav 312  ,
Здравствуйте,
А в чем состоит проблема?
В том как получить данные?
Или в том как из этих данных найти min/max?
Сам алгоритм. Данные всех сечей нужно добавлять в массив и уже из него вытаскивать максимальное значение или есть другой путь?
 
sav 312,
Начнем с того что функции math.min и math.max принимают только список аргументов, не таблицы.
И тем более они не понимают таблицы состоящие из некоторого набора параметров.
А getCandlesByIndex как раз таки возвращает таблицы состоящие из параметров.
Т.е. чтобы найти min/max Вам в любом случае придется делать цикл, который пробежится по всем свечкам которые вернул getCandlesByIndex. А раз будет цикл, то и функции math.min и math.max применять нет особого смысла, ибо в этом же цикле можно определить min/max через банальный if.
Т.е. через getCandlesByIndex запрашиваете все нужные свечки.
Потом цикл который берет из них значение и ищет min/max
Вот и весь алгоритм.
 
Цитата
Sergey Gorokhov написал:
sav 312  ,
Начнем с того что функции math.min и math.max принимают только список аргументов, не таблицы.
И тем более они не понимают таблицы состоящие из некоторого набора параметров.
А getCandlesByIndex как раз таки возвращает таблицы состоящие из параметров.
Т.е. чтобы найти min/max Вам в любом случае придется делать цикл, который пробежится по всем свечкам которые вернул getCandlesByIndex. А раз будет цикл, то и функции math.min и math.max применять нет особого смысла, ибо в этом же цикле можно определить min/max через банальный if.
Т.е. через getCandlesByIndex запрашиваете все нужные свечки.
Потом цикл который берет из них значение и ищет min/max
Вот и весь алгоритм.
Сергей, спасибо. К сожалению не совсем понятно как через if. Может примерчик есть какой?
Свечи нужные через getCandlesByIndex я выбрал. А вот дальше....
 
Здравствуйте! Можно влезть с вопросом, чтобы не создавать отдельную тему? Можно ли как то получить минимумы максимумы за секундные интервалы данных - 1, 2, 3 секунды и так далее, а то есть только минутные
 
sav 312,

if x>y then
max = x
else
max = y
end
 
Цитата
Дмитрий написал:
а то есть только минутные

Функция getCandlesByIndex умеет получать тиковые данные.
В связи с чем, не совсем понятно в чем состоит проблема.
 
Цитата
Sergey Gorokhov написал:
Цитата
Дмитрий   написал:
а то есть только минутные
Функция getCandlesByIndex умеет получать тиковые данные.
В связи с чем, не совсем понятно в чем состоит проблема.
Делал так, но получаю максимум и минимум последней свечи. Прошу сильно не пинать))
local N2 = getNumCandles(CODE_INT);
t2,n2,i2 = getCandlesByIndex(CODE_INT, 0, 0, N2);

for i2 = n2 - 33, n2 - 3 do
local bar = t2[i2]
if bar then
mx = max(bar.high)
mn = min(bar.low)
end
end
 
[QUOTE]sav 312 написал:
Чтобы найти min/max надо сравнить минимум два числа, а у Вас только одно
mx = max(bar.high)
mn = min(bar.low)
 
sav 312,

max(123)
вернет 123

max (123,999)
вернет 999

так понятней?
 
Цитата
Sergey Gorokhov написал:
Цитата
Дмитрий   написал:
а то есть только минутные
Функция getCandlesByIndex умеет получать тиковые данные.
В связи с чем, не совсем понятно в чем состоит проблема.
Понятно, то есть сервер не дает секундные данные, а только тиковые
 
Цитата
Sergey Gorokhov написал:
sav 312  ,

max(123)
вернет 123

max (123,999)
вернет 999

так понятней?
Да конечно понятно)) Я не понимаю как мне все максимумы сравнить.
 
sav 312,
А зачем все?
сравнивайте текущее значение с предыдущим вот и всё
 
Цитата
Дмитрий написал:
Понятно, то есть сервер не дает секундные данные, а только тиковые

Посмотрите данные в таблице обезличенных сделок.
Если там данных нет, значит брокер действительно не включил для Вас тиковые данные
 
Цитата
Sergey Gorokhov написал:
sav 312  ,
А зачем все?
сравнивайте текущее значение с предыдущим вот и всё
Сергей, я понимаю, что мои вопросы вызывают, как минимум улыбку. Если не трудно, добавьте заветную пару строк в мой пример. Ну начинающий я)) То, что уже изучил - не забуду, а здесь торможу что-то..
 
Цитата
Sergey Gorokhov написал:
Цитата
Дмитрий   написал:
Понятно, то есть сервер не дает секундные данные, а только тиковые
Посмотрите данные в таблице обезличенных сделок.
Если там данных нет, значит брокер действительно не включил для Вас тиковые данные
Да тиковые данные есть у меня, мне не хочется их циклом обегать, а сразу получить готовые максимумы как для минутных интервалов
 
sav 312,
mx = max(bar.high,mx)
mn = min(bar.low,mn)
 
Цитата
Sergey Gorokhov написал:
sav 312  ,
mx = max(bar.high,mx)
mn = min(bar.low,mn)
Спасибо. Смеюсь над собой громче Вас))
 
Цитата
Дмитрий написал:
Да тиковые данные есть у меня, мне не хочется их циклом обегать, а сразу получить готовые максимумы как для минутных интервалов

Сразу получить не получится. Просто потому что в терминале этих данных нет.
Только высчитывать
Другой вопрос в том кто их будет высчитывать, Ваш скрипт или готовый индикатор.
Например индикатор фракталов может подойти.
 
Дмитрий,

К сожалению не с первого раза обратил внимание что речь про секундные интервалы. Трудно следить за перепиской когда два оппонента.

Для секундных интервалов готового решения нет. тк. в самом терминале их нет.
Только цикл.
 
Цитата
Sergey Gorokhov написал:
Цитата
Дмитрий   написал:
Да тиковые данные есть у меня, мне не хочется их циклом обегать, а сразу получить готовые максимумы как для минутных интервалов
Сразу получить не получится. Просто потому что в терминале этих данных нет.
Только высчитывать
Другой вопрос в том кто их будет высчитывать, Ваш скрипт или готовый индикатор.
Например индикатор фракталов может подойти.
Вот спасибо, до этого у меня мысли не доходили, что можно индикатор для этих целей использовать  
 
Цитата
Дмитрий написал:
можно индикатор для этих целей использовать

Можно, но только не стандартный.
Те же фракталы ищут min/max на заданном периоде, а в одной секунде количество тиков не определено.
Можете взять код из примеров https://forum.quik.ru/forum17/topic1157/
и попробовать переписать под свои нужды.
 
Цитата
Sergey Gorokhov написал:
Цитата
Дмитрий   написал:
можно индикатор для этих целей использовать
Можно, но только не стандартный.
Те же фракталы ищут min/max на заданном периоде, а в одной секунде количество тиков не определено.
Можете взять код из примеров  https://forum.quik.ru/forum17/topic1157/
и попробовать переписать под свои нужды.
У меня проще. Я как раз знаю количество тиков за какое мне нужно посчитать максимум и минимум
Страницы: 1
Читают тему
Наверх