ProRealTime
Zone de développement des applications API, des logiciels et utilitaires développés par les membres du forum
Répondre • Page 1 sur 1

IG > Keyboard Shortcut for scalping

par falex » 14 juil. 2024 17:34

Dans l'interface web de trading d'ig il y a un certains nombre de raccourci clavier.
Par exemple si on sélectionne un objet (une droite, une retracement de Fibo, par exemple) et que l'on appuie sur la touche 'E', cela ouvre la fenêtre d'édition, la touche 'D' le duplique et 'del' le supprime.

J'utilise quotidiennement ces raccourcis pour dupliquer/éditer/supprimer mes objets.

Concernant le trading (= passage d'ordre) il n'y a pas de raccourcis. Cela existe sous prt.
Alors fort de quelques heures passés à trouver commenter faire voici un code javascript à utiliser avec Tamperkey pour ajouter les raccourcis suivant:

F16 -> Supprime les positions ouvertes (il faut que la fenêtre Position soit ouverte et que les positions visible avec les boutons 'Cloturer'/'Tout cloturer')
F17 -> Change de sous-jacent (marche si on a mis tout les onglet dans une seule fenêtre)
F18 -> Simule un Click sur le Sell Button (one Click Trading doit être actif et le nombre de lot saisie)
F19 -> Simule un Click sur le Buy Button.

Les touches peuvent être très facilement changé (tout le monde n'a pas un clavier apple en usb avec des F16..F19) dans le selecteur switch/case. Pour la liste des code des touches je vous renvoi vers ce tableau : https://www.toptal.com/developers/keycode/table.
Attention vérifiez avant de faire la modification car sur mon Win10 sous Chrome avec mon clavier Extended FR apple USB le F16 n'a pas le code 127 mais le code 19, allez savoir pourquoi ...

Je n'en dis pas plus, je laisse ce petit cadeau à ceux qui maitrise un minimum leur browser, tampermonkey et le javascript.

Enjoy my Friends.

Code : #

// ==UserScript==
// @name         IG Buy/Sell OneClick Shortcut
// @namespace    http://tampermonkey.net/
// @version      2024-07-14
// @description  try to take over the world!
// @author       You
// @match        https://demo-deal.ig.com/web-platform/
// @match        https://deal.ig.com/web-platform/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ig.com
// @grant        none
// ==/UserScript==

function doc_keyUp(e) {
    console.log(e.keyCode); // Output le code de la touche dans la console
    switch (e.keyCode) {
        case 130:
            //F19
            document.getElementsByClassName("ig-ticket-oneclick_price cell-price btn ig-price-button ig-price-button--buy ig-price-button--active ember-view")[0].click()
            break;
         case 129:
            //F18
            document.getElementsByClassName("ig-ticket-oneclick_price cell-price btn ig-price-button ig-price-button--sell ig-price-button--active ember-view")[0].click()
            break;
        case 19:
            //F16
            var list = document.getElementsByClassName("btn btn-grid cell-close_btn btn-submit");
            for (var i = list.length -1 ; i >= 0; i--) {
                document.getElementsByClassName("btn btn-grid cell-close_btn btn-submit")[i].click();
            }
            break;
        case 128:
            var el = document.getElementsByClassName("ig-market-view-title ember-view"); //HTMLCollection of buttons
            for (var j = 0; j<el.length; j++) {
                if (el[j].parentNode.parentNode.className == "workspace-panel_tab-title workspace-panel_tab-title--active ember-view") {
                    console.log(j+" est l'onglet sélectionné");
                    var nextitem = (1+j)%el.length; //next item using modulus operator
                    }
                 }
             console.log("Le prochain item est "+nextitem);
             el[nextitem].click();
            break;
        default:
            break;
    }
}

document.addEventListener('keyup', doc_keyUp, false);

Re: IG > Keyboard Shortcut for scalping

par Amarantine » 14 juil. 2024 18:37

Merci pour eux falex. ;)

Re: IG > Keyboard Shortcut for scalping

par nuts » 14 juil. 2024 21:01

euh oui mon clavier s'arrête à F12
la misère 🤣

Re: IG > Keyboard Shortcut for scalping

par ChristelleP » 14 juil. 2024 21:08

Falex :top: :mercichinois:

Re: IG > Keyboard Shortcut for scalping

par falex » 14 juil. 2024 21:33

J’ai enfin trouvé une utilité à ces touches :-)

Re: IG > Keyboard Shortcut for scalping

par FRT » 01 févr. 2025 19:34

Bonsoir à tous !

