ProRealTime
Zone de développement des applications API, des logiciels et utilitaires développés par les membres du forum

Ayam, la secrétaire du trader.

par DarkPoule » 30 oct. 2020 10:50

Construction en cours :)

Re: Ayam, la secrétaire du trader.

par Francis1 » 30 oct. 2020 17:58

:top:

Re: Ayam, la secrétaire du trader.

par Ozmizrak » 31 oct. 2020 23:24

:top:

Re: Ayam, la secrétaire du trader.

par ChristelleP » 01 nov. 2020 01:21

Dark :mercichinois:

Re: Ayam, la secrétaire du trader.

par Amarantine » 01 nov. 2020 09:48

@DarkPoule:
Quand tu auras commencé à poster, j'effacerai les messages précédents.

Re: Ayam, la secrétaire du trader.

par Francis1 » 01 nov. 2020 11:09

:zzz: :zzz: :lol2: :lol2:

Re: Ayam, la secrétaire du trader.

par Florian » 05 nov. 2020 20:42

J'attends............................
:zzz: :zzz: :zzz: :zzz: :zzz: :zzz: :zzz: :zzz:



:lol2: :lol2:

Re: Ayam, la secrétaire du trader.

par DarkPoule » 22 sept. 2021 06:42

Mince je l'avais oublié celui là !!
Je vais faire un petit article dessus aujourd'hui :)

Re: Ayam, la secrétaire du trader.

par DarkPoule » 22 sept. 2021 08:11

Voici mon assistant trader.
Capture d’écran du 2021-09-22 08-05-29.png
Capture d’écran du 2021-09-22 08-05-29.png (189.25 Kio) Vu 744 fois
un ecran solitaire.
Et son "pendant maitre",
Capture d’écran du 2021-09-22 07-55-05.png
Capture d’écran du 2021-09-22 07-55-05.png (51.21 Kio) Vu 744 fois
sur mon PC a coté de mes graphiques.

Il me permet de connaitre :

-la taille de position maximum a engagé (lev20)
-il m'informe des nouvelles de la journée (-5 minute il parle et -1 il parle encore en clignote)
-il affiche mon solde.
-il affiche les tendance sur 20 périodes via les carrés verts, rouges ou gris, sur 1m, 5m, 15m, 1h (moving average montante ou descendante)
-il me permet de placer des alertes hors prt qui s'affiche dans l'écran.
ex:
15340 DAX, je valide (au dessous du niveau actuel > 15415 a 8h00)
Capture d’écran du 2021-09-22 08-00-04.png
Capture d’écran du 2021-09-22 08-00-04.png (4.74 Kio) Vu 744 fois
il s'affiche sur mon écran solitaire instantanément
Capture d’écran du 2021-09-22 08-07-33.png
Capture d’écran du 2021-09-22 08-07-33.png (106.34 Kio) Vu 744 fois
.il sonnera 1 fois, à 15355.3 en orange et clignote 10 secondes,
.il sonnera 3 fois, à 15347.7 en rouge et clignote 30 secondes,
.il sonnera longuement a 15340 en gris quand le niveau sera égal ou franchi.


L'autre partie, permet de placer des SL+1 a la vitesse de flash des que possible.
c'est une stop placé par un robot. j'expliquerais l'infra après.
Je peux le déplacé (si possible) de +1, +2 ou +5. pour suivre la montée (ou descente) du cours.

Je peux effectuer des sorties partielles. ça me permet de sécurisé une partie.
a 5%, 10%, 25% et 50%.

Re: Ayam, la secrétaire du trader.

par DarkPoule » 22 sept. 2021 08:19

NIVEAU INFRASTRUCTURE:
Donc j'ai :

Derrière mon écran solitaire, un RASPI3 rélié pour le son par jack audio a un des moniteur PC. (trop de soucis avec les enceinte USB ou independante... puis je suis trop radin pour ça)

Dessus un logiciel maison developpé en Python avec la bibliothèque Tkinter.

Derrière tout ça, il y a pas mal de chose. J'ai plusieurs serveur VPS OVH a 3€ par mois.

-1 est connecté 24/24 aux épic en tick (pour le suivis des alertes et le placement des stops)
-1 est connecté au news, mais chaque minutes elle vérifie si elle doit biper
-1 les carrés sont connecté aux épics en tick aussi, les donnée sont stocké; pour évité de rappeler trop de data ig via API et de se frotter aux limitations (je ne m'en sers plus aujourd'hui. j'ai viré le serveur OVH)
-1 serveur s'occupe du placement des SL+1 si necessaire.

Sur chaque serveur il y a des interface REST pour communiqué et transmettre les informations au RASPI
Et sur mon Raspi il y a aussi des interfaces REST pour communiqué avec les serveur ET aussi avec mon logiciel.

Tout ça en Python 3.8, Flask & CO !:)

Dites moi ce que vous en pensez, si vous voulez en savoir plus ;)

Re: Ayam, la secrétaire du trader.

par takapoto » 22 sept. 2021 08:29

Magnifique !

Bien sûr qu'on veut en savoir plus !!!

Re: Ayam, la secrétaire du trader.

par max38250 » 22 sept. 2021 08:34

:bravo:

Re: Ayam, la secrétaire du trader.

par HellionReign » 22 sept. 2021 08:48

:P Very Nice :top: :top: :top: :mercichinois:

Re: Ayam, la secrétaire du trader.

par DarkPoule » 22 sept. 2021 10:47

Donnons un peu plus de détails:

Le plus simple, c'est les NEWS.

J'ai un serveur VPS OVH qui est s'en occupe.
En revanche il est re-initialisé, a chaque lancement de mon logiciel RASPI chaque matin.

RASPI--> GET Requet Init --> SERVEUR NEWS Reponse.
Les datas sont filtrés sur les "['flag US', 'flag DE', 'flag FR']"
Je parse les dates heures, l'importance.
Les news de Lettonie ne m’intéresse pas :)

Voici les datas retournées, elle sont mis en forme pour ce que j'ai besoin. le but est de filer le max de boulot au serveur distant.
Capture d’écran du 2021-09-22 09-48-12.png
Capture d’écran du 2021-09-22 09-48-12.png (53.62 Kio) Vu 268 fois
L'interface interprète les réponses, et les met en forme.
Toute les 10 secondes, la liste est consulté pour savoir si on doit sonné a -5 min ou a -1 minute ou les news les passé disparaissent pour ne pas polluer.

Sur l'interface RASPI, il y a trois partie,
-interface
-le socket est toujours ouvert en réception en boucle.
-serveur Flask http

tout ceci tourne en parallèle.

SERVEUR DE NEWS DISTANT
En réalité, toute les 10 secondes on consulte la liste des news (stocké en RAM) et on envoie l'action a effectué.
(doit clignoté, sonné, disparaitre etc ... )
Donc les éléments de la liste vont être modifier directement ex :
Donc 4 actions possible :
index_to_remove, index_to_stop5, index_to_alert5, index_to_alert1
On envoie ça sous forme de requête GET avec des paramètres :

http:mon_ip_raspi:port/api/v1/receveid_information/news&index_to_alert5=i
(i etant l'index de la news... un sorte d'ID)

Cette requete est recu par mon RASPI serveur Flask
Qui lui la transcrit en Socket
le socket tourne en boucle comme un fou. en quelques MS.
La requete est réinterpreter par l'interface RASPI (la ou il y a le socket qui tourne) sur une classe python différente, donc complement capable de communiqué entre eux.

Ah je vois que vous en voulez encore !!!

Alors on va me dire pourquoi alors, faire tourner un socket qui fait le pont entre la partie
Serveur Flask Rapi et Interface Raspi.

Parce que c'est deux nigeaux sont incapable (ou je n'ai pas réussi) a les faire tournée en mutlti treading dans deux classe différente dans le meme fichiers lancé.
Flask reclame le first place et l'interface aussi (logique sinon on la voit pas s'affiché)

en fait pour lancé c'est simple :
serveur_flask = Flask()
interface_raspi = Interface_Raspi()

Sauf que pour chaque l'execution rentre sans jamais en sortie. la 1er ligne est executé et jamais la deuxième.
(je rassure j'ai même tenter le multi treading, on arrive sur d'autre conflit)

Alors pour pouvoir le lancer, je lance les deux fichier séparement. Il sont isolés.
Du coup il ne communique pas.
Donc le socket qui lui prend le threading, ce lance avec l'interface. Comme deux bon copains.

Code : #

serveur = Socket_Serveur() #initialisation socket
interface = Interface() #initialisation interface

th2 = threading.Thread(target=serveur.run) # Mise en thread (ou vcpu séparé) le serveur socket
th2.daemon = True
th2.start() # On demarre le thread

interface.run() # on démarre l'interface.
Vous en voulez ENCORE ? ! ça c’était le plus simple.
Et j'ai bien dégraissé pour expliquer :)

Re: Ayam, la secrétaire du trader.

par takapoto » 22 sept. 2021 11:58

Sans vouloir abuser...
Oui, encore !
:)

(Je fais à peu près l'équivalent, mais avec des techniques différentes et ça m'interesse de voir une autre approche)

Re: Ayam, la secrétaire du trader.

par DarkPoule » 22 sept. 2021 14:24

Pour les alertes éditables .
Elle sont envoyées via mon assistant sur PC (le truc de tout les couleurs)
ça envoie un requete vers le serveur distant (buzzer_server) qui stream les epic qui m'interesse quand je click sur "V"
Genre :

Code : #

    def send_dax(self):
        datas = {'dax': self.dax_value.get()}
        return requests.get("{}/api/v1/create_alert".format(config_interface.ip_alert_server), params=datas)
le buzzer_server ecris dans un fichier .pkl les alertes
(https://www.quennec.fr/trucs-astuces/langages/python/python-le-module-pickle)
Je veux que ça reste tout le temps, quand j'eteint et je rallume, que je n'ai pas a réecrire mes alertes.
Pour ça quand je lancer l'interface RASPI j'ai un "/api/v1/get_alert" qui se lance
Et qui va lire le fichier pour replacer les éléments dans l'interface.

dans mon serveur de stream ça creer un dictionnaire avec les attribut de ma liste
genre : un uuid, epic, plus haut ou plus bas ....

voici :

Code : #

        s_epic.alerte_ids[alerte_id] = {'bid': level,
                                        'offer': level,
                                        'type': ttype,
                                        'level_green': level_green,
                                        'level_orange': level_orange,
                                        'level_green_active': False,
                                        'level_orange_active': False,
                                        'level_passing': False}
les différente level précalculer
green = 0.10% du level
orange = 0.05% du level
et si les level ont été passé ou pas... pour pas que ça sonne sans fin. ça sonne 1 fois. C'est tout.

Et pour chaque tick d'épics, je verifie si ça depasse les niveau indiqué
et j'écris tout ça dans mon fichier pkl.

ma liste d'alerte en RAM est mise donc a jour.
Alors chaque tick, la liste des alertes sera comparer avec la valeur du prix actuelle.

Exemple d'un petit bout. :

Code : #

                if prix > level_green and prix < level_orange and level_green_active == False:
                    print('PASS green')
                    if level_green_active == False:
                        v['level_green_active'] = True
                        self.req({"datas_alert_green": uuid})
Je compare le prix actuelle a mon intervall green et orange.
si c'est compris dedans est non activé alors ... on déclenche l'alerte verte!

self.req qui envoie un requete :

Code : #

        req = requests.get(
            "{}/api/v1/receveid_information/alert".format(config_interface.ip_raspi),
           params=datas)
Au RASPI sur mon bureau

Et rebolote, le serveur Flask reçois "datas_alert_green": uuid en parametre
(uuid est l'identification de l'alerte, donc on sais si c'est dax avec tel prix)
qui converti sur socket en local

Code : #

@app.route("/api/v1/receveid_information/alert", methods=['GET'])
def parse_request_alert():
    print('parse_request_alert request.args.to_dict()', request.args.to_dict())
    datas_bytes = convert_args_to_bytes(request.args.to_dict())
    send_socket(datas_bytes)
qui redirige sur la fonction qui va s'occuper de tout faire clignoter.

Voici un bout

Code : #

      
      ...         
                elif 'datas_alert_green' in datas_alert and datas_alert['datas_alert_green'] == uuid:
                    th_cli = threading.Thread(target=self.clignotement2, args=(item, 'green',))
                    th_cli.start()
                    self.song('green_zone')
                    break
Je clignote et je lance un son ... en threading... pour ne pas bloqué l'interface.
Par l'interface est root, et si le code bloque pendant 20 seconde je ne pas agir sur autre chose.

Et pour le plaisir... la fonction "song"

Code : #

    def song(self, song):
        folder = "/home/pi/Desktop/tradingbox/raspi/sounds/" + song + ".wav"
        print(folder)
        print('aplay ' + folder)
        os.system('aplay ' + folder)

J'ai un peu la meme mécanique pour supprimer une alerte etc ...

Re: Ayam, la secrétaire du trader.

par ChristelleP » 22 sept. 2021 19:58

bonsoir Dark ! :)

Re: Ayam, la secrétaire du trader.

par takapoto » 22 sept. 2021 20:21

Merci !

Re: Ayam, la secrétaire du trader.

par DarkPoule » 22 sept. 2021 20:54

Bonsoir Christelle ! Et toi takapoto,? Tu as fait quoi comme système ?

Re: Ayam, la secrétaire du trader.

par takapoto » 22 sept. 2021 21:24

J'ai développé en C#, donc sous Windows, car c'est le langage que j'utilisais professionnellement et je pouvais donc développer des bibliothèques communes, une espèce de cercle vertueux.

Je fais tourner mes programmes sur un seul VPS (car un serveur windows ne coûte pas 3€ par mois) mais l'avantage, c'est que ça facilite les communications entre processus.

Quand j'aurais un moment, je posterais un schéma de mon système.

Sujets similaires
Bricolage secretaire pour ordinateur
Fichier(s) joint(s) par ChristelleP » 02 août 2021 11:14 (13 Réponses)
Le bon trader, et le mauvais trader...
par laurent074 » 31 août 2013 10:00 (15 Réponses)
Trader en compte propre Vs Trader Pro
par falex » 15 févr. 2014 13:59 (40 Réponses)
Trader solitaire et Trader grégaire
par chad » 16 oct. 2016 12:17 (38 Réponses)
TRADER Nomade, le summmun du TRADER , but ultime ?
par Florian.B » 09 sept. 2017 17:50 (105 Réponses)
Trader perdant, trader gagnant, ma conclusion.
par Esope » 20 juin 2018 12:34 (28 Réponses)
Nouveau trader
Fichier(s) joint(s) par artes88 » 26 sept. 2011 22:26 (123 Réponses)
Trader le Forex
par Alexstart » 29 oct. 2011 07:53 (23 Réponses)
Quelque chose à trader, le weekend?
par chifounou » 29 oct. 2011 14:19 (8 Réponses)
quelles valeurs trader ?
par jc-tergal » 21 févr. 2012 16:10 (2 Réponses)