От какого времени вести отчет для создания своего таймфрейма?

Страницы: 1
RSS
От какого времени вести отчет для создания своего таймфрейма?
 
Добрый день. Есть необходимость создания своего таймфрейма, а точнее сформировать 5 последних 10-секундных свечей. Каждые 10 секунд скрипт будет перебирать ленту сделок и производить расчет максимума, минимума, открытия и закрытия 5 последних свечей. Проблема в том, что не знаю, какое время взять за точку отсчета. Время сервера, время системы или еще что-нибудь.  
 
В данный момент делаю так:
Из OnAllTrade получаю время последнего трейда. Если оно к примеру больше чем 10.00.50, то сканирую ленту сделок от 10.00.50 до 10.00.00. Далее делаю расчет и т.д.
В этом случае мне не нужно ни время сервера ни системное время. Вопрос в том, как стартовое время 10.00.50 текущего дня перевести в формат POSIX.
 
Цитата
sav 312 написал:
Вопрос в том, как стартовое время 10.00.50 текущего дня перевести в формат POSIX.
А почему просто не перевести время в количество секунд, и потом нормально сравнивать?
 
Цитата
Sergey Gorokhov написал:
А почему просто не перевести время в количество секунд, и потом нормально сравнивать?
Наверное не правильно изложил свою мысль. Мне это и нужно. Как это сделать?
 
https://www.lua.org/manual/5.1/manual.html#pdf-os.date
https://www.lua.org/manual/5.1/manual.html#pdf-os.time
Код
local date = os.date("*t")
local timeFromDate = os.time(date)
local dateFromTime = os.date("*t",timeFromDate)
 
sav 312,
Простая математика
часы умножаем на 3600 + минуты умножаем на 60 + секунды
 
Цитата
Sergey Gorokhov написал:
Простая математикачасы умножаем на 3600 + минуты умножаем на 60 + секунды
Сергей, мне это понятно, с математикой все хорошо. Просто время в ленте сделок, а сравнивать я буду именно с ним, насколько я понимаю не просто время в секундах, а время в секундах от какой-то древней даты))) Вот я подумал, что нужно переводить мои "10.00.50" в тот формат каким-то образом. Возможно я что-то опять не так понял))
 
Цитата
sav 312 написал:
время в секундах от какой-то древней даты)))
Совершенно не понятно зачем это?
Будет проще если Вы приведете конкретный пример, и поясните чем не устраивает предложенный вариант.
 
Цитата
Sergey Gorokhov написал:
Совершенно не понятно зачем это?Будет проще если Вы приведете конкретный пример, и поясните чем не устраивает предложенный вариант.
Если в ленте сделок просто время в секундах без привязки к дате, то этот вариант самый простой и меня устраивает.
 
Цитата
sav 312 написал:
Если в ленте сделок просто время в секундах без привязки к дате, то этот вариант самый простой и меня устраивает.

Опять не понятно. Ощущение что мы про разные вещи говорим.
Что значит с привязкой к дате?
Вы боитесь что время 10:00:50 может дать результат не сегодняшней сделки а вчерашней? Или как?
Если боитесь, то просто отфильтровывайте все сделки, у которых дата сделки не равна дате торгов (так фильтруются сделки вечерней сессии фортс).
Все остальные сделки и так только за текущую сессию, и нет смысла проверять дату.
 
Цитата
Sergey Gorokhov написал:
Опять не понятно. Ощущение что мы про разные вещи говорим.Что значит с привязкой к дате?Вы боитесь что время 10:00:50 может дать результат не сегодняшней сделки а вчерашней? Или как?Если боитесь, то просто отфильтровывайте все сделки, у которых дата сделки не равна дате торгов (так фильтруются сделки вечерней сессии фортс).Все остальные сделки и так только за текущую сессию, и нет смысла проверять дату.
Давайте попробуем иначе. Вот кусочек кода:
Код
for i = getNumberOf('all_trades') - 1,0,-1 do  
local t = getItem("all_trades", i);        
if t.sec_code == SECCODE and t.class_code == CLASSCODE then          
time_sdelki = os.time(t.datetime)           
if  time_sdelki > "ЗДЕСЬ ДОЛЖНЫ БЫТЬ МОИ 10:00:50 только в секундах, т.к. к примеру time_sdelki = 1543578360 (это 14:46 текущего дня)" then   …… 

Путем умножения, как вы предлагали часов на 3600 + минут на 60 + секунды мы не придем к формату time_sdelki. Сергей, Вы профи, а я начинающий поэтому могу не уловить с полуслова.

 
Цитата
sav 312 написал:
Давайте попробуем иначе. Вот кусочек кода:
Код
time_sdelki  =   os.time (t.datetime)
 Путем умножения, как вы предлагали часов на 3600 + минут на 60 + секунды мы не придем к формату time_sdelki. Сергей, Вы профи, а я начинающий поэтому могу не уловить с полуслова.

sav 312,
Ваш расчет time_sdelki - это путь воина, который Вы сами себе избрали. Можно делать и так, но кто мешает сделать немного по-другому:
Код
time_sdelki  =  t.datetime.hour * 3600 + t.datetime.min * 60 + t.datetime.sec + t.datetime.ms / 1000
Получите время сделки в секундах с начала сегодняшних суток.
 
Цитата
SDL написал:
Ваш расчет time_sdelki - это путь воина, который Вы сами себе избрали. Можно делать и так, но кто мешает сделать немного по-другому:
Вот ваш ответ мне сразу понятен! Спасибо, но тут дело принципа уже)) Как мое время "10:00:50" в этот формат перевести. Без иронии, сделаю как Вы советовали, просто нужно для себя разобраться.
 
Цитата
sav 312 написал:
Как мое время "10:00:50" в этот формат перевести.
Только добавить текущую дату.
Хотя как сказал SDL,  это явно лишнее.
 
Цитата
Sergey Gorokhov написал:
Только добавить текущую дату.Хотя как сказал  SDL ,  это явно лишнее.
Если так, то да. Спасибо.
 
Цитата
sav 312 написал:
Спасибо, но тут дело принципа уже)) Как мое время "10:00:50" в этот формат перевести.

Пожалуйста:
Код
-- Текущие дата/время в виде таблицы:
dt_table = os.date("*t", os.time())
-- Теперь ставим время какое хотим:
dt_table.hour = 10
dt_table.min = 0
dt_table.hour = 50
-- ...и обратно в число:
my_time = os.time(dt_table)

Да, это является самым корректным способом при сравнении отметок времени. Всё зависит от конкретных условий, можно использовать упрощенный подход или нет. Вот, например, на срочном рынке в текущую сессию включаются сделки за вчерашнюю вечернюю сессию, т.е. перед сделкой сегодня за 10:00:00 в ТВС будет читаться запись за вчера за 23:49:59. Смотрите сами, чтобы не было некорректной работы вашего алгоритма.
 
Цитата
SDL написал:
Да, это является самым корректным способом при сравнении отметок времени. Всё зависит от конкретных условий, можно использовать упрощенный подход или нет. Вот, например, на срочном рынке в текущую сессию включаются сделки за вчерашнюю вечернюю сессию, т.е. перед сделкой сегодня за 10:00:00 в ТВС будет читаться запись за вчера за 23:49:59. Смотрите сами, чтобы не было некорректной работы вашего алгоритма.
Спасибо за отклик. Предложенный Вами вариант взял на вооружение!
Страницы: 1
Читают тему
Наверх