changed unreliability indicator

This commit is contained in:
Manuel Simon Hirsig
2016-03-18 00:31:40 +01:00
parent 40dfef86cb
commit 74ae026961
2 changed files with 13 additions and 7 deletions
+11 -5
View File
@@ -38,7 +38,7 @@ function private.read_record(item_key)
record = private.new_record()
end
if record.next_push < time() then
if record.next_push <= time() then
private.push_record(record)
private.write_record(item_key, record)
end
@@ -80,9 +80,10 @@ function public.price_data(item_key)
end
function public.value(item_key)
if not private.value_cache[item_key] then
if not private.value_cache[item_key] or private.value_cache[item_key].next_push <= time() then
local item_record = private.read_record(item_key)
local value, unreliable
if getn(item_record.data_points) > 0 then
local weighted_values = {}
local total_weight = 0
@@ -95,13 +96,18 @@ function public.value(item_key)
weighted_value.weight = weighted_value.weight / total_weight
end
private.value_cache[item_key] = private.weighted_median(weighted_values)
value = private.weighted_median(weighted_values)
-- not seen in the last week or not ignoring at least two high and low outliers
unreliable = item_record.data_points[1].time < time() - 60 * 60 * 24 * 7 or weighted_values[1].weight + (weighted_values[2] and weighted_values[2].weight or 0) >= 0.5
else
private.value_cache[item_key] = private.market_value(item_record)
value = private.market_value(item_record)
unreliable = true
end
private.value_cache[item_key] = {value=value, unreliable=unreliable, next_push=item_record.next_push}
end
return private.value_cache[item_key]
return private.value_cache[item_key].value, private.value_cache[item_key].unreliable
end
function public.market_value(item_key)
+2 -2
View File
@@ -71,7 +71,7 @@ function private.extend_tooltip(tooltip, hyperlink, quantity)
local item_key = (item_id or 0)..':'..(suffix_id or 0)
local value = Aux.history.value(item_key)
local value, unreliable = Aux.history.value(item_key)
local value_line = 'Value: '
@@ -79,7 +79,7 @@ function private.extend_tooltip(tooltip, hyperlink, quantity)
local _, _, data_points = Aux.history.price_data(item_key)
-- mark as unreliable if less than 5 data points in the last month
if value and (not data_points[5] or data_points[5].time < time() - 60 * 60 * 24 * 30) then
if value and unreliable then
value_line = value_line..' (?)'
end