Tucsky / SignificantTrades

better than 1 min chart
https://aggr.trade
GNU General Public License v3.0
621 stars 211 forks source link

Question #111

Closed AkliOnet closed 3 years ago

AkliOnet commented 3 years ago

Salut , beau projet .. J'aimerai faire quelques modifications afin d'avoir une liste des pairs (une dizaines de pair que j'aurais sélectionnées) pour une exchange classées par le nombre d'achats et de ventes pour la période de 5mn par ex. J'ai jeter un œil au code mais j'aurai aimé avoir quelque directive de ta part svp

AkliOnet commented 3 years ago

Et si j'ai bien compris la branche subscription et multiserver sont les plus avancés ?

Tucsky commented 3 years ago

J'ai mis à jour feature/multiserver avec ce que avait sur mon pc que j'avais pas push depuis plusieurs mois :) Pas production ready hein mais constitue une bonne base pour agréger les données pour ton compte 2020-10-18 16 17 47

A partir de là tu fait un petit script qui se connecte en ws sur le flux mis à dispo par multiserver... Ensuite pour ce qui est de compter le volume sur une période en temps réel (les "counters" sur aggr.trade si j'ai bien compris?) l'approche la + simple est d'ajouter les trades reçus dans un tableau, régulièrement supprimer ceux qui sorte de ta période (ex 5min), et compter le volume présent dans le tableau.

Après il y a plusieurs solutions pour optimiser ça comme

AkliOnet commented 3 years ago

C'est très sympa ! merci .. Si je degage un peu de revenue de mon activité de trading je ne manquerai pas de te remercié. Je pense que je vais faire ça avec un tableau. Je vais voir merci en tout cas 👍

AkliOnet commented 3 years ago

Si tu a crée le script feed.js juste pour la démo je veux bien voir un aperçu ! Ca fait faignant mais j'ai pas codé depuis un moment !

Tucsky commented 3 years ago

@AkliOnet

feed.js

const WebSocket = require("ws"); // requis pour nodejs (pas besoin si executé côté browser)

const WS_URL = "ws://localhost:3000";

const pairs = process.argv.slice(2); // ex: ['BTCUSD', 'ETHUSD']

const ws = new WebSocket(WS_URL + "/" + pairs.join("+"));

ws.on("open", function open() {
  console.log("connected to " + WS_URL);
});

ws.on("message", function incoming(data) {
  let json

  try {
    json = JSON.parse(data);
  } catch (error) {
    console.log('invalid json', data)
    return
  }

  if (json && Array.isArray(json) && json.length === 2) {
    console.log(
      `${json[0]}\n\t${json[1].map((trade) => trade.join(" ")).join("\n\t")}\n`
    );
  } else {
    console.log(json);
  }
});