Trading algorithmique avec Python et Robinhood

Feb 20 2023
Gagner de l'argent en bourse implique souvent beaucoup de stress, de temps et de risques. Et s'il existait un moyen de réduire le stress et le temps nécessaire à l'investissement ? Rejoindre Robinhood Robinhood est une application de négociation d'actions et d'investissement sans commission qui permet aux gens de commencer rapidement et facilement à investir dans le marché boursier.
Photo par Tech Daily sur Unsplash

Gagner de l'argent en bourse implique souvent beaucoup de stress, de temps et de risques. Et s'il existait un moyen de réduire le stress et le temps nécessaire à l'investissement ?

Rejoindre Robinhood

Robinhood est une application de négociation d'actions et d'investissement sans commission qui permet aux gens de commencer rapidement et facilement à investir dans le marché boursier. La société présente de nombreux avantages tels que l'absence de minimum de compte, l'absence de commissions sur les transactions et la possibilité de négocier des options.

De plus, la plate-forme est intuitive et fournit aux utilisateurs des informations telles que la moyenne mobile sur 50 et 200 jours, les notes des analystes sur l'opportunité d'acheter ou de vendre une action et les dernières nouvelles provenant de diverses sources.

Vous pouvez rejoindre Robinhood en utilisant mon lien ci-dessous, et nous obtiendrons tous les deux un stock gratuit d'une valeur de 5 $ jusqu'à 200 $.

L'algorithme

L'algorithme que nous utiliserons est un croisement de moyenne mobile couramment utilisé par les analystes boursiers. Cet algorithme surveille la moyenne mobile simple (SMA), la moyenne arithmétique du cours d'une action sur une période à court terme, et la compare à la moyenne mobile d'une période à long terme.

Un signal pour acheter une action est lorsque le SMA à court terme passe au-dessus du SMA à long terme, appelé croix dorée. Au contraire, un signal pour vendre une action est lorsque le SMA à court terme passe en dessous du SMA à long terme, connu sous le nom de croix de la mort.

Codage

Pour commencer, nous devrons d'abord installer la bibliothèque robin_stocks, nous permettant de nous connecter à un compte Robinhood.

pip install robin_stocks

Nous importerons ensuite les bibliothèques requises et fournirons les informations d'identification du compte Robinhood.

import robin_stocks as r
import time

# Replace "your_username" and "your_password" with your own credentials
r.login(username="your_username", password="your_password")

# Desired stock symbol
stock_symbol = "AAPL"

# Obtain moving averages
MA_50 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='50day')[0]['close_price']
MA_200 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='200day')[0]['close_price']

while True:
    # Current stock price
    current_price = float(r.stocks.get_latest_price(stock_symbol)[0])
    
    # Calculate new moving averages
    MA_50 = (49 * MA_50 + current_price) / 50
    MA_200 = (199 * MA_200 + current_price) / 200
    
    # Condition to buy or sell
    if MA_50 > MA_200:
        # Buy
        invest_amount = 1000
        account_balance = float(r.crypto.get_crypto_currency_balance('USD')['quantity'])
        if account_balance >= invest_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, invest_amount)
            print("Bought", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    else:
        # Sell
        sell_amount = 1000
        position = r.crypto.get_crypto_currency_balance(stock_symbol)
        if float(position['quantity']) >= sell_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, -sell_amount)
            print("Sold", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    
    # Wait for one minute before checking the new stock price
    time.sleep(60)

import robin_stocks as r
import time

# Replace "your_username" and "your_password" with your own credentials
r.login(username="your_username", password="your_password")

# Desired stock symbol
stock_symbol = "AAPL"

# Obtain moving averages
MA_50 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='50day')[0]['close_price']
MA_200 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='200day')[0]['close_price']

while True:
    # Current stock price
    current_price = float(r.stocks.get_latest_price(stock_symbol)[0])
    
    # Calculate new moving averages
    MA_50 = (49 * MA_50 + current_price) / 50
    MA_200 = (199 * MA_200 + current_price) / 200
    
    # Condition to buy or sell
    if MA_50 > MA_200:
        # Buy
        invest_amount = 1000
        account_balance = float(r.crypto.get_crypto_currency_balance('USD')['quantity'])
        if account_balance >= invest_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, invest_amount)
            print("Bought", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    else:
        # Sell
        sell_amount = 1000
        position = r.crypto.get_crypto_currency_balance(stock_symbol)
        if float(position['quantity']) >= sell_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, -sell_amount)
            print("Sold", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    
    # Wait for one minute before checking the new stock price
    time.sleep(60)

J'espère que vous apprécierez la mise en œuvre de vos propres algorithmes de trading en utilisant Python, et si vous avez des questions, commentez ci-dessous et je serai heureux d'y répondre !