Взвешивание входящих значений от изменения API данных (Javascript) - PullRequest
0 голосов
/ 11 сентября 2018

Итак, на данный момент у меня есть некоторый код, который может взять данные из API WebSocket (в данном случае API транзакций с биткойнами) и «нормализовать» входящее значение, сохранив все предыдущие значения в массиве и затем найдя этовходящие значения помещаются в этот массив (после добавления).Затем он масштабирует это значение от -1 до 1, которое вы можете увидеть в функции normalize().

Это здорово, поскольку значения сильно различаются (от 0,0001 до 1000), однако я бы сейчас хотел вес это входящее значение (которое превращается в переменную normalVal, чтобы оно не отклонялось слишком далеко от 0 (среднего), и здесь я застрял для идей Can. Может кто-нибудьпомочь? Это может быть больше прямой математической проблемы, но я подумал, что я попробую здесь на SO. Заранее спасибо!

var transactions = [];

function normalize( value, r1, r2 ) { 
    return ( value - r1[ 0 ] ) * ( r2[ 1 ] - r2[ 0 ] ) / ( r1[ 1 ] - r1[ 0 ] ) + r2[ 0 ];
}

eventToListenTo = 'tx'
room = 'inv'

var socket = io("https://blockexplorer.com/");

socket.on('connect', function() {
  // Join the room.
  socket.emit('subscribe', room);
});

socket.on(eventToListenTo, function(data) {
  let value = data.valueOut;
  $('#value').text(value);
  transactions.push(value);
  transactions.sort((a, b) => a - b);
  let min = transactions[0];
  let max = transactions.slice(-1)[0];
  let normalVal = normalize(value, [min, max], [-1, 1]);
  
  $('#min').text(min);
  $('#max').text(max);
  $('#normal').text(normalVal);
  
  $('#counter').text(transactions.length);
});
div {
  font-family: helvetica;
}

span {
  color: red;
}

span#normal {
  color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://blockexplorer.com/socket.io/socket.io.js"></script>
<add name='Access-Control-Allow-Origin' value="*" />

<body>
  <div>Incoming: <span id="value">Connecting</span></div>
  <div>Min: <span id="min"></span></div>
  <div>Max: <span id="max"></span></div>
  <div>Normalize: <span id="normal"></span></div>
  <br>
  <div>Counter: <span id="counter"></span></div>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...