return function sorter (a, b) {
    var result
    var x = objectGet(a, property)
    var y = objectGet(b, property)

    if (!t.isDefined(x) && t.isDefined(y)) {
      result = -1
    } else if (t.isDefined(x) && !t.isDefined(y)) {
      result = 1
    } else if (!t.isDefined(x) && !t.isDefined(y)) {
      result = 0
    } else if (customOrder && customOrder[property]) {
      result = customOrder[property].indexOf(x) - customOrder[property].indexOf(y)
    } else {
      result = x < y ? -1 : x > y ? 1 : 0
    }

    if (result === 0) {
      if (props.length) {
        property = props.shift()
        return sorter(a, b)
      } else {
        props = properties.slice(0)
        property = props.shift()
        return 0
      }
    } else {
      props = properties.slice(0)
      property = props.shift()
      return result
    }
  }
Exemple #2
0
 Object.keys(d[e]).forEach(function (pair) {
   var de = d[e][pair]
   de['sma'] || (de['sma'] = {})
   var r = de['sma']
   r.ansi = ''
   var close_lookback = lookback.filter(function (tick) {
     return !!o(tick, 'data.trades.' + e + '.' + pair)
   }).map(function (tick) {
     return o(tick, 'data.trades.' + e + '.' + pair + '.close')
   })
   if (close_lookback.length > c.sma_periods - 1) {
     close_lookback = close_lookback.slice(close_lookback.length - c.sma_periods + 1)
   }
   r.samples = close_lookback.length
   r.last_close = o(tick, 'data.trades.' + e + '.' + pair + '.close')
   if (!r.last_close) return
   r.sum = close_lookback.reduce(function (prev, curr) {
     return prev + curr
   }, r.last_close)
   r.value = n(r.sum).divide(close_lookback.length + 1).value()
   r.samples++
   r.close_lookback = close_lookback
 })
Exemple #3
0
 }).map(function (tick) {
   return o(tick, 'data.trades.' + e + '.' + pair + '.close')
 })
Exemple #4
0
 var close_lookback = lookback.filter(function (tick) {
   return !!o(tick, 'data.trades.' + e + '.' + pair)
 }).map(function (tick) {