Je viens de tester ce script, il a fonctionné 5 minutes sur Firefox, puis plus rien ... Testé sur chrome, il n'a jamais fonctionné. Et maintenant il ne fonctionne plus du tout.

J'ai bien renseigné la quantité de lots et activé le one click. J'ai aussi modifié le @match en collant l'adresse de mon compte demo ig. Au premier case du switch, j'ai mis 96 qui correspond à la touche 0 du pavé numérique. Voilà donc ça a fonctionné en passant des ordres de vente ( bizarre, dans le code on dirait que le premier case c'est pour un achat ... ).

Si quelqu'un veut bien m'aider à résoudre cette énigme, car ce script m'intéresse.

Merci d'avance et bon week end !

Re: IG > Keyboard Shortcut for scalping

par falex » 02 févr. 2025 21:41

Hi j'arrive ...

Première remarque : c'est curieux d'avoir mis la touche "0" ... ça veut dire que chaque fois que tu vas taper une limite/stop (par exemple 6000) tu vas avoir 3 fois l'actions associé à la touche 96/"0" qui va se déclencher. Curieux.

Ensuite pour que ça marche il faut que le focus de la page soit sur le navigateur (ça va de soit ...) mais aussi sur le graphique.

De mon côté j'ai testé et utilisé sur pas mal de combinaison :
- démo
- réel
- Windows
- MacOs
- Chrome
- Edge
- Firefox

Je n'ai jamais eu de comportement comme tu le décris avec 5min de fonctionnement puis plus rien.
La seule que j'ai eu c'est quand j'ai testé le script sur MacOS, le numéro de touches (pourtant le clavier est le même je l'avais bougé du pc au mac) n'était pas totalement le même.

Dans le message suivant je vais mettre la toute dernire version mais tu verras qu'il n'y a pas beaucoup de différence à part l'ajout de touches en fonctions des différents ordi que j'utilise.

En relisant le code j'ai du faire une màJ du "next-tab" car l'objet de la page web n'a plus tout à fait le même nom de 'class'. mais à part ça aucun changement sur les touche buy/sell/close-all.

Je vais aussi rajouter un screen de mon interface, ça a son importance.

Re: IG > Keyboard Shortcut for scalping

par falex » 02 févr. 2025 21:46

Code mis-à-jour le 07-01-2025 (et le 31-10-2024)

Code : #

// ==UserScript==
// @name         IG Buy/Sell OneClick Shortcut
// @namespace    http://tampermonkey.net/
// @version      2024-10-31
// @description  try to take over the world!
// @author       falex
// @match        https://demo-deal.ig.com/web-platform/
// @match        https://deal.ig.com/web-platform/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ig.com
// @grant        none
// ==/UserScript==

function doc_keyUp(e) {
    console.log("Keycode: "+ e.keyCode); // Output le code de la touche dans la console
    switch (e.keyCode) {
        case 130:
        case 133:
            //F19 & Screen(HP) -> Buy Open ticket
            document.getElementsByClassName("ig-ticket-oneclick_price cell-price btn ig-price-button ig-price-button--buy ig-price-button--active ember-view")[0].click()
            break;
         case 129:
         case 124:
            //F18 & F12(HP) -> Sell Open ticket
            document.getElementsByClassName("ig-ticket-oneclick_price cell-price btn ig-price-button ig-price-button--sell ig-price-button--active ember-view")[0].click()
            break;
        case 19:
        case 113:
        case 127:
            //F16 (Win10) & F2(HP) & F16 (MacOS) -> Close ticket
            var list = document.getElementsByClassName("btn btn-grid cell-close_btn btn-submit");
            for (var i = list.length -1 ; i >= 0; i--) {
                //console.log("i="+i)
                document.getElementsByClassName("btn btn-grid cell-close_btn btn-submit")[i].click();
            }
            break;
        case 128:
        case 121:
            //F17 & F10(HP) -> Next Tab
            var el = document.getElementsByClassName("ig-market-view-title ember-view"); //HTMLCollection of buttons
            console.log(el[0].parentNode.parentNode.className);
            for (var j = 0; j<el.length; j++) {
                //Update 20250107 no more ember-view
                //if (el[j].parentNode.parentNode.className == "workspace-panel_tab-title workspace-panel_tab-title--active ember-view") {
                if (el[j].parentNode.parentNode.className == "workspace-panel_tab-title workspace-panel_tab-title--active") {
                    console.log(j+" est l'onglet sélectionné");
                    var nextitem = (1+j)%el.length; //next item using modulus operator
                    }
                 }
             console.log("Le prochain item est "+nextitem);
             el[nextitem].click();
            break;
        default:
            break;
    }
}

