Алгоритмическая торговля с Python и Robinhood
Зарабатывание денег на фондовом рынке часто связано с большим стрессом, временем и риском. Что, если бы был способ уменьшить стресс и время, необходимое для инвестиций?
Присоединение к Робингуду
Robinhood — это приложение для торговли акциями и инвестирования без комиссии, которое позволяет людям быстро и легко начать инвестировать в фондовый рынок. Компания имеет много преимуществ, таких как отсутствие минимального счета, отсутствие комиссий по сделкам и возможность торговать опционами.
Кроме того, платформа интуитивно понятна и предоставляет пользователям такую информацию, как 50-дневная и 200-дневная скользящая средняя, рейтинги аналитиков о том, следует ли покупать или продавать акции, а также последние новости из различных источников.
Вы можете присоединиться к Robinhood, используя мою ссылку ниже, и мы оба получим бесплатные акции стоимостью от 5 до 200 долларов.
Алгоритм
Алгоритм, который мы будем использовать, представляет собой пересечение скользящих средних, который обычно используется аналитиками фондового рынка. Этот алгоритм отслеживает простую скользящую среднюю (SMA), среднее арифметическое цены акции за краткосрочный период, и сравнивает ее со скользящей средней за долгосрочный период.
Сигналом к покупке акции является пересечение краткосрочной SMA выше долгосрочной SMA, что называется золотым крестом. Напротив, сигналом к продаже акции является пересечение краткосрочной SMA ниже долгосрочной SMA, известное как крест смерти.
Кодирование
Для начала нам нужно установить библиотеку robin_stocks, которая позволит нам подключиться к учетной записи Robinhood.
pip install robin_stocks
Затем мы импортируем необходимые библиотеки и предоставим учетные данные учетной записи 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)
Надеюсь, вам понравится реализовывать собственные торговые алгоритмы с помощью Python, а если у вас есть какие-либо вопросы, оставьте комментарий ниже, и я буду рад на них ответить!

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































