CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Un dev python pour bot binance ?

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 13:30:27

Le BTC range de fou en ce moment, je pense qu'il y a moyen de grapiller des 1% ou 0.5% par ci par là selon préférence.

L'idée c'est que le bot s'execute toutes les heures :
Il récupère le cours actuel du BTC/USD

Il récupère le dernier ordre du compte Binance, regarde si c'est un achat ou une vente.

Si c'est un achat : Il regarde si le cours actuel est a +1.1% minimum depuis le cours de l'achat : si +1.1% mini : Vente sinon rien

Si c'est une vente, il regarde si c'est a -1.1% depuis le cours du dernier ordre de vente : si -1.1% mini : Achat sinon rien

J'ai demandé a ChatGPT je voudrai un avis de dev python sur ce code:
je connais le PHP moi pas le python. Je comprends globalement ce qui est écrit, mais impossible de dire si c'est déconnant ou non.

import ccxt
import time

# Configuration de l'API Binance
api_key = 'API KEY'
api_secret = 'SECRET KEY'
exchange = ccxt.binance({
    'apiKey': api_key,
    'secret': api_secret,
})


# Initialisation des variables
last_buy_price = None
last_sell_price = None

 
# Fonction pour vérifier les conditions
def check_conditions():
    symbol = 'BTC/USDT'
    ticker = exchange.fetch_ticker(symbol)
    last_price = ticker['last']

    global last_buy_price
    global last_sell_price
    
# 2 LIGNES AJOUTE PAR MOI
    last_buy_price = float(order['price'])
    last_sell_price = float(order['price'])

    if last_buy_price is not None:
        percent_change_buy = ((last_price - last_buy_price) / last_buy_price) * 100
        if percent_change_buy >= 1.1:
            vendre()
    elif last_sell_price is not None:
        percent_change_sell = ((last_price - last_sell_price) / last_sell_price) * 100
        if percent_change_sell <= -1.1:
            acheter()
    else:
        # Si aucune position ouverte n'est trouvée, nous achetons
        # acheter() je commente pour ne rien faire par default

# Exécution du bot toutes les heures
while True:
    check_conditions()
    time.sleep(3600)  # Attente d'une heure (en secondes)

###############################################################

# Fonction pour acheter
def acheter():
    symbol = 'BTC/USDT'
    balance = exchange.fetch_balance()
    usdt_balance = balance['total']['USDT']
    if usdt_balance > 10:  # Vérification pour éviter les achats minuscules
        order = exchange.create_market_buy_order(symbol, usdt_balance)
        print(f"Achat de {usdt_balance} USDT de BTC à {order['price']} USDT par BTC")

        # Mise à jour du dernier prix d'achat
        global last_buy_price
        last_buy_price = float(order['price'])

###############################################################

    # Fonction pour vendre
def vendre():
    symbol = 'BTC/USDT'
    balance = exchange.fetch_balance()
    btc_balance = balance['total']['BTC']
    if btc_balance > 0.001:  # Vérification pour éviter les ventes minuscules
        order = exchange.create_market_sell_order(symbol, btc_balance)
        print(f"Vente de {btc_balance} de BTC à {order['price']} USDT par BTC")

        # Mise à jour du dernier prix de vente
        global last_sell_price
        #last_sell_price = float(order['price'])

J'ai un problème avec le code initial de GPT :
Quand il initialise les variables avant check_conditions:
last_buy_price = None
last_sell_price = None

et c'est la fonction check_conditions() qui va déclencher acheter() ou vendre()
Hors dans check_conditions :

if last_buy_price is not None:
if last_sell_price is not None:
Donc ça va jamais s'executer vu qu'a ce moment là c'est = None. Il n'a donc pas encore accès aux valeurs car celles-ci sont récupérés dans acheter() ou vendre() dans le code de GPT. Il va jamais être en capacité de les récupérer donc pas mieux de récupérer lors de check_conditions avec les 2 lignes que j'ai ajouté ?

Globalement vous pouvez check le code et me dire si c'est deconnant ou ça semble tenir a peu près la route ?

d'aileurs je viens de voir que
else: # Si aucune position ouverte n'est trouvée, nous achetons acheter()

c'est débile, il va acheter peu importe le prix du coup donc a virer déjà

Je viens de commenter le acheter() comme ça au moins rien ne se passe par default et une action ne se déclenchera que si le if ou elif sont true.

Message édité le 14 septembre 2023 à 13:31:11 par All-in-Ble-2
OnlyDogeCoin
OnlyDogeCoin
Niveau 37
14 septembre 2023 à 13:33:18

J'ai déjà codé quelque chose de similaire. C'était surtout pour avoir une vue d'ensemble des cours.

Le niveau de chatGPT en matière de code est assez bas.
1. last_sell_price = None : c'est horrible d'écrire quelque chose comme ça. On ne sait pas de quel type c'est.
2. C'est très dangereux d'utiliser le mot "global" dans plusieurs fonctions pour une même variable. Ce n'est pas sérieux. On peut facilement s'y perdre sur la valeur. Il vaut mieux rentrer en argument ces variables et les retourner si on en a besoin.

Pour répondre à ta question, les variables sont initialisées ici:
last_buy_price = float(order['price'])
last_sell_price = float(order['price'])
ça ne sera jamais None du coup.

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 14:53:29

Le 14 septembre 2023 à 13:33:18 :
J'ai déjà codé quelque chose de similaire. C'était surtout pour avoir une vue d'ensemble des cours.

Le niveau de chatGPT en matière de code est assez bas.
1. last_sell_price = None : c'est horrible d'écrire quelque chose comme ça. On ne sait pas de quel type c'est.
2. C'est très dangereux d'utiliser le mot "global" dans plusieurs fonctions pour une même variable. Ce n'est pas sérieux. On peut facilement s'y perdre sur la valeur. Il vaut mieux rentrer en argument ces variables et les retourner si on en a besoin.

Pour répondre à ta question, les variables sont initialisées ici:
last_buy_price = float(order['price'])
last_sell_price = float(order['price'])
ça ne sera jamais None du coup.

oui parce que j'ai rajouté les 2 lignes de code, de base GPT ne les a pas mises donc ça aurait été None

Sinon le code a l'air fonctionnel tu pense ou c'est a chier ?
Le but c'est vraiment pas de faire un gros bot, juste un truc super simple qui va attendre que ça fasse -1.1% ou +1.1% minimum par rapport au dernier ordre avant d'effectuer la prochaine action

Message édité le 14 septembre 2023 à 14:55:28 par All-in-Ble-2
All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 15:03:33

d'ailleurs je me rend compte que
last_buy_price = float(order['price'])
last_sell_price = float(order['price'])

c'est complètement faux aussi.
Moi je veux qu'il récupère le dernier achat ou la derniere vente de mon historique de transaction.

dans les divers echanges que j'ai eu avec GPT il m'a sorti ça a un moment
last_trade = trades[-1] if trades else None # Obtenez la dernière transaction
Mais je sais pas exactement ce qu'on obtient avec ça, ce que ça va me retourner

Message édité le 14 septembre 2023 à 15:05:00 par All-in-Ble-2
Goblin-Slayeur
Goblin-Slayeur
Niveau 59
14 septembre 2023 à 15:04:48

Tu es dev de base?

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 15:15:12

Le 14 septembre 2023 à 15:04:48 :
Tu es dev de base?

Je baragouine le php genre faire un systeme de forum simple type JVC ou quoi c'est fine (j'avais commencé pour le fun)
(le code sera moche, et mal opti a en faire péter une durite a un senior, mais ça fonctionnera)
https://image.noelshack.com/fichiers/2023/37/4/1694696966-capture-20230914150830959.jpg

je serai capable de refaire une base de réseau social type facebook de ses debuts en full php sans tout le côté dynamique par exemple (J'suis une tanche en js)
(ça me prendrai du temps, mais j'arriverai a un resultat de base fonctionnel avec les options de base d'un reseau social : poster sur un mur ajouter des gens en amis, edition profil / ajout photo... etc..., la ou j'aurai plus de mal ça serait sur l'algo pour recupérer un fil d'actu)

Legangduchat
Legangduchat
Niveau 44
14 septembre 2023 à 15:18:42

Le 14 septembre 2023 à 15:03:33 :
d'ailleurs je me rend compte que
last_buy_price = float(order['price'])
last_sell_price = float(order['price'])

Tu récupérés comme ça : https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT

Tu remplaces price par le paramètre que tu veux. Après sur le fond, utiliser binance c'est une mauvaise idée autant trader sur un Dex, tes paramètres pour l'achat et vente sont aléatoires ton bot ne sera pas rentable.

Kopanica
Kopanica
Niveau 9
14 septembre 2023 à 15:20:44

ben tu test.. c'est le + simple.
tu buy/sell 0.000001$, et tu met un % de 0.01 pour declencher le bot + plus souvent possible.
et tu check tes result apres qques minutes.
pui tu corrige avec chatgpt again

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 15:25:56

Le 14 septembre 2023 à 15:18:42 :

Le 14 septembre 2023 à 15:03:33 :
d'ailleurs je me rend compte que
last_buy_price = float(order['price'])
last_sell_price = float(order['price'])

Tu récupérés comme ça : https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT

Tu remplaces price par le paramètre que tu veux. Après sur le fond, utiliser binance c'est une mauvaise idée autant trader sur un Dex, tes paramètres pour l'achat et vente sont aléatoires ton bot ne sera pas rentable.

oui mais la je récupère le cours actuel, la valeur "price" (26644.99000000)
hors c'est pas ce que je veux (enfin, je veux cette donnée mais pas seulement)

Moi je veux recupérer le prix auquel il etait sur ma dernière transaction, pour ensuite comparer avec le ticker (et donc ce que tu me donne) pour voir si ça a fait +1.1 ou -1.1 afin de déclencher la fonction acheter() ou vendre()

Message édité le 14 septembre 2023 à 15:26:53 par All-in-Ble-2
Torino
Torino
Niveau 79
14 septembre 2023 à 15:27:14

C'est pas déconnant, all in dans le wallet de ton bot clé tu nous racontera https://image.noelshack.com/fichiers/2017/18/1494112573-risi10.png

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 15:28:11

Le 14 septembre 2023 à 15:27:14 :
C'est pas déconnant, all in dans le wallet de ton bot clé tu nous racontera https://image.noelshack.com/fichiers/2017/18/1494112573-risi10.png

Je testerai avec 10$ donc la lune, c'est pas demain :rire:

Torino
Torino
Niveau 79
14 septembre 2023 à 15:28:57

Le 14 septembre 2023 à 15:28:11 All-in-Ble-2 a écrit :

Le 14 septembre 2023 à 15:27:14 :
C'est pas déconnant, all in dans le wallet de ton bot clé tu nous racontera https://image.noelshack.com/fichiers/2017/18/1494112573-risi10.png

Je testerai avec 10$ donc la lune, c'est pas demain :rire:

Le début de la richesse, je repasserai sur le topic https://image.noelshack.com/fichiers/2017/18/1494112573-risi10.png

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 15:34:06

Le 14 septembre 2023 à 15:28:57 :

Le 14 septembre 2023 à 15:28:11 All-in-Ble-2 a écrit :

Le 14 septembre 2023 à 15:27:14 :
C'est pas déconnant, all in dans le wallet de ton bot clé tu nous racontera https://image.noelshack.com/fichiers/2017/18/1494112573-risi10.png

Je testerai avec 10$ donc la lune, c'est pas demain :rire:

Le début de la richesse, je repasserai sur le topic https://image.noelshack.com/fichiers/2017/18/1494112573-risi10.png

possible, 0.5% c'est une hausse ou une baisse de seulement 130$ y'a moyen de faire des montagnes russes plusieurs fois dans la journée en cette periode de range de +-1%/jour à la cloture :hap:

Legangduchat
Legangduchat
Niveau 44
14 septembre 2023 à 15:39:29

oui mais la je récupère le cours actuel, la valeur "price" (26644.99000000)
hors c'est pas ce que je veux (enfin, je veux cette donnée mais pas seulement)

Moi je veux recupérer le prix auquel il etait sur ma dernière transaction, pour ensuite comparer avec le ticker (et donc ce que tu me donne) pour voir si ça a fait +1.1 ou -1.1 afin de déclencher la fonction acheter() ou vendre()

Tu enregistres dans une variable https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT au moment de l'achat. Après tu compares ta variable à interval régulier à https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 15:41:13

Le 14 septembre 2023 à 15:39:29 :

oui mais la je récupère le cours actuel, la valeur "price" (26644.99000000)
hors c'est pas ce que je veux (enfin, je veux cette donnée mais pas seulement)

Moi je veux recupérer le prix auquel il etait sur ma dernière transaction, pour ensuite comparer avec le ticker (et donc ce que tu me donne) pour voir si ça a fait +1.1 ou -1.1 afin de déclencher la fonction acheter() ou vendre()

Tu enregistres dans une variable https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT au moment de l'achat. Après tu compares ta variable à interval régulier à https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT

oui c'est une solution, mais j'imagine qu'on doit avoir accès a ces données directement via l'api je pense.

SingeSavant2
SingeSavant2
Niveau 21
14 septembre 2023 à 16:04:26

quelqu'un pour coder un bot temporel?

du type ouvre long a 9h59. et close long à 10h00. et 1 seconde en lui donnant les cryptos sur lesquelles le faire??

l'idée? se gaver en founding fee (trb, etc...) https://image.noelshack.com/fichiers/2017/32/3/1502307959-rob2.png

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 21:10:50

Bon le script est installé sur mon pi et rentre bien dans les différentes fonctions si j’obtiens bien le + ou -1.1% juste que la je dois le faire manuellement pendant le test donc faut que je crée un fichier de log pour y inscrire

1) toutes les transactions qui se passent.

2) Avoir une trace du taux lors de la dernière transaction a récupérer pour pouvoir réutiliser cette donnée.

fopen marche pas donc je chercherai demain comment fix ca pour fabriquer mes logs.

Message édité le 14 septembre 2023 à 21:12:39 par All-in-Ble-2
fiondestartuper
fiondestartuper
Niveau 7
14 septembre 2023 à 21:12:53

python, vraiment pas top comme language pour faire un bot maintenable, efficient et rapide

All-in-Ble-2
All-in-Ble-2
Niveau 14
14 septembre 2023 à 21:19:45

Le 14 septembre 2023 à 21:12:53 :
python, vraiment pas top comme language pour faire un bot maintenable, efficient et rapide

A la base je viens de php c’est encore plus a chier pour cette application :fou:
D’ailleurs j’y connais rien en Python je laisse GPT me chier du code et j’adapte

Message édité le 14 septembre 2023 à 21:20:17 par All-in-Ble-2
OnlyDogeCoin
OnlyDogeCoin
Niveau 37
14 septembre 2023 à 22:15:16

Le 14 septembre 2023 à 21:12:53 :
python, vraiment pas top comme language pour faire un bot maintenable, efficient et rapide

Oula. C'est complètement faux. C'est très simple d'utiliser des APIs, de s'organiser dans le projet, de stocker des informations (utilisation de dataframes => csv) etc... Bien sûr, le plus important, c'est très facile de coder avec python (langage pas du tout typé).

La vidéo du moment