document.addEventListener('keyup', doc_keyUp, false);


Re: IG > Keyboard Shortcut for scalping

par falex » 02 févr. 2025 21:53

Voici le screen de mon compte de démo : Dans les point importants il faut :
- que le One-clisk soit activé (en haut à droite)
- il faut une premiere fenetre avec tes épics mis en tabulation
- il te faut une deuxième fenêtre avec tes poitions (perso je les mis en dessous).
- Active rle mode dévelopeur pour les extensions, sinon Tampermonkey ne peux pas fonctionner.

Ici le mot fenêtre n'est pas au sens windows/mac ou firefox/chrome mais au sens ig du terme.

Re: IG > Keyboard Shortcut for scalping

par FRT » 02 févr. 2025 22:18

Merci pour ta réponse falex, je vais tester ça ce soir, par contre je ne comprend pas très bien quand tu dis " avec tes épics mis en tabulation ". :joker: :lol2:

EDIT : je viens de tester, le script ne fonctionne pas chez moi.

Et j'ai une autre question : comment activer le mode développeur de firefox ? J'ai cherché sur google, il faut juste ouvrir la console de dev avec F12 ? J'ai un doute, comment activer le mode développeur pour les extensions sur firefox ?

Merci d'avance :merci:

Re: IG > Keyboard Shortcut for scalping

par FRT » 02 févr. 2025 23:11

ahhhh en fouinant, j'ai trouvé un truc ... J'ai mis le code 65 ( touche A ) pour un ordre d'achat, juste pour tester ...

J'ai un message d'erreur dans la console de dev, le voici ( et si j'en crois ce message, c'est bien un ordre de vente et pas d'achat :joker: )

Keycode: 65

Sell-OneClick-Shortcut.user.js:15:13
Uncaught TypeError: document.getElementsByClassName(...)[0] is undefined
doc_keyUp moz-extension://43d24294-0ac4-413d-b2b5-19c1c05e09e5/userscripts/ig-Buy/Sell-OneClick-Shortcut.user.js?id=63f66eff-747c-4d34-826a-1630c65bee5e:20
image_2025-02-02_231258072.png
image_2025-02-02_231258072.png (9.59 Kio) Vu 979 fois
Bon je ne suis pas développeur, mais j'ai quelques notions. Il semblerait qu'il ne trouve pas la classe d'un objet.

Re: IG > Keyboard Shortcut for scalping

par FRT » 02 févr. 2025 23:38

Bon ça avance ! j'ai réussi à faire fonctionner le bouton d'achat ! En fait ça ne fonctionnait pas, car je trade avec le panneau d'ordre ouvert ... Il faut le refermer, comme sur ta capture d'écran.

Par contre, je ne peux pas shorter, ou " tout clôturer ", ces boutons ne fonctionnent pas. J'ai bien le panneau " positions " ouvert en bas comme toi. Je vais continuer mes recherches :merci:

EDIT : j'aimerai trop avoir cette fonctionnalité sur le panneau d'ordre comme ci-dessous :
image_2025-02-02_234509632.png
image_2025-02-02_234509632.png (28.8 Kio) Vu 975 fois

Re: IG > Keyboard Shortcut for scalping

par FRT » 02 févr. 2025 23:55

C'est bon ça fonctionne ! j'ai bien galéré .... J'ai l'impression que mes modifications dans tampermonkey n'étaient pas à jour ... pourtant j'ai bien enregistré ... mais j'ai fait F5 plusieurs fois sur ma plateforme ig pour bien rafraichir le bouzin ... et ça marche !

Par contre, ce qui serait énorme, c'est d'avoir la même chose disponible quand le panneau d'ordre est ouvert comme ci-dessus ... Je vais me pencher sur la question mais je suis pas un pro de javascript.

EDIT : bon ben j'ai réussi ....

-> pour faire fonctionner le bouton " achat " avec le panneau d'ordre ouvert, voici le JS ->
document.getElementsByClassName("ig-ticket-price-button btn-price-unselected ig-ticket-price-button--buy ember-view")[0].click()

Mais il y a un problème, il faut appuyer sur une autre touche pour " placer l'ordre ", je vais regarder mais il doit y avoir moyen de déclencher tout ça d'une traite

EDIT 2 : c'est bon ça fonctionne, fastoche ! Pourtant je suis nul en JS ... :lol2:

Voici le JS pour déclencher un ordre d'achat ( avec la touche D ) quand le panneau d'ordre est ouvert ->

case 68:
//D -> Buy Open ticket with open order panel
document.getElementsByClassName("ig-ticket-price-button btn-price-unselected ig-ticket-price-button--buy ember-view")[0].click()
document.getElementsByClassName("btn form-control btn-submit")[0].click()
break;

Je vais regarder pour faire la même chose avec la vente.

Re: IG > Keyboard Shortcut for scalping

par FRT » 03 févr. 2025 00:34

Voici le javascript pour acheter / vendre quand le panneau d'ordre est ouvert ( touche A pour acheter et Z pour vendre ) :

case 90:
//Z -> Sell Open ticket with open order panel
document.getElementsByClassName("ig-ticket-price-button btn-price-unselected ig-ticket-price-button--sell ember-view")[0].click()
document.getElementsByClassName("btn form-control btn-submit")[0].click()
break;

case 65:
//A -> Buy Open ticket with open order panel
document.getElementsByClassName("ig-ticket-price-button btn-price-unselected ig-ticket-price-button--buy ember-view")[0].click()
document.getElementsByClassName("btn form-control btn-submit")[0].click()
break;

J'ai un seul problème : je ne peux pas " mitrailler " car quand j'execute un ordre, il y a une petite pop up qui apparait sous le bouton " placer un ordre " ( voir image ci-dessous ). Je dois attendre que cette pop up disparaisse pour à nouveau placer un ordre avec le clavier.
image_2025-02-03_003341607.png
image_2025-02-03_003341607.png (11.96 Kio) Vu 965 fois
Je vais chercher , ya sûrement moyen de cacher ce machin automatiquement.

Re: IG > Keyboard Shortcut for scalping

par falex » 03 févr. 2025 07:58

J’aime bien quand quelqu’un fait les questions /reponses.

En général je ferme la page ig et je la rouvre pour être sur que le script soit bien chargé.

C’est bien tu as su te débrouiller.

Pour ne next-tab, ce sont les « panels ».

Regarde en haut de la capture d’écran : j’ai trois epic qui sont comme des onglets. (Ndx, spx, djia)
Quand je clique sur le chaque onglet l’affichage passe sur le pic sélectionné.

Pourquoi revenir à ta version du panel:
Tu as une options dans le réglage de la plateforme qui conserve tes réglages à chaque ticket.
Ce qui donne :
1) je fais un premier ordre avec le panel en saisissant ma quantité mon stop ma limite
2) je ferme le panel d’ordre
3) je fais du one-click et chaque nouvelle ordre on aura la même quantité/tp/sl que le ticket en 1)

NB : ça aurait bien que tu mettes tes bout de code dans une section « code » ça les aurait rendu plus lisible.

Re: IG > Keyboard Shortcut for scalping

par FRT » 03 févr. 2025 09:22

Oui tu as raison, voici mon code :

Code : #

// ==UserScript==
// @name         IG Buy/Sell OneClick Shortcut
// @namespace    http://tampermonkey.net/
// @version      2024-10-31
// @description  try to take over the world!
// @author       falex
// @match        https://demo-deal.ig.com/web-platform/
// @match        https://deal.ig.com/web-platform/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ig.com
// @grant        none
// ==/UserScript==

function doc_keyUp(e) {
    console.log("Keycode: "+ e.keyCode); // Output le code de la touche dans la console
    switch (e.keyCode) {
         case 90:
            //Z -> Sell Open ticket with open order panel
            document.getElementsByClassName("ig-ticket-price-button btn-price-unselected ig-ticket-price-button--sell ember-view")[0].click()
            document.getElementsByClassName("btn form-control btn-submit")[0].click()
            document.getElementsByClassName("ember-tether ember-view ember-tether-element ember-tether-enabled ember-tether-element-attached-bottom ember-tether-element-attached-center ember-tether-target-attached-top ember-tether-target-attached-center")[0].style.visibility = 'hidden';
            break;

        case 65:
            //A -> Buy Open ticket with open order panel
            document.getElementsByClassName("ig-ticket-price-button btn-price-unselected ig-ticket-price-button--buy ember-view")[0].click()
            document.getElementsByClassName("btn form-control btn-submit")[0].click()
            break;

        case 81:
            //Q Buy Open ticket with closed order panel
            document.getElementsByClassName("ig-ticket-oneclick_price cell-price btn ig-price-button ig-price-button--buy ig-price-button--active ember-view")[0].click()
            break;
         case 83:
            //S  -> Sell Open ticket with closed order panel
            document.getElementsByClassName("ig-ticket-oneclick_price cell-price btn ig-price-button ig-price-button--sell ig-price-button--active ember-view")[0].click()
            break;
        case 67:
            //C -> Close ticket with positions panel open
            var list = document.getElementsByClassName("btn btn-grid cell-close_btn btn-submit");
            for (var i = list.length -1 ; i >= 0; i--) {
                //console.log("i="+i)
                document.getElementsByClassName("btn btn-grid cell-close_btn btn-submit")[i].click();
            }
            break;
        case 78:
            //N -> Next Tab
            var el = document.getElementsByClassName("ig-market-view-title ember-view"); //HTMLCollection of buttons
            console.log(el[0].parentNode.parentNode.className);
            for (var j = 0; j<el.length; j++) {
                //Update 20250107 no more ember-view
                //if (el[j].parentNode.parentNode.className == "workspace-panel_tab-title workspace-panel_tab-title--active ember-view") {
                if (el[j].parentNode.parentNode.className == "workspace-panel_tab-title workspace-panel_tab-title--active") {
                    console.log(j+" est l'onglet sélectionné");
                    var nextitem = (1+j)%el.length; //next item using modulus operator
                    }
                 }
             console.log("Le prochain item est "+nextitem);
             el[nextitem].click();
            break;
        default:
            break;
    }
}

document.addEventListener('keyup', doc_keyUp, false);
Touche A = achat avec le panel d'ordre ouvert
Touche Z = vente avec le panel d'ordre ouvert

Touche Q = achat avec le panel d'ordre fermé
Touche S = vente avec le panel d'ordre fermé

Touche C = Tout clôturer avec le panel positions ouvert

Touche N = Passer d'un onglet ig à un autre

Tout fonctionne très bien, sauf pour mitrailler les ordres quand le panel d'ordre est ouvert, j'ai cette petite pop up qui apparait, je dois attendre qu'elle disparaisse. Je ne peux donc pas " mitrailler " à la chaîne les ordres. C'est pas plus mal me direz vous :lol2: ... ça évite les craquages :lol2: :joker:

Mais bon j'aimerai bien trouver comment faire disparaitre cette maudite pop up :lol2:

Si tu as une idée falex, je suis preneur ... je vais chercher de mon côté.

:merci:

Re: IG > Keyboard Shortcut for scalping

par falex » 03 févr. 2025 10:47

Pour le popup je ferrai :
Un j’ouvre la console
Deux je shoot un ticket
Je cherche dans la console et sur la page le code html de ce popup
Bien faire un screen car le code va disparaître après un timeout

Regarde dans la balise div le class et/ou l’ID.

Peut-être peux-tu shooter un « hide » ou une sorte « close » avant que le timer le fasse.

Ressayer pour voir si l’ID.class sont toujours le même ou bien différent à chaque popup.

Good luck

NB si tu es encore plus motivé tu peux regarder quel code ferme le pop up. Tout est dans les JS chargés à l’ouverture de l’interface.

Re: IG > Keyboard Shortcut for scalping

par FRT » 03 févr. 2025 20:16

Bon je laisse tomber cette histoire de pop up ... ça dépasse mes modestes compétences en programmation :lol2:

C'est pas grave, ça me force à attendre 5 secondes pour repasser un trade au clavier. C'est pas plus mal, ça m'évite de mitrailler :lol2:

Merci falex pour l'aide :merci:

Re: IG > Keyboard Shortcut for scalping

par falex » 03 févr. 2025 21:13

Di j’ai 5 min je regarderai, mais ne m’attends sur ce sujet.

Re: IG > Keyboard Shortcut for scalping

par FRT » 03 févr. 2025 21:22

:merci: Ok merci

Sujets similaires
Questions divers scalping + scalping Benoist
Fichier(s) joint(s) par Pamplemousse » 17 janv. 2017 23:10 (19 Réponses)
Formation Scalping analyse d'une entrée parfaite en scalping
Fichier(s) joint(s) par Jayson » 21 sept. 2019 16:09 (24 Réponses)
UT Pour Scalping ?
par PHIL06 » 01 oct. 2011 11:28 (4 Réponses)
scalping non autorisé
par greg1313 » 07 oct. 2011 07:29 (4 Réponses)
Livre scalping
Fichier(s) joint(s) par Stochastic » 07 déc. 2011 18:03 (69 Réponses)
Outils scalping - Ticks vs Tape
par Benoist Rousseau » 11 déc. 2011 13:18 (3 Réponses)
binaire scalping
par Benoist Rousseau » 05 juin 2012 17:10 (8 Réponses)
Bonne ou mauvaise méthode de scalping ?
par Benoist Rousseau » 27 sept. 2012 22:09 (4 Réponses)