Maison >interface Web >js tutoriel >Suivi automatisé des prix des cryptomonnaies à l'aide de GMAIL et Python
Suivez-vous manuellement les valeurs des crypto-monnaies ?
Souhaitez-vous être averti par e-mail lorsque la valeur de votre crypto-monnaie augmente ou diminue d'une valeur spécifique ?
Voulez-vous arrêter d'aller sur les sites Web d'échange de crypto-monnaies juste pour voir la valeur de la pièce ?
Si vous avez répondu « Oui », alors vous êtes au bon endroit.
Que vous soyez un trader chevronné ou un passionné de crypto, il est crucial de rester informé des derniers prix. Heureusement, Python peut vous aider à automatiser ce processus, vous faisant ainsi gagner du temps et des efforts.
Dans cet article, je vais vous présenter un simple script Python qui suit la valeur de n'importe quelle crypto-monnaie sur un échange spécifique en temps réel.
Les marchés des crypto-monnaies fonctionnent 24h/24 et 7j/7 et les prix peuvent changer en quelques secondes. En automatisant le processus de suivi, vous pouvez :
Pour suivre, assurez-vous d'avoir les éléments suivants :
Il y a trois fichiers :
Le code entier peut être trouvé dans cet aperçu GitHub.
Remarque : le code pourrait être remanié pour améliorer la lisibilité et l'efficacité, mais l'accent principal ici est mis sur la fonctionnalité.
Remarque : dans cet exemple, j'ai utilisé "Kraken" comme échange cryptographique où je suis les prix.
Lorsque la valeur de la pièce (par exemple) Polkadot augmente de 1 EUR, vous recevez une notification par e-mail comme celle-ci :
Importez les bibliothèques nécessaires.
load_dotenv()
Charge des variables telles que les informations d'identification de messagerie (MOT DE PASSE) à partir d'un fichier .env pour une manipulation sécurisée.
load_dotenv()
Objectif : envoie une notification par e-mail au format HTML lorsque les seuils de prix sont atteints.
Charge le modèle d'e-mail à partir d'un fichier externe (email_template.html).
def send_email(subject, price, currency_name, image_url, price_change): sender_email = "your_email@gmail.com" receiver_email = "your_email@gmail.com" password = os.getenv("PASSWORD") -> here you need to type your generated google account app password msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = subject if price_change > 0: change_emoji = "?" elif price_change < 0: change_emoji = "?" else: change_emoji = "⚖️" with open('email_template.html', 'r', encoding='utf-8') as f: html_template = f.read() html_content = html_template.format( currency_name=currency_name, price=price, image_url=image_url, change_emoji=change_emoji ) msg.attach(MIMEText(html, 'html')) try: server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(sender_email, password) server.sendmail(sender_email, receiver_email, msg.as_string()) print("E-mail sent!") except Exception as e: print(f"Error occured: {e}") finally: server.quit()
Objectif : ajoute un délai pour éviter les requêtes excessives vers le site Web cible, évitant ainsi la détection en tant que bot.
def delay(): time.sleep(2)
Objectif : charge les détails de la crypto-monnaie (par exemple, nom, URL, imagesrc) à partir d'un fichier JSON.
def load_cryptocurrencies(): with open('cryptocurrencies.json', 'r') as f: return json.load(f)
Objectif : configure un navigateur Chrome sans tête pour récupérer les prix des crypto-monnaies.
sans tête : exécute Chrome sans interface graphique.
Agent utilisateur personnalisé : imite l'utilisation réelle du navigateur pour une meilleure évasion de la détection des robots.
chrome_options = Options() header = Headers(browser="chrome", os="win", headers=False) customUserAgent = header.generate()['User-Agent'] chrome_options.add_argument(f"user-agent={customUserAgent}") chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
cryptocurrencies = load_cryptocurrencies() for currency in cryptocurrencies: try: url = f"https://www.kraken.com/prices/{currency['url']}" driver.get(url) delay() price_element = driver.find_element(By.CLASS_NAME, "asset-price.black-color")
Analyse le texte du prix et le convertit en flottant pour comparaison et calcul
price = price_element.text.strip().replace('€', '').replace(',', '.') try: price = float(price) except ValueError: print(f"Error while conversion price for {currency['name']}: {price}") continue
Récupère le dernier prix enregistré à partir d'un fichier texte. S'il n'existe pas, cela suppose qu'il n'y a aucune donnée antérieure.
Calcule le changement de prix (price_change).
previous_price_file = f"previous_price_{currency['url']}.txt" try: with open(previous_price_file, 'r') as file: previous_price = float(file.read().strip()) except FileNotFoundError: previous_price = None price_change = price - previous_price
Définit les seuils pour les notifications de changement de prix :
Remarque : si vous souhaitez suivre des pièces avec plus de chiffres, vous devez l'adapter ici.
if previous_price is not None: if price < 100: if abs(price - previous_price) >= 1: subject = f"New price {currency['name']}: {price}" send_email(subject, price, currency['name'], currency['imagesrc'], price_change) else: if abs(price - previous_price) >= 5: subject = f"New price {currency['name']}: {price}" send_email(subject, price, currency['name'], currency['imagesrc'], price_change)
Enregistre le prix actuel dans le fichier texte pour des comparaisons futures.
with open(previous_price_file, 'w') as file: file.write(str(price))
except Exception as e: print(f"Error occured for {currency['name']}: {e}")
Ferme l'instance du navigateur une fois toutes les tâches terminées.
Pour mettre cela en action une fois par heure, ajoutez ceci :
driver.quit()
crontab -e
En suivant ce guide, vous pouvez suivre les prix des cryptomonnaies et recevoir des notifications par e-mail en temps réel pendant que vous dormez !
Si vous avez trouvé cet article utile ou si vous avez des idées pour améliorer le script, n'hésitez pas à laisser un commentaire ci-dessous ?
Bon codage et trading réussi !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!