graph std deviation

This commit is contained in:
Alexander Drozdov
2020-02-28 03:59:46 +02:00
parent b3deabbec0
commit 9dcc7b4849
+29 -7
View File
@@ -14,19 +14,22 @@
</div>
<div class="px-2 text-center">
<div class="leading-tight">
<i v-if="trend.receive.totalChange < 0" class="fas fa-angle-double-down pr-1 text-red-600"></i>
<i v-if="trend.receive.totalChange > 0" class="fas fa-angle-double-up pr-1 text-green-500"></i>
<i v-if="trend.receive.totalChange === 0" class="fas fa-equals pr-1 text-gray-600"></i>
<span>{{ trend.receive.totalChange | displayRounding }}&nbsp;%</span>
<i v-if="trend.changeStr === 'down'" class="fas fa-angle-double-down pr-1 text-red-600"></i>
<i v-if="trend.changeStr === 'up'" class="fas fa-angle-double-up pr-1 text-green-500"></i>
<span v-if="trend.changeStr === 'const'" class="pr-1 text-gray-600 font-sans leading-none">±</span>
<span>{{ trend.changeVal * 2 | displayRounding }}&nbsp;%</span>
</div>
<div class="text-xs text-gray-500 leading-none">Last 7 days</div>
</div>
<div class="w-12 h-8">
<trend-chart :datasets="[{
<trend-chart padding="2"
:datasets="[{
data: trend.receive.graphPoints,
smooth: true,
fill: true
}]" padding="2" />
}]"
:min="Math.min(...trend.receive.graphPoints) - trend.changeVal"
:max="Math.max(...trend.receive.graphPoints) + trend.changeVal" />
</div>
</div>
</template>
@@ -65,7 +68,26 @@ export default {
? { val: trend.receive.chaosValue, curr: 'c' }
: Prices.autoCurrency(trend.receive.chaosValue, 'c')
return { price, ...trend }
let changeStr = 'const'
if (trend.receive.graphPoints.length === 7) {
if (
trend.receive.graphPoints.filter(p => p > 0).length >= 4 ||
trend.receive.graphPoints.slice(4).every(p => p > 0)
) {
changeStr = 'up'
} else if (
trend.receive.graphPoints.filter(p => p < 0).length >= 4 ||
trend.receive.graphPoints.slice(4).every(p => p < 0)
) {
changeStr = 'down'
}
}
const n = trend.receive.graphPoints.length
const mean = trend.receive.graphPoints.reduce((a, b) => a + b) / n
const changeVal = Math.sqrt(trend.receive.graphPoints.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / (n - 1))
return { price, ...trend, changeStr, changeVal }
},
isValuableBasetype () {
return isValuableBasetype(this.item)