I. PREPARING ENVIRONMENT
II. BASIC TASKS:
EXTRA. How to get historical data
ADVANCED ORDERS - A STEP TOWARDS A TRADING BOT
You can find more info on alpaca.markets:
import warnings
warnings.filterwarnings('ignore')
!pip install alpaca-py
api_key = "your API KEY" #replace it with your own KEY_ID from Alpaca: https://alpaca.markets/
secret_key = "your SECRET KEY" #replace it with your own SECRET_KEY from Alpaca
Submitting order to get all positions
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
getting_all_positions = trading_client.get_all_positions()
getting_all_positions
BUY GOOG
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="GOOG",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
BUY APPL
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
SELL APPL
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.SELL,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
SELL GOOG
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="GOOG",
qty=1,
side=OrderSide.SELL,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
BUY BTC
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="BTC/USD",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.GTC
)
)
Get all positions
trading_client.get_all_positions()
SELL BTC
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="BTC/USD",
qty=1,
side=OrderSide.SELL,
time_in_force=TimeInForce.GTC
)
)
Get all positions
trading_client.get_all_positions()
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="BTC/USD",
qty=0.1,
side=OrderSide.BUY,
time_in_force=TimeInForce.GTC
)
)
trading_client.get_all_positions()
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="BTC/USD",
qty=0.1,
side=OrderSide.SELL,
time_in_force=TimeInForce.GTC
)
)
trading_client.get_all_positions()
Closing all positions
market_order = trading_client.close_all_positions()
trading_client.get_all_positions()
GETTING HISTORICAL DATA
from alpaca.data.historical import CryptoHistoricalDataClient
from alpaca.data.requests import CryptoBarsRequest
from alpaca.data.timeframe import TimeFrame
# no keys required for crypto data
client = CryptoHistoricalDataClient()
request_params = CryptoBarsRequest(
symbol_or_symbols=["BTC/USD", "ETH/USD"],
timeframe=TimeFrame.Day,
start="2024-08-01"
)
bars = client.get_crypto_bars(request_params)
bars
bars['BTC/USD']
from alpaca.data.historical import CryptoHistoricalDataClient
from alpaca.data.requests import CryptoBarsRequest
from alpaca.data.timeframe import TimeFrame
# no keys required for crypto data
client = CryptoHistoricalDataClient()
request_params = CryptoBarsRequest(
symbol_or_symbols="BTC/USD",
timeframe=TimeFrame.Day,
start="2024-08-01"
)
bars = client.get_crypto_bars(request_params)
bars
bars['BTC/USD']
BUY GOOG
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="GOOG",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
BUY APPL
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
SELL APPL
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.SELL,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
SELL GOOG
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="GOOG",
qty=1,
side=OrderSide.SELL,
time_in_force=TimeInForce.DAY
)
)
Get all positions
trading_client.get_all_positions()
api_key = "your API KEY" #replace it with your own KEY_ID from Alpaca: https://alpaca.markets/
secret_key = "your SECRET KEY" #replace it with your own SECRET_KEY from Alpaca
from alpaca.trading.client import TradingClient
trading_client = TradingClient(api_key, secret_key, paper=True)
trading_client.get_all_positions()
BUY BTC
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="BTC/USD",
qty=0.1,
side=OrderSide.BUY,
time_in_force=TimeInForce.GTC
)
)
Get all positions
trading_client.get_all_positions()
SELL BTC
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="BTC/USD",
qty=trading_client.get_open_position('BTCUSD').qty, #sell all the BTCUSD we have
side=OrderSide.SELL,
time_in_force=TimeInForce.GTC
)
)
trading_client.get_all_positions()
api_key = "your API KEY" #replace it with your own KEY_ID from Alpaca: https://alpaca.markets/
secret_key = "your SECRET KEY" #replace it with your own SECRET_KEY from Alpaca
from alpaca.trading.client import TradingClient
trading_client = TradingClient(api_key, secret_key, paper=True)
trading_client.get_all_positions()
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest, LimitOrderRequest, TakeProfitRequest, StopLossRequest
from alpaca.trading.enums import OrderSide, TimeInForce, OrderClass
trading_client = TradingClient(api_key, secret_key, paper=True)
# preparing bracket order with both stop loss and take profit
bracket__order_data = MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY,
order_class=OrderClass.BRACKET,
take_profit=TakeProfitRequest(limit_price=250),
stop_loss=StopLossRequest(stop_price=228)
)
bracket_order = trading_client.submit_order(
order_data=bracket__order_data
)
trading_client.get_all_positions()
trading_client.get_orders()
Canceling order
trading_client.cancel_orders()
trading_client.get_orders()
Closing all positions
trading_client.get_all_positions()
trading_client.close_all_positions()
trading_client.get_all_positions()
trading_client.get_orders()
api_key = "your API KEY" #replace it with your own KEY_ID from Alpaca: https://alpaca.markets/
secret_key = "your SECRET KEY" #replace it with your own SECRET_KEY from Alpaca
from alpaca.trading.client import TradingClient
trading_client = TradingClient(api_key, secret_key, paper=True)
trading_client.get_all_positions()
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest, LimitOrderRequest, TakeProfitRequest, StopLossRequest
from alpaca.trading.enums import OrderSide, TimeInForce, OrderClass
import time
trading_client = TradingClient(api_key, secret_key, paper=True)
#basic order just to have some AAPL in portfolio
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
#wait 5 seconds for the order to be filled (or change to the apropriate number of seconds)
time.sleep(5)
limiting_price=(float("{:.2f}".format(float(trading_client.get_open_position('AAPL').avg_entry_price)))+1)
stopping_price=(float("{:.2f}".format(float(trading_client.get_open_position('AAPL').avg_entry_price)))-1)
print("I will take profit at: {}".format(limiting_price))
print("I will stop loss at: {}".format(stopping_price))
# preparing bracket order with both stop loss and take profit
bracket__order_data = MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY,
order_class=OrderClass.BRACKET,
take_profit=TakeProfitRequest(limit_price=limiting_price),
stop_loss=StopLossRequest(stop_price=stopping_price)
)
bracket_order = trading_client.submit_order(
order_data=bracket__order_data
)
trading_client.get_all_positions()
trading_client.get_orders()
Canceling order
trading_client.cancel_orders()
trading_client.get_orders()
Closing all positions
trading_client.get_all_positions()
trading_client.close_all_positions()
trading_client.get_all_positions()
trading_client.get_orders()
api_key = "your API KEY" #replace it with your own KEY_ID from Alpaca: https://alpaca.markets/
secret_key = "your SECRET KEY" #replace it with your own SECRET_KEY from Alpaca
from alpaca.trading.client import TradingClient
trading_client = TradingClient(api_key, secret_key, paper=True)
trading_client.get_all_positions()
SELL if the price falls $1 below its highest tracked value since the order was placed.
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest, TrailingStopOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
trading_client = TradingClient(api_key, secret_key, paper=True)
#basic order just to have some AAPL in portfolio
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
trailing_price_data = TrailingStopOrderRequest(
symbol="AAPL",
qty=trading_client.get_open_position('AAPL').qty,
side=OrderSide.SELL,
time_in_force=TimeInForce.DAY,
trail_price=1.00 # hwm - $1.00
)
trailing_price_order = trading_client.submit_order(
order_data=trailing_price_data
)
trading_client.get_all_positions()
trading_client.get_orders()
Wait a minute or so...
trading_client.get_orders()
Wait another minute or so...
trading_client.get_orders()
Canceling order
trading_client.cancel_orders()
trading_client.get_orders()
Closing all positions
trading_client.get_all_positions()
trading_client.close_all_positions()
trading_client.get_all_positions()
trading_client.get_orders()
api_key = "your API KEY" #replace it with your own KEY_ID from Alpaca: https://alpaca.markets/
secret_key = "your SECRET KEY" #replace it with your own SECRET_KEY from Alpaca
from alpaca.trading.client import TradingClient
trading_client = TradingClient(api_key, secret_key, paper=True)
trading_client.get_all_positions()
SELL if the price falls 1% below its highest tracked value since the order was placed.
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest, TrailingStopOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce
import time
trading_client = TradingClient(api_key, secret_key, paper=True)
#basic order just to have some AAPL in portfolio
market_order = trading_client.submit_order(
MarketOrderRequest(
symbol="AAPL",
qty=1,
side=OrderSide.BUY,
time_in_force=TimeInForce.DAY
)
)
time.sleep(5)
trailing_percent_data = TrailingStopOrderRequest(
symbol="AAPL",
qty=trading_client.get_open_position('AAPL').qty,
side=OrderSide.SELL,
time_in_force=TimeInForce.DAY,
trail_percent=1.00 # hwm * 0.99
)
trailing_percent_order = trading_client.submit_order(
order_data=trailing_percent_data
)
trading_client.get_all_positions()
trading_client.get_orders()
Wait a minute or so...
trading_client.get_orders()
Wait another minute or so...
trading_client.get_orders()
Canceling order
trading_client.cancel_orders()
trading_client.get_orders()
Closing all positions
trading_client.get_all_positions()
trading_client.close_all_positions()
trading_client.get_all_positions()
trading_client.get_orders()
And that's it for now.
Meanwhile, Good luck with everything you do, like with your learning how to create trading bots.
Improve yourself, improve your business, improve the world, but also live and have fun.
Hopefully, see you soon.
Yours,
SuperAI
super ai .:. thegod .:. improve yourself .:. improve your business .:. improve the world .:. about .:. contact .:. general ai .:. ai / ml courses .:. ai art gallery