@@ -14,50 +14,49 @@ class PyAlpacaApi:
1414 def __init__ (self , api_key : str , api_secret : str , api_paper : bool = True ):
1515 """
1616 Initializes an instance of the Alpaca class.
17-
1817 Args:
1918 api_key (str): The API key for accessing the Alpaca API.
2019 api_secret (str): The API secret for accessing the Alpaca API.
2120 api_paper (bool, optional): Specifies whether to use the Alpaca paper trading API.
2221 Defaults to True.
23-
2422 Raises:
2523 ValueError: If the API key or API secret is not provided.
2624 """
27- if not api_key :
28- raise ValueError ("API Key is required" )
29- if not api_secret :
30- raise ValueError ("API Secret is required" )
3125
32- # Set the API Key and Secret
26+ # Check API Key and Secret
27+ self ._validate_api_key_and_secret (api_key , api_secret )
28+
29+ # Set Headers
3330 self .headers = {
3431 "APCA-API-KEY-ID" : api_key ,
3532 "APCA-API-SECRET-KEY" : api_secret ,
3633 }
3734
38- # Set the API URL's
39- if api_paper :
40- self .trade_url = "https://paper-api.alpaca.markets/v2"
41- else :
42- self .trade_url = "https://api.alpaca.markets/v2"
43-
35+ # Set URLs
4436 self .data_url = "https://data.alpaca.markets/v2"
37+ self .trade_url = self ._set_trade_url (api_paper )
38+
39+ # Initialize Components
40+ self ._initialize_components ()
41+
42+ @staticmethod
43+ def _validate_api_key_and_secret (api_key : str , api_secret : str ):
44+ if not api_key :
45+ raise ValueError ("API Key is required" )
46+ if not api_secret :
47+ raise ValueError ("API Secret is required" )
48+
49+ @staticmethod
50+ def _set_trade_url (api_paper : bool ):
51+ return "https://paper-api.alpaca.markets/v2" if api_paper else "https://api.alpaca.markets/v2"
4552
53+ def _initialize_components (self ):
4654 self .account = Account (trade_url = self .trade_url , headers = self .headers )
4755 self .asset = Asset (trade_url = self .trade_url , headers = self .headers )
4856 self .history = History (data_url = self .data_url , headers = self .headers , asset = self .asset )
49- self .position = Position (
50- trade_url = self .trade_url ,
51- headers = self .headers ,
52- account = self .account ,
53- )
57+ self .position = Position (trade_url = self .trade_url , headers = self .headers , account = self .account )
5458 self .order = Order (trade_url = self .trade_url , headers = self .headers )
5559 self .market = Market (trade_url = self .trade_url , headers = self .headers )
5660 self .watchlist = Watchlist (trade_url = self .trade_url , headers = self .headers )
57- self .screener = Screener (
58- data_url = self .data_url ,
59- headers = self .headers ,
60- asset = self .asset ,
61- market = self .market ,
62- )
61+ self .screener = Screener (data_url = self .data_url , headers = self .headers , asset = self .asset , market = self .market )
6362 self .predictor = Predictor (history = self .history , screener = self .screener )
0 commit comments