ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

astuce/programme pour stop +1 sur IG

par Jayson » 13 févr. 2020 17:03

Bonjour à tous, suite a la discussion que j'ai eu avec Darkpoule dans la file sclaping du jour, j'ouvre le topic ici pour que l'on puisse échanger.

Pour faire simple en étant sur cfd à risque limité sur ig, on ne peut pas sécurisé les positions quand elles passent vert avec un stop +1 ou +2.

Par exemple si je suis à 3 points de gain latents, je ne peut pas sécurisé a +1 par exemple et laisser au trade une chance. Soit j'encaisse soit je laisse la chance au trade et je prend le risque de passer rouge.

je met un exemple de mouvent qui m'arrive de rater assez souvent.

@Dark si ta des tuyau je suis prenneur. Merci
Fichiers joints
lol.JPG
lol.JPG (43.16 Kio) Vu 968 fois

Re: astuce/programme pour stop +1 sur IG

par DarkPoule » 14 févr. 2020 12:50

Salut!
Alors en standard que ça soit IG met une distance minimun aux stop.
Capture d’écran_2020-02-14_12-43-07.png
Capture d’écran_2020-02-14_12-43-07.png (35.23 Kio) Vu 907 fois
Tu vois ici min:5 ....
Donc en théorie et pour utilisé les stop IG. tu dois avoir gagné 6 pts pour placé a SL+1...
5 pts pour SL a 0 etc.

Tu ne peux pas faire moins... genre 3 pts SL+1.

MAIS

Tu peux finter, avec les API.
Il faut simuler un stop. qui est en fait un stop au marché qui sera executé par un automate.

il y a deux type d'API chez IG.
Les API Stream (qui te permet d'avoir le flux du prix en direct)
Et API Rest,(qui te permet d'executer des ordres etc ... )

Exemple :
Prenon le Dow Jones, tu as une position a 29500 achat. il monte a 29503.
Ton automate sait qu'il doit sortir de la position si le prix reviens a 29501.
Des que ça reviens a 29501 ou moins il coupe ta position. comme si toi tu avais cliqué sur sortir.
Le soucis c'est que tu peux etre victime de la rapidité du marché. La machine va s'executer en 2 ou 3 ms. mais le temps que l'ordre passe... ça se trouve tu va te retrouvé a sortir a 29490... si il y a un gros mouvement.

Re: astuce/programme pour stop +1 sur IG

par Jayson » 14 févr. 2020 19:16

Salut Dark, je te remercie de ton retour.

A tu deja essayer de le faire ? Si oui il faut le faire en quel langage s'il te plait ? (Python ?)

Ca me branche pas mal tout de meme. Avec si possibilité de monter le stop au fur et a mesure que le marché monte cela serau top !

Re: astuce/programme pour stop +1 sur IG

par DarkPoule » 15 févr. 2020 07:44

Si c'est possible. En python oui.
Mais si tu n'a jamais codé ça va etre chaud.

De toute façon j'ai toujours songé a me le faire.
Tu connais python ou un autre langage ?

Re: astuce/programme pour stop +1 sur IG

par Jayson » 15 févr. 2020 12:24

Dac je vois.

Non je ne programme pas mais jai un amis qui programme. C'est son travail. C'est lui qui va me faire le code. Super baleze en codage.

Faut juste que je lui explique les les prise de position en trading etc et en une heure il aura compris ce que je veux faire.

Je prevois ca pour le mois de mars.

Re: astuce/programme pour stop +1 sur IG

par Jayson » 15 févr. 2020 12:39

Apres la solution la plus simple c'est de pouvoir mettre des stop +1 avec le streamdeck mais reste a voir si cette option sera possible avec le prt V11 de ig.

Je vais appeller prt lundi pour leur demander si cette fonctionnalité sera disponible avec ig.

Re: astuce/programme pour stop +1 sur IG

par DarkPoule » 15 févr. 2020 13:02

Du coup je me suis lancé, mais loin d'etre fini, ça donnera une bonne base a ton ami. en quel language il code ? python n'est pas réputé pour être rapide.

oui mais l'avantage du code c'est que tu bypass (d'une certaine façon) la limitation a +5pts... tu peux descendre a +3pts pour engager un faux SL.
Ensuite; le code sera beaucoup plus réactif que toi. le temps que je vois le prix a +5pts, il va se passer 500ms seconde entre ce que tu vois et le fait de cliquer.
Le code va s’exécuter en moins de 1ms.

trailing_auto.py
Spoiler:

Code : #

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from trading_ig_config import config
from trading_ig import IGService, IGStreamService
from trading_ig.lightstreamer import Subscription
from threading import Thread
import json
import numpy

class Account_connection(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.ig_service = IGService(username=config.username,
                                    password=config.password,
                                    api_key=config.api_key,
                                    acc_type=config.acc_type)
        print(config.username, config.acc_type)
        self.ig_service.create_session()
        self.protection = False

    def stream_init(self):
        ig_service = IGService(config.username, config.password, config.api_key, config.acc_type)
        self.ig_stream_service = IGStreamService(ig_service)
        ig_session = self.ig_stream_service.create_session()
        accounts = ig_session[u'accounts']
        for account in accounts:
            if account[u'accountId'] == config.acc_number:
                self.accountId = account[u'accountId']
            else:
                print('Account not found: {0}'.format(config.acc_number))
                self.accountId = None
        self.ig_stream_service.connect(self.accountId)


    def run(self):
        self.stream_init()
        account_str = 'TRADE:XXXX'
        self.subcription_trades = Subscription(
            mode="DISTINCT",
            items=[account_str],
            fields=["CONFIRMS"],)
        self.subcription_trades.addlistener(self.on_account_update)
        sub_key_trades = self.ig_stream_service.ls_client.subscribe(self.subcription_trades)
        input("{0:-^80}\n".format("HIT CR TO UNSUBSCRIBE AND DISCONNECT FROM LIGHTSTREAMER"))
        self.ig_stream_service.disconnect()

    def on_account_update(self, item_update):
        js = json.loads(item_update['values']['CONFIRMS'])
        level = js['level']
        print('level de la position:',level)
        self.protection = True

        self.activation_level = level + 3
        self.activation_level_state = False

        self.stop_level = level + 1
        self.real_stop_level = level + 6

class Epic_Connection(Thread):
    def __init__(self, epic):
        Thread.__init__(self)
        self.price = dict()
        self.epic = epic
        self.deal_ids = []
        self.ig_service = IGService(username=config.username,
                                    password=config.password,
                                    api_key=config.api_key,
                                    acc_type=config.acc_type)
        print(config.username, config.acc_type)
        self.ig_service.create_session()

    def stream_init(self):
        ig_service = IGService(config.username, config.password, config.api_key, config.acc_type)
        self.ig_stream_service = IGStreamService(ig_service)
        ig_session = self.ig_stream_service.create_session()
        accounts = ig_session[u'accounts']
        for account in accounts:
            if account[u'accountId'] == config.acc_number:
                self.accountId = account[u'accountId']
            else:
                print('Account not found: {0}'.format(config.acc_number))
                self.accountId = None
        self.ig_stream_service.connect(self.accountId)

    def run(self):
        self.stream_init()

        # epic_str = 'CLIENT_SENTIMENT:DE30' % self.epic
        self.subcription_trades = Subscription(
            mode="MERGE",
            items=["MARKET:" + self.epic],
            fields=["BID", "OFFER"],)
        self.subcription_trades.addlistener(self.on_epic_update)
        sub_key_trades = self.ig_stream_service.ls_client.subscribe(self.subcription_trades)
        input("{0:-^80}\n".format("HIT CR TO UNSUBSCRIBE AND DISCONNECT FROM LIGHTSTREAMER"))
        self.ig_stream_service.disconnect()


    def on_epic_update(self, item_update):
        print("epic update", item_update)
        price = float(item_update['values']['BID'])
        print('... prix:', price, ac.protection)
        import time

        for price in numpy.arange(13759.9, 13770, 0.5):
            time.sleep(1)
            if ac.protection:
                print
                print(price)
                print('... ... activation_level:', ac.activation_level,ac.activation_level_state)
                print('... ... stop_level:', ac.stop_level)
                print('... ... real_stop_level:', ac.real_stop_level)
                # POUR UN ACHAT
                if price >= ac.activation_level and ac.activation_level_state == False:
                    ac.activation_level_state = True
                elif price <= ac.stop_level and ac.activation_level_state == True:
                    print("on coupe")
                    ac.activation_level_state = False
                    ac.protection = False
                    # on sort de la position
                elif price >= ac.real_stop_level:
                    print("on met un vrai stop")
                    # verifier que le stop a bien ete mis
                    ac.activation_level_state = False
                    ac.protection = False
                # pp = self.ig_service.update_open_position(limit_level=None,
                #                                           stop_level=stop_level,
                #                                           trailing_stop=None,
                #                                           trailing_stop_distance=None,
                #                                           trailing_stop_increment=None,
                #                                           deal_id=deal, )

        # on verifie l'epic
        # on prend le prix d'entrée
        # on memorise le prix de condition d'activation su SL+1 ex: +3
        # lorsque ce prix est atteint on active la protection, si le prix reviens = ou inferieur a +1, on coupe.
        # lorsque le prix est superieur ou = a 6 on place un vrai sl+1


dax25 = "IX.D.DAX.IDF.IP"

ac = Account_connection()
ac.start()

dax_connection = Epic_Connection(dax25)
dax_connection.start()

trading_ig_config.py
Spoiler:

Code : #

class config(object):
    username = "xxxx"
    password = "xxxx"
    api_key = "ccccccxcxcxcxcxc"
    acc_type = "DEMO" # LIVE / DEMO
    acc_number = "XXXX"
il faut disposer de ce dossier a coté du code (j'ai pas fait d'install dans l'environnement python)
https://github.com/ig-python/ig-markets-api-python-library/tree/master/trading_ig

et voici les requirements.
Spoiler:

Code : #

beautifulsoup4==4.7.1
certifi==2018.11.29
chardet==3.0.4
decorator==4.4.1
idna==2.8
ipython==7.12.0
ipython-genutils==0.2.0
jedi==0.16.0
numpy==1.16.0
parso==0.6.1
pexpect==4.8.0
pickleshare==0.7.5
prompt-toolkit==3.0.3
ptyprocess==0.6.0
Pygments==2.5.2
requests==2.21.0
six==1.12.0
soupsieve==1.7.2
traitlets==4.3.3
urllib3==1.24.1
wcwidth==0.1.8

Re: astuce/programme pour stop +1 sur IG

par DarkPoule » 15 févr. 2020 13:12

et vous aurez besoin de ça surtout !
https://labs.ig.com/ !! toute la doc Api IG.
https://labs.ig.com/sample-apps/streaming-companion/index.html
https://labs.ig.com/sample-apps/api-companion/index.html

Re: astuce/programme pour stop +1 sur IG

par Jayson » 15 févr. 2020 13:40

Je te remercie beaucoup Dark pour ces infos !
Cava nous avancer pas mal.

A part le Python quel autre langage me conseil tu ?

Je ny comprend pas grand chose aux lien que tu m'a envoyé maos j'irai voir avec lui par la suite.

Je te remercie des infos !

Re: astuce/programme pour stop +1 sur IG

par DarkPoule » 15 févr. 2020 14:03

je connais que le python. S'il connait c'est déja un bon début.

Re: astuce/programme pour stop +1 sur IG

par takapoto » 15 févr. 2020 14:04

Avec les API, on récupère environ 4 ticks par seconde.

L'ordre de clôture qui sera initié lorsque le programme reçoit le tick produisant un gain de 1 point sera donc, au mieux, exécuté 250 ms plus tard sur le tick suivant.

En pratique, ce sera plutôt 2 ou 3 ticks après.

Autant dire qu'en réalité, l'ordre une fois exécuté, ne donnera que très rarement le gain attendu de 1 point, mais ce sera plutôt une fourchette entre -x et +y points, suivant la volativité instantanée.

Cela n'empêche pas de se doter d'une telle fonction mails il faut le faire en connaissance de cause.

De la même manière, quand on exécute un backtest, il ne faut pas oublier de prendre en compte ce décalage et ne pas présupposer que l'ordre demandé a bien été exécuté sur le tick courant.

Re: astuce/programme pour stop +1 sur IG

par DarkPoule » 15 févr. 2020 14:18

Tout a fait d'accord Takapoto.

Re: astuce/programme pour stop +1 sur IG

par Jayson » 15 févr. 2020 15:16

@Dark ca marche je vais checker cela. Je te remercie pour les infos

@Takapoto d'accord 4 tiks par secondes je prend note. Je pense il y a tout de meme moyen de sortir flat meme avec un stop +2 dans le pire des cas sauf extreme volatilité comme en cas de news.

A voir en conditions reels.

Merci pour vos infos :)

Re: astuce/programme pour stop +1 sur IG

par RyanTrading » 20 févr. 2020 17:07

Intéressant votre débat ici, je vais voir pour me programmer cela mais en .Net

Re: astuce/programme pour stop +1 sur IG

par RyanTrading » 20 févr. 2020 18:31

Au vu du message de Benoist dans la file du jour , je laisse tomber, pas envie que ig ferme mon compte pour " détournement " de la législation

Re: astuce/programme pour stop +1 sur IG

par Jayson » 20 févr. 2020 19:05

Ryan, non c'est bon, Benoist avait mal compris ce que l'on voulais faire, il pensais que on voulait outrepasser le stop garantit.

Re: astuce/programme pour stop +1 sur IG

par RyanTrading » 20 févr. 2020 19:20

Ah ok, oui c'est pas ça du tout effectivement, moi ce que j'ai compris et ce que j'allais faire c'est tout simplement automatiser ce que je fait manuellement à savoir dès qu'il arrive au niveau du stop à x pts du stop G je lance l'ordre de fermeture.

Re: astuce/programme pour stop +1 sur IG

par Jayson » 20 févr. 2020 19:44

@Ryan, je veux faire pareille.

Re: astuce/programme pour stop +1 sur IG

par karlos » 20 févr. 2020 20:07

En cherchant un peu dans la labzone on voit des projets qui vont dans ce sens comme MonoTrade qui reprennait quelques élement de L3 scalping. Soit les sources ne sont pas partagées soit étaient mise sur le FTP Andlil et les liens ne sont plus valides :s alors qu'un Github auraient été top !

Re: astuce/programme pour stop +1 sur IG

par Benoist Rousseau » 20 févr. 2020 20:20

Karlos > c'était à la demande des programmeurs car certains ont pillé leur travail pour vendre des interfaces de scalping derrière ou faire de fausses interfaces en utilisant leur nom et on se faisant passé pour eux sur d'autres forums pour essayer de pirater des comptes.

Il n'est pas beau le web

Sujets similaires
Astuce pour esquiver le stop loss minimum à 6
par falex » 06 mars 2015 20:24 (18 Réponses)
Saint Valentin : astuce pour privatiser 1 restaurant gratuitement
Fichier(s) joint(s) par ChristelleP » 14 févr. 2013 19:32 (19 Réponses)
Besoin d'astuce. Bénef dégagé impraticable.
par Benoist Rousseau » 13 oct. 2014 22:32 (6 Réponses)
Astuce pour diminuer le capital de démonstration
par plataxis » 06 nov. 2014 21:33 (13 Réponses)
Astuce pour ne pas se tromper...
par laurent074 » 11 juin 2015 16:28 (9 Réponses)
IG inaccessible au bureau : astuce pour avoir PRT
Fichier(s) joint(s) par jba » 17 janv. 2017 10:22 (13 Réponses)
Astuce Youtube
Fichier(s) joint(s) par Chouini l'ourson » 05 mars 2018 09:35 (10 Réponses)
une astuce pour les copies d'écran avec PRT
Fichier(s) joint(s) par sobear » 04 mai 2018 17:36 (0 Réponses)
Astuce : vidéo Youtube dans une fenêtre séparée (sur PC)
Fichier(s) joint(s) par Amarantine » 24 août 2019 21:02 (9 Réponses)