Добрый день.
Уже много лет я пользуюсь кодом для расчёта среднего спреда по акции:
Его написал один добрый человек на каком-то трейдерском форуме по Луа. Уже не помню где и кто.
Этот код считает средний спред безостановочно по всем значениям, даже если их будет миллион.
Подскажите пожалуйста как видоизменить код, чтобы он считал спред за последние 1000 значений? Мне приходит на ум только создание таблицы с 1000 полями, которые будут обновляться, а старые (ненужные) удаляться. Может быть есть более красивый вариант? Благодарю за советы
Уже много лет я пользуюсь кодом для расчёта среднего спреда по акции:
Код |
---|
--Внутри колбека OnParam --Считаем средний спред local tablebid = getParamEx(class_code, fff, "bid") --получаем таблицу "bid" local bid=tablebid.param_value --из таблицы берём значение local tableoffer = getParamEx(class_code, fff, "offer") --получаем таблицу "offer" local offer=tableoffer.param_value --из таблицы берём значение local p_spread = (offer - bid) / bid * 100 --считаем текущий спред по бумаге local elem = average_spreads[fff] --создаём таблицу для хранения расчётных данных if elem == nil then average_spreads[fff] = { Count = 1, Spread = p_spread, Avr = p_spread} elem = average_spreads[fff] else elem.Spread = p_spread elem.Avr = (elem.Avr * elem.Count + p_spread) / (elem.Count + 1) elem.Count = elem.Count + 1 spread[fff]=elem.Avr end |
Этот код считает средний спред безостановочно по всем значениям, даже если их будет миллион.
Подскажите пожалуйста как видоизменить код, чтобы он считал спред за последние 1000 значений? Мне приходит на ум только создание таблицы с 1000 полями, которые будут обновляться, а старые (ненужные) удаляться. Может быть есть более красивый вариант? Благодарю за советы