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

Script de trading

dark-betsoin
dark-betsoin
Niveau 22
22 mai 2024 à 21:35:07

Bonjour les crypto-millionnaires !

Cela fait quelques années que j'ai des crypto et pour être tout à fait franc j'avais laissé ça mourir dans un coin en faisant ma vie. https://image.noelshack.com/fichiers/2016/38/1474551948-1474294460-picsart-08-24-03-10-19.png

En voyant que le marché s'est réveillé j'ai repris un peu le train mais je me dis que j'en ai marre d'avoir constamment les yeux rivés sur les tradingview de mes crypto. https://image.noelshack.com/fichiers/2018/14/1/1522705251-pepe-ordi-nuit.png

En regardant ce qu'il se faisait, j'ai compris qu'il était possible de mettre en place des scripts python se connectant aux API de certains exchange pour... faire le boulot à ma place ! Sauf que pour être toutafay franc j'y connais RIEN en script, en python, etc. (je ne suis pas en info !) https://image.noelshack.com/fichiers/2018/11/3/1521045215-benzaie-depasse-l-entendement.png

Mais nous sommes en 2024 donc j'ai demandé à... ChatGPT quelques précisions et des exemples de scripts pour m'aider à faire marcher le truc... https://image.noelshack.com/fichiers/2023/15/1/1681149960-prions-gpt.png

Mon objectif n'est pas de maximiser mes profits avec des x10/x100 (mais je ne serai pas contre... https://image.noelshack.com/fichiers/2022/14/5/1649451342-pascal-praud-hehe-kali-yuga.png ), je ne souhaite pas jouer avec des long/short uniquement des ordres simples d'achat/vente (pour commencer). Je n'ai même pas une quantité énorme avec laquelle m'amuser (environ 4k$ aux taux actuel).
Ca me permettra aussi de mettre un pied dans ce langage python, ça pourrait in fine m'être utile dans mon travail (industrie avec énormément de génération de data qu'on utilise relativement "peu" aujourd'hui).

Bref je sais je suis un gros GOLEMAX je suis sur CoinBase mais c'est pour commencer, je changerai si l'herbe est plus verte ailleurs...

En attendant j'ai demandé à ChatGPT un exemple de script python pour une stratégie d'achat/vente sur la paire ETH/USDC en prenant en compte la variation du marché (j'ai fait plusieurs itérations à ChatGPT pour avoir un truc qui m'a l'air, à moi néophyte, plus efficace) et j'aimerai avoir un avis de l'ELITE :

import cbpro
import pandas as pd
import numpy as np
import time
from datetime import datetime, timedelta

# Configuration des informations d'authentification
api_key = 'your_api_key'
api_secret = 'your_api_secret'
passphrase = 'your_passphrase'

# Créer un client authentifié
auth_client = cbpro.AuthenticatedClient(api_key, api_secret, passphrase)

# Fonction pour récupérer les données historiques
def get_historical_data(product_id, granularity, start=None, end=None):
    data = []
    while start < end:
        batch_end = min(start + timedelta(seconds=granularity * 300), end)
        batch = auth_client.get_product_historic_rates(product_id, granularity=granularity, start=start.isoformat(), end=batch_end.isoformat())
        if not batch:
            break
        data += batch
        start = batch_end
    data.reverse()  # Inverser les données pour avoir les plus anciennes en premier
    return data

# Fonction pour vérifier le solde
def get_balance(currency):
    accounts = auth_client.get_accounts()
    for account in accounts:
        if account['currency'] == currency:
            return float(account['balance'])
    return 0.0

# Fonction pour obtenir le prix actuel de ETH/USDC
def get_eth_usdc_price():
    ticker = auth_client.get_product_ticker(product_id='ETH-USDC')
    return float(ticker['price'])

# Fonction pour placer un ordre limite d'achat
def place_buy_order(price, usdc_amount):
    size = usdc_amount / price  # Calculer la taille en ETH
    order = auth_client.place_limit_order(
        product_id='ETH-USDC',
        side='buy',
        price=str(price),
        size=str(size)
    )
    return order

# Fonction pour placer un ordre limite de vente
def place_sell_order(price, eth_amount):
    order = auth_client.place_limit_order(
        product_id='ETH-USDC',
        side='sell',
        price=str(price),
        size=str(eth_amount)
    )
    return order

# Fonction pour calculer les moyennes mobiles
def calculate_moving_averages(data, short_window, long_window):
    data['short_mavg'] = data['close'].rolling(window=short_window).mean()
    data['long_mavg'] = data['close'].rolling(window=long_window).mean()
    return data

# Paramètres de la stratégie
short_window = 50  # Fenêtre courte pour la moyenne mobile
long_window = 200  # Fenêtre longue pour la moyenne mobile
order_usdc_amount = 100  # Montant de l'ordre en USDC pour les achats
order_eth_amount = 0.1  # Montant de l'ordre en ETH pour les ventes

# Période de données historiques
data_period_days = 5  # Nombre de jours de données historiques
granularity = 300  # Granularité des données (en secondes, ici 5 minutes)

# Boucle principale de la stratégie
while True:
    end_time = datetime.utcnow()
    start_time = end_time - timedelta(days=data_period_days)  # Période de récupération des données
    
    historical_data = get_historical_data('ETH-USDC', granularity=granularity, start=start_time, end=end_time)
    df = pd.DataFrame(historical_data, columns=['time', 'low', 'high', 'open', 'close', 'volume'])
    df['time'] = pd.to_datetime(df['time'], unit='s')
    df.set_index('time', inplace=True)
    
    df = calculate_moving_averages(df, short_window, long_window)
    
    latest_price = get_eth_usdc_price()
    short_mavg = df['short_mavg'].iloc[-1]
    long_mavg = df['long_mavg'].iloc[-1]
    
    print(f"Prix actuel de ETH/USDC: {latest_price}")
    print(f"Moyenne mobile courte: {short_mavg}")
    print(f"Moyenne mobile longue: {long_mavg}")
    
    eth_balance = get_balance('ETH')
    usdc_balance = get_balance('USDC')
    
    # Logique d'achat
    if short_mavg > long_mavg and usdc_balance >= order_usdc_amount:
        print("Placer un ordre d'achat")
        order = place_buy_order(latest_price, order_usdc_amount)
        print(f"Ordre d'achat passé: {order}")
    
    # Logique de vente
    if short_mavg < long_mavg and eth_balance >= order_eth_amount:
        print("Placer un ordre de vente")
        order = place_sell_order(latest_price, order_eth_amount)
        print(f"Ordre de vente passé: {order}")
    
    # Attendre avant la prochaine vérification
    time.sleep(granularity)  # Attendre la durée de la granularité avant la prochaine exécution
MrInformateur
MrInformateur
Niveau 66
22 mai 2024 à 21:50:49

Très mauvaise idée de confier ses fonds à un programme quand :
- On y connait rien en programmation
- Les bot de trading sont dans l'écrasante majorité des cas PAS rentable
- Ta stratégie est hyper basique et sous-performera tout le marché

Soit tu holdes, soit tu te mets sérieusement à la programmation, mais surtout pas pour faire du bot de trading de Jean-AT.

Kesop78
Kesop78
Niveau 35
22 mai 2024 à 21:56:28

J'ai un pote qui a fait un script, il utilise que ça pour trade il se fait beaucoup. J'attends de totalement le maîtriser mais les backtests sont très bons.

J'en conclut que si c'est bien maîtriser, ça peut être très très efficace

dark-betsoin
dark-betsoin
Niveau 22
22 mai 2024 à 21:58:31

Le 22 mai 2024 à 21:50:49 :
Très mauvaise idée de confier ses fonds à un programme quand :
- On y connait rien en programmation
- Les bot de trading sont dans l'écrasante majorité des cas PAS rentable
- Ta stratégie est hyper basique et sous-performera tout le marché

Soit tu holdes, soit tu te mets sérieusement à la programmation, mais surtout pas pour faire du bot de trading de Jean-AT.

Ok je vois, merci pour ton retour, c'est un peu ce que je pensais, la théorie du bot trading qui fonctionne c'est si t'es le seul à le faire et si le marché ne bouge pas autant qu'un vol Singapour Airlines en pleines turbulences https://image.noelshack.com/fichiers/2018/27/5/1530900860-ass.png

Au final c'est le HOLD en oubliant mon compte dans un coin qui m'a fait revenir à mon niveau de mi-2022 plutôt que de faire le singe à me prendre pour un trader https://image.noelshack.com/fichiers/2017/42/3/1508345431-singetrader.png

J'ai cru comprendre que Coinbase proposait un environnement de test pour simuler des stratégies et juste voir ce que cela aurait donné (je ne compte pas faire du rétroactif qui amha ne sert à rien car s'est déjà produit et l'incertitude inhérent à un marché comme celui-ci des crypto fera tirer des conclusions fallacieuses).

La vidéo du moment