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 queelse: # 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.
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.
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
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
Tu es dev de base?
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)
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)
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.
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
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()
C'est pas déconnant, all in dans le wallet de ton bot clé tu nous racontera 
Le 14 septembre 2023 à 15:27:14 :
C'est pas déconnant, all in dans le wallet de ton bot clé tu nous racontera
Je testerai avec 10$ donc la lune, c'est pas demain ![]()
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 raconteraJe testerai avec 10$ donc la lune, c'est pas demain
Le début de la richesse, je repasserai sur le topic 
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 raconteraJe testerai avec 10$ donc la lune, c'est pas demain
Le début de la richesse, je repasserai sur le topic
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 ![]()
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
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.
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...) 
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.
python, vraiment pas top comme language pour faire un bot maintenable, efficient et rapide
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 ![]()
D’ailleurs j’y connais rien en Python je laisse GPT me chier du code et j’adapte
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é).