[Google Sheets] Cotation temps réel des cryptos (Binance / websocket)

salut, j'ai presque fini mon gabarit, avant j'ai regardé ton fichier mis à jour. J'ai rajouté deux variables, le volume et le nombre de trades.

Par contre, j'ai l'impression que les données sont identiques dans les 3 unités de temps, bizarre :

result.push([ data.k.l , data.k.c , data.k.h, data.k.q, data.k.n ]) sh.getRange(ligne,colonne,1,5).setValues(result)

Aurais-je merdé quelque part ?

j'ai l'impression que les données sont identiques dans les 3 unités de temps, bizarre :

result.push([ data.k.l , data.k.c , data.k.h, data.k.q, data.k.n ]) sh.getRange(ligne,colonne,1,5).setValues(result)

oui et non

cotation est forcément toujours la même valeur (ou presque puisque les relevés entre les 3 temps ne sont pas synchronisés, une seule trame est émise à la fois et le tout dans un ordre aléatoire

par contre les mini et maxi (l et h) sont les mini et maxi selon la période observée ... mais je pense qu'entre 1, 5 et 15mn il y a souvent peu de différences, il faudrait mettre la semaine, le jour et la minute pour bien voir

je crois que je vais devenir fou...

J'ai créé mon gabarit brut avec des données fictives, maintenant je veux juste ma feuille vierge, et créer le design autour des klines.

Pour faire simple, sur ma feuille, j'ai besoin des 7 premières lignes que je vais verrouiller pour des autres éléments, et que les 2 premières colonnes soient libres.

En gros il faudrait que je démarre en C8, et bien tu me croiras si tu veux, ca fait deux heures que j'essaie, je n'y arrives pas… Un vrai bourricot ...

const pairs = sh.getRange('C8:C').getValues().join().split(",");

const periods = sh.getRange('C8:8').getValues().join().split(",")

Je suis en train de m'embrouiller les pédales … Je vais aller manger un morceau, ca va peut être me remettre les idées dans le bon sens !

image

Presque bon…. Enfin, presque...

par contre je comprends que :

sh.getRange(ligne,colonne,1,3).setValues(result) envoies les valeurs dans la premiére ligne , et sur 3 colonnes a chaque unite de temps.

Mais je dois repartir en D8, et sur 3 colonnes, je ne peux donc pas faire sh.getRange(ligne,colonne,8,3).setValues(result) puisque ma ligne 8 est deja occupé par PAIR en C8.

Aurais tu un idée dans ton chapeau magique ? Un truc du style sh.getRange(ligne,colonne,('D8'),3.g).setValues(result)? Parceque ca ca ne fonctionne pas

screen

Attention

sh.getRange(ligne,colonne,1,3).setValues(result) envoies les valeurs dans la premiére ligne , et sur 3 colonnes a chaque unite de temps.

Mais je dois repartir en D8, et sur 3 colonnes, je ne peux donc pas faire sh.getRange(ligne,colonne,8,3).setValues(result) puisque ma ligne 8 est deja occupé par PAIR en C8.

alors, getRange(ligne,colonne,8,3) veut dire à partir de la ligne "ligne", à partir de la colonne "colonne", sur 8 lignes et 3 colonnes

j'avais écrit

sh.getRange(ligne,colonne,1,3).setValues(result)

si tu veux partir de D8 sur 3 colonnes (8ème ligne, 4ème colonne) ...

sh.getRange(8,4,1,3).setValues(result)

J'ai compris, merci encore, mais c'est bizarre , je ne récupère que cela avec sh.getRange(8,4,1,3).setValues(result)

screen2

...

en regardant en fait il me mets les résultats de toutes les paires sur la meme ligne

il faut adapter le premier terme en recherchant sur quelle ligne il faut mettre les valeurs (et accessoirement aussi à partir de quelle colonne) dans sh.getRange(ligne,colonne,1,3).setValues(result). Ce que j'avais fait ici

    const pairs = sh.getRange('A1:A').getValues().join().split(",");
    const periods = sh.getRange('A1:1').getValues().join().split(",")

    var ligne = pairs.indexOf(data.k.s) + 1;
    var colonne = periods.indexOf('kline_'+data.k.i) + 1

il faut se rappeler que le websockets n'envoie qu'une seule pair et qu'une seule kline à la fois, et ensuite enchaîne dans un ordre qui m'échappe !

A tout hasard, je crois que je m'embrouille tout seul, la dépression me guette

sh.getRange(8,4,1,3,8,7,1,3,8,10,1,3).setValues(result)

Jai réussi !

function getJSON(jsonstring){
  try{
    var data = JSON.parse(jsonstring);
    var ligne = pairs.indexOf(data.k.s) + 8;
    var colonne = periods.indexOf('kline_'+data.k.i) + 4
    if (ligne != -1 && colonne != -1){
      var result=[]
      result.push([ data.k.l , data.k.c , data.k.h ])
      // On range ligne 1 les donnees de 1 à 3 colonnes
     sh.getRange(ligne,colonne,1,3).setValues(result)
     // On range ligne 8 à partie de la 4 eme colonne les donnees de 1 à 3
    sh.getRange(8,4,1,3).setValues(result)
    //sh.getRange(8,4,1,3,8,7,1,3,8,10,1,3).setValues(result)

    }
  }

Par contre sur la première ligne de mes résultats ici psgudst j'ai les valeurs de toutes les paires qui se mettent à jour, toutes les autres lignes sont OK j'ai vérifié dans ma premiere kline, dans le code quelle est la ligne qui affiche cela ? Soit je la mets sur les 3 klines, soit je l'efface

screen3

enlève cette ligne

    sh.getRange(8,4,1,3).setValues(result)
   

Par contre sur la première ligne de mes résultats ici psgudst j'ai les valeurs de toutes les paires qui se mettent à jour,

Hello, désolé pour le retard, j'ai eu la bonne idée de me fracturer la 3 éme phalange de l'annulaire, alors du coup de la main gauche je tape juste avec l'index , je finis bien l'année Je serai absent deux jours, je pense que mercredi soir ce sera ok, je te transférerai tout cela avec grand plaisir, pas mal de boulot dessus et quelques interrogations notamment au niveau des liens, ca fonctionne mais la manière dont je fais ca est pas vraiment optimisée lol ! Par contre au niveau des data, c'est vrai que quand je déconnecte, je suis obligé d'attendre que tout sois transmis, si par malheur je rentre dans ma feuille avant, ca casse tout. Je ne sais plus ou est la ligne pour afficher les buffer dans la page html, ce qui normalement me permettrait de voir quand je peux a nouveau sélectionner une kline et redémarrer le script. Vu les ressources que ca demande, je me pose la question si je ne vais pas laisser par exemple celui la avec une trentaine de cryptos a surveiller , et en refaire un autre avec toutes les cryptos sur une timeframe de 1 mn pour voir uniquement celles qui pulsent d'un coup , je verrai . Bonne journée Steelson et merci de transmettre ton savoir

multscreen

Un premier jet, et j'ai compris comment masquer les colonnes et mettre ca dans le menu, ouf... Avant que ne ne fasses une connerie avec mes liens, je sais les faire dans une autre feuille et les réimporter dans celle la, mais c'est un peu fouillis, et vu de que fais des replace et autres directement dans la feuille , ca ne me le fais que pour les paires en usdt, forcément, des que c'est autre chose, ca ne marche plus.

url de google : /spreadsheets/d/1PnJPIfJN1TJvuz3TsuUUkCG88F2aFV0fE5nHOecAv2Y

J'ai regardé au niveau du code, et j'ai compris qu'il y exitait des regex.

Je prends un exemple, peut tu me dire si je suis sur la bonne voie:

il faudrait que je mette dans un tableau USDT,EUR,BTC,ETH,BNB... une dizaine environ

Si la paire contient WRXUSDT, ALORS le coté 1 de la pair est WRX, et l'autre est contre coté 2 USDT

Donc mon lien serait dans le cas de binance :

URL DE BINANCE : /fr/trade/COTE1_COTE2

Dans le cas de cryptopanic:

url de cryptopanic: /news/COTE1

url de altrady : /dashboard#/trade/BINA_COTE2_COTE1

Dans le cas de Tradingview:

url de tradingview : /chart?symbol=BINANCE:COTE1COTE2

Serais-je sur la bonne voie ?

Je ne suis pas sûr d'avoir bien compris ta demande ... est-ce que tu souhaites générer en automatique la liste des pairs à partir d'une table de crypto et d'une table de devises ?

Sinon, ...

il faudrait que je mette dans un tableau USDT,EUR,BTC,ETH,BNB... une dizaine environ

Si la paire contient WRXUSDT, ALORS le coté 1 de la pair est WRX, et l'autre est contre coté 2 USDT

Il y a peut-être plus simple : dans l'onglet principal (cotation), faire 2 colonnes, l'une avec la crypto, l'autre avec la devise. Pour l'onglet principal, il suffit de concaténer les 2. Pour l'onglet data, il suffit de choisir la façon dont on écrit le lien à partir de ces 2 colonnes. In fine c'est plus simple de composer que de décomposer.

Tu as raison, pourquoi se compliquer la vie ?

Il y a peut-être plus simple : dans l'onglet principal (cotation), faire 2 colonnes, l'une avec la crypto, l'autre avec la devise. Pour l'onglet principal, il suffit de concaténer les 2. Pour l'onglet data, il suffit de choisir la façon dont on écrit le lien à partir de ces 2 colonnes

Je vais m'y remettre demain, trop mal à la main ce soir, je t'envoie cela dés que j'ai tout terminé . Encore merci !

Bonjour,

Où en es-tu maintenant ?

Bonjour,

Moi je n'ai pas bougé...

Dites moi c'est une image quantique ? Décidément nous ne sommes pas dans le même monde !

@ bientôt

LouReeD

L'avatar ? ce sont les points de Lagrange.

cannais pas, enfin les points car la grange je vois ce que c'est...

@ bientôt

LouReeD

Rechercher des sujets similaires à "google sheets cotation temps reel cryptos binance websocket"