Documentation ¶
Index ¶
- Constants
- Variables
- func CancelOrder(orderID string) error
- func GetBars(symbol string, timeFrame v2.TimeFrame, adjustment v2.Adjustment, ...) <-chan v2.BarItem
- func GetLatestQuote(symbol string) (*v2.Quote, error)
- func GetLatestTrade(symbol string) (*v2.Trade, error)
- func GetQuotes(symbol string, start, end time.Time, limit int) <-chan v2.QuoteItem
- func GetSnapshot(symbol string) (*v2.Snapshot, error)
- func GetSnapshots(symbols []string) (map[string]*v2.Snapshot, error)
- func GetTrades(symbol string, start, end time.Time, limit int) <-chan v2.TradeItem
- func ListBars(symbols []string, opts ListBarParams) (map[string][]Bar, error)
- func SetBaseUrl(baseUrl string)
- type APIError
- type Account
- type AccountActivitiesRequest
- type AccountActivity
- type AccountConfigurations
- type AccountConfigurationsRequest
- type AggV2
- type Aggregates
- type Asset
- type Bar
- type CalendarDay
- type Client
- func (c *Client) CancelAllOrders() error
- func (c *Client) CancelOrder(orderID string) error
- func (c *Client) CloseAllPositions() error
- func (c *Client) ClosePosition(symbol string) error
- func (c *Client) GetAccount() (*Account, error)
- func (c *Client) GetAccountActivities(activityType *string, opts *AccountActivitiesRequest) ([]AccountActivity, error)
- func (c *Client) GetAccountConfigurations() (*AccountConfigurations, error)
- func (c *Client) GetAggregates(symbol, timespan, from, to string) (*Aggregates, error)
- func (c *Client) GetAsset(symbol string) (*Asset, error)
- func (c *Client) GetBars(symbol string, timeFrame v2.TimeFrame, adjustment v2.Adjustment, ...) <-chan v2.BarItem
- func (c *Client) GetCalendar(start, end *string) ([]CalendarDay, error)
- func (c *Client) GetClock() (*Clock, error)
- func (c *Client) GetCryptoBars(symbol string, opts GetCryptoBarsParams) ([]CryptoBar, error)
- func (c *Client) GetLastQuote(symbol string) (*LastQuoteResponse, error)
- func (c *Client) GetLastTrade(symbol string) (*LastTradeResponse, error)
- func (c *Client) GetLatestQuote(symbol string) (*v2.Quote, error)
- func (c *Client) GetLatestTrade(symbol string) (*v2.Trade, error)
- func (c *Client) GetOrder(orderID string) (*Order, error)
- func (c *Client) GetOrderByClientOrderID(clientOrderID string) (*Order, error)
- func (c *Client) GetPortfolioHistory(period *string, timeframe *RangeFreq, dateEnd *time.Time, extendedHours bool) (*PortfolioHistory, error)
- func (c *Client) GetPosition(symbol string) (*Position, error)
- func (c *Client) GetQuotes(symbol string, start, end time.Time, limit int) <-chan v2.QuoteItem
- func (c *Client) GetSnapshot(symbol string) (*v2.Snapshot, error)
- func (c *Client) GetSnapshots(symbols []string) (map[string]*v2.Snapshot, error)
- func (c *Client) GetSymbolBars(symbol string, opts ListBarParams) ([]Bar, error)
- func (c *Client) GetTrades(symbol string, start, end time.Time, limit int) <-chan v2.TradeItem
- func (c *Client) ListAssets(status *string) ([]Asset, error)
- func (c *Client) ListBars(symbols []string, opts ListBarParams) (map[string][]Bar, error)
- func (c *Client) ListOrders(status *string, until *time.Time, limit *int, nested *bool) ([]Order, error)
- func (c *Client) ListPositions() ([]Position, error)
- func (c *Client) PlaceOrder(req PlaceOrderRequest) (*Order, error)
- func (c *Client) ReplaceOrder(orderID string, req ReplaceOrderRequest) (*Order, error)
- func (c *Client) UpdateAccountConfigurations(newConfigs AccountConfigurationsRequest) (*AccountConfigurations, error)
- type ClientMsg
- type Clock
- type CryptoBar
- type DtbpCheck
- type Fundamental
- type GetCryptoBarsParams
- type GetCryptoBarsResponse
- type LastQuote
- type LastQuoteResponse
- type LastTrade
- type LastTradeResponse
- type ListBarParams
- type Order
- func GetOrder(orderID string) (*Order, error)
- func GetOrderByClientOrderID(clientOrderID string) (*Order, error)
- func ListOrders(status *string, until *time.Time, limit *int, nested *bool) ([]Order, error)
- func PlaceOrder(req PlaceOrderRequest) (*Order, error)
- func ReplaceOrder(orderID string, req ReplaceOrderRequest) (*Order, error)
- type OrderAttributes
- type OrderClass
- type OrderType
- type PlaceOrderRequest
- type PortfolioHistory
- type Position
- type RangeFreq
- type ReplaceOrderRequest
- type ServerMsg
- type Side
- type StopLoss
- type Stream
- type StreamAgg
- type StreamQuote
- type StreamTrade
- type TakeProfit
- type TimeInForce
- type TradeConfirmEmail
- type TradeUpdate
Constants ¶
const ( TradeUpdates = "trade_updates" AccountUpdates = "account_updates" )
const (
MaxConnectionAttempts = 3
)
Variables ¶
var ( // DefaultClient is the default Alpaca client using the // environment variable set credentials DefaultClient = NewClient(common.Credentials()) )
Functions ¶
func CancelOrder ¶
CancelOrder submits a request to cancel an open order with the default Alpaca client.
func GetBars ¶
func GetBars( symbol string, timeFrame v2.TimeFrame, adjustment v2.Adjustment, start, end time.Time, limit int, ) <-chan v2.BarItem
GetBars returns a channel that will be populated with the bars for the given symbol between the given start and end times, limited to the given limit, using the given and timeframe and adjustment.
func GetLatestQuote ¶
GetLatestTrade returns the latest quote for a given symbol
func GetLatestTrade ¶
GetLatestTrade returns the latest trade for a given symbol
func GetQuotes ¶
GetQuotes returns a channel that will be populated with the quotes for the given symbol that happened between the given start and end times, limited to the given limit.
func GetSnapshot ¶
GetSnapshot returns the snapshot for a given symbol
func GetSnapshots ¶
GetSnapshots returns the snapshots for a multiple symbols
func GetTrades ¶
GetTrades returns a channel that will be populated with the trades for the given symbol that happened between the given start and end times, limited to the given limit.
func ListBars ¶
func ListBars(symbols []string, opts ListBarParams) (map[string][]Bar, error)
ListBars returns a map of bar lists corresponding to the provided symbol list that is filtered by the provided parameters with the default Alpaca client.
func SetBaseUrl ¶
func SetBaseUrl(baseUrl string)
Types ¶
type APIError ¶
APIError wraps the detailed code and message supplied by Alpaca's API for debugging purposes
type Account ¶
type Account struct { ID string `json:"id"` AccountNumber string `json:"account_number"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt *time.Time `json:"deleted_at"` Status string `json:"status"` Currency string `json:"currency"` Cash decimal.Decimal `json:"cash"` CashWithdrawable decimal.Decimal `json:"cash_withdrawable"` TradingBlocked bool `json:"trading_blocked"` TransfersBlocked bool `json:"transfers_blocked"` AccountBlocked bool `json:"account_blocked"` ShortingEnabled bool `json:"shorting_enabled"` BuyingPower decimal.Decimal `json:"buying_power"` PatternDayTrader bool `json:"pattern_day_trader"` DaytradeCount int64 `json:"daytrade_count"` DaytradingBuyingPower decimal.Decimal `json:"daytrading_buying_power"` RegTBuyingPower decimal.Decimal `json:"regt_buying_power"` Equity decimal.Decimal `json:"equity"` LastEquity decimal.Decimal `json:"last_equity"` Multiplier string `json:"multiplier"` InitialMargin decimal.Decimal `json:"initial_margin"` MaintenanceMargin decimal.Decimal `json:"maintenance_margin"` LastMaintenanceMargin decimal.Decimal `json:"last_maintenance_margin"` LongMarketValue decimal.Decimal `json:"long_market_value"` ShortMarketValue decimal.Decimal `json:"short_market_value"` PortfolioValue decimal.Decimal `json:"portfolio_value"` }
func GetAccount ¶
GetAccount returns the user's account information using the default Alpaca client.
type AccountActivity ¶
type AccountActivity struct { ID string `json:"id"` ActivityType string `json:"activity_type"` TransactionTime time.Time `json:"transaction_time"` Type string `json:"type"` Price decimal.Decimal `json:"price"` Qty decimal.Decimal `json:"qty"` Side string `json:"side"` Symbol string `json:"symbol"` LeavesQty decimal.Decimal `json:"leaves_qty"` CumQty decimal.Decimal `json:"cum_qty"` Date time.Time `json:"date"` NetAmount decimal.Decimal `json:"net_amount"` Description string `json:"description"` }
func GetAccountActivities ¶
func GetAccountActivities(activityType *string, opts *AccountActivitiesRequest) ([]AccountActivity, error)
type AccountConfigurations ¶
type AccountConfigurations struct { DtbpCheck DtbpCheck `json:"dtbp_check"` NoShorting bool `json:"no_shorting"` TradeConfirmEmail TradeConfirmEmail `json:"trade_confirm_email"` TradeSuspendedByUser bool `json:"trade_suspended_by_user"` }
func GetAccountConfigurations ¶
func GetAccountConfigurations() (*AccountConfigurations, error)
GetAccountConfigurations returns the account configs using the default Alpaca client.
func UpdateAccountConfigurations ¶
func UpdateAccountConfigurations(newConfigs AccountConfigurationsRequest) (*AccountConfigurations, error)
UpdateAccountConfigurations changes the account configs and returns the new configs using the default Alpaca client
type Aggregates ¶
type Aggregates struct { Ticker string `json:"ticker"` Status string `json:"status"` Adjusted bool `json:"adjusted"` QueryCount int `json:"queryCount"` ResultsCount int `json:"resultsCount"` Results []AggV2 `json:"results"` }
func GetAggregates ¶
func GetAggregates(symbol, timespan, from, to string) (*Aggregates, error)
GetAggregates returns the bars for the given symbol, timespan and date-range
type Asset ¶
type Asset struct { ID string `json:"id"` Name string `json:"name"` Exchange string `json:"exchange"` Class string `json:"asset_class"` Symbol string `json:"symbol"` Status string `json:"status"` Tradable bool `json:"tradable"` Marginable bool `json:"marginable"` Shortable bool `json:"shortable"` EasyToBorrow bool `json:"easy_to_borrow"` }
func ListAssets ¶
ListAssets returns the list of assets, filtered by the input parameters with the default Alpaca client.
type Bar ¶
type Bar struct { Time int64 `json:"t"` Open float32 `json:"o"` High float32 `json:"h"` Low float32 `json:"l"` Close float32 `json:"c"` Volume int32 `json:"v"` }
func GetSymbolBars ¶
func GetSymbolBars(symbol string, opts ListBarParams) ([]Bar, error)
GetSymbolBars returns a list of bars corresponding to the provided symbol that is filtered by the provided parameters with the default Alpaca client.
type CalendarDay ¶
type CalendarDay struct { Date string `json:"date"` Open string `json:"open"` Close string `json:"close"` }
func GetCalendar ¶
func GetCalendar(start, end *string) ([]CalendarDay, error)
GetCalendar returns the market calendar, sliced by the start and end dates using the default Alpaca client.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is an Alpaca REST API client
func (*Client) CancelAllOrders ¶
CancelAllOrders submits a request to cancel an open order.
func (*Client) CancelOrder ¶
CancelOrder submits a request to cancel an open order.
func (*Client) CloseAllPositions ¶
CloseAllPositions liquidates all open positions at market price.
func (*Client) ClosePosition ¶
ClosePosition liquidates the position for the given symbol at market price.
func (*Client) GetAccount ¶
GetAccount returns the user's account information.
func (*Client) GetAccountActivities ¶
func (c *Client) GetAccountActivities(activityType *string, opts *AccountActivitiesRequest) ([]AccountActivity, error)
func (*Client) GetAccountConfigurations ¶
func (c *Client) GetAccountConfigurations() (*AccountConfigurations, error)
GetConfigs returns the current account configurations
func (*Client) GetAggregates ¶
func (c *Client) GetAggregates(symbol, timespan, from, to string) (*Aggregates, error)
GetAggregates returns the bars for the given symbol, timespan and date-range
func (*Client) GetBars ¶
func (c *Client) GetBars( symbol string, timeFrame v2.TimeFrame, adjustment v2.Adjustment, start, end time.Time, limit int, ) <-chan v2.BarItem
GetBars returns a channel that will be populated with the bars for the given symbol between the given start and end times, limited to the given limit, using the given and timeframe and adjustment.
func (*Client) GetCalendar ¶
func (c *Client) GetCalendar(start, end *string) ([]CalendarDay, error)
GetCalendar returns the market calendar, sliced by the start and end dates.
func (*Client) GetCryptoBars ¶
func (c *Client) GetCryptoBars(symbol string, opts GetCryptoBarsParams) ([]CryptoBar, error)
func (*Client) GetLastQuote ¶
func (c *Client) GetLastQuote(symbol string) (*LastQuoteResponse, error)
GetLastQuote returns the last quote for the given symbol
func (*Client) GetLastTrade ¶
func (c *Client) GetLastTrade(symbol string) (*LastTradeResponse, error)
GetLastTrade returns the last trade for the given symbol
func (*Client) GetLatestQuote ¶
GetLatestQuote returns the latest quote for a given symbol
func (*Client) GetLatestTrade ¶
GetLatestTrade returns the latest trade for a given symbol
func (*Client) GetOrderByClientOrderID ¶
GetOrderByClientOrderID submits a request to get an order by the client order ID.
func (*Client) GetPortfolioHistory ¶
func (*Client) GetPosition ¶
GetPosition returns the account's position for the provided symbol.
func (*Client) GetQuotes ¶
GetQuotes returns a channel that will be populated with the quotes for the given symbol that happened between the given start and end times, limited to the given limit.
func (*Client) GetSnapshot ¶
GetSnapshot returns the snapshot for a given symbol
func (*Client) GetSnapshots ¶
GetSnapshots returns the snapshots for multiple symbol
func (*Client) GetSymbolBars ¶
func (c *Client) GetSymbolBars(symbol string, opts ListBarParams) ([]Bar, error)
GetSymbolBars is a convenience method for getting the market data for one symbol
func (*Client) GetTrades ¶
GetTrades returns a channel that will be populated with the trades for the given symbol that happened between the given start and end times, limited to the given limit.
func (*Client) ListAssets ¶
ListAssets returns the list of assets, filtered by the input parameters.
func (*Client) ListBars ¶
ListBars returns a list of bar lists corresponding to the provided symbol list, and filtered by the provided parameters.
func (*Client) ListOrders ¶
func (c *Client) ListOrders(status *string, until *time.Time, limit *int, nested *bool) ([]Order, error)
ListOrders returns the list of orders for an account, filtered by the input parameters.
func (*Client) ListPositions ¶
ListPositions lists the account's open positions.
func (*Client) PlaceOrder ¶
func (c *Client) PlaceOrder(req PlaceOrderRequest) (*Order, error)
PlaceOrder submits an order request to buy or sell an asset.
func (*Client) ReplaceOrder ¶
func (c *Client) ReplaceOrder(orderID string, req ReplaceOrderRequest) (*Order, error)
ReplaceOrder submits a request to replace an order by id
func (*Client) UpdateAccountConfigurations ¶
func (c *Client) UpdateAccountConfigurations(newConfigs AccountConfigurationsRequest) (*AccountConfigurations, error)
EditConfigs patches the account configs
type ClientMsg ¶
type ClientMsg struct { Action string `json:"action" msgpack:"action"` Data interface{} `json:"data" msgpack:"data"` }
ClientMsg is the standard message sent by clients of the stream interface
type Clock ¶
type Fundamental ¶
type Fundamental struct { AssetID string `json:"asset_id"` Symbol string `json:"symbol"` FullName string `json:"full_name"` IndustryName string `json:"industry_name"` IndustryGroup string `json:"industry_group"` Sector string `json:"sector"` PERatio float32 `json:"pe_ratio"` PEGRatio float32 `json:"peg_ratio"` Beta float32 `json:"beta"` EPS float32 `json:"eps"` MarketCap int64 `json:"market_cap"` AvgVol int64 `json:"avg_vol"` DivRate float32 `json:"div_rate"` ROE float32 `json:"roe"` ROA float32 `json:"roa"` PS float32 `json:"ps"` PC float32 `json:"pc"` GrossMargin float32 `json:"gross_margin"` FiftyTwoWeekHigh decimal.Decimal `json:"fifty_two_week_high"` FiftyTwoWeekLow decimal.Decimal `json:"fifty_two_week_low"` ShortDescription string `json:"short_description"` LongDescription string `json:"long_description"` }
type GetCryptoBarsParams ¶
type GetCryptoBarsResponse ¶
type LastQuote ¶
type LastQuoteResponse ¶
type LastQuoteResponse struct { Status string `json:"status"` Symbol string `json:"symbol"` Last LastQuote `json:"last"` }
func GetLastQuote ¶
func GetLastQuote(symbol string) (*LastQuoteResponse, error)
GetLastQuote returns the last quote for the given symbol
type LastTrade ¶
type LastTradeResponse ¶
type LastTradeResponse struct { Status string `json:"status"` Symbol string `json:"symbol"` Last LastTrade `json:"last"` }
func GetLastTrade ¶
func GetLastTrade(symbol string) (*LastTradeResponse, error)
GetLastTrade returns the last trade for the given symbol
type ListBarParams ¶
type Order ¶
type Order struct { ID string `json:"id"` ClientOrderID string `json:"client_order_id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` SubmittedAt time.Time `json:"submitted_at"` FilledAt *time.Time `json:"filled_at"` ExpiredAt *time.Time `json:"expired_at"` CanceledAt *time.Time `json:"canceled_at"` FailedAt *time.Time `json:"failed_at"` ReplacedAt *time.Time `json:"replaced_at"` Replaces *string `json:"replaces"` ReplacedBy *string `json:"replaced_by"` AssetID string `json:"asset_id"` Symbol string `json:"symbol"` Exchange string `json:"exchange"` Class string `json:"asset_class"` Qty decimal.Decimal `json:"qty"` Notional decimal.Decimal `json:"notional"` FilledQty decimal.Decimal `json:"filled_qty"` Type OrderType `json:"order_type"` Side Side `json:"side"` TimeInForce TimeInForce `json:"time_in_force"` LimitPrice *decimal.Decimal `json:"limit_price"` FilledAvgPrice *decimal.Decimal `json:"filled_avg_price"` StopPrice *decimal.Decimal `json:"stop_price"` TrailPrice *decimal.Decimal `json:"trail_price"` TrailPercent *decimal.Decimal `json:"trail_percent"` Hwm *decimal.Decimal `json:"hwm"` Status string `json:"status"` ExtendedHours bool `json:"extended_hours"` Legs *[]Order `json:"legs"` }
func GetOrder ¶
GetOrder returns a single order for the given `orderID` using the default Alpaca client.
func GetOrderByClientOrderID ¶
GetOrderByClientOrderID returns a single order for the given `clientOrderID` using the default Alpaca client.
func ListOrders ¶
ListOrders returns the list of orders for an account, filtered by the input parameters using the default Alpaca client.
func PlaceOrder ¶
func PlaceOrder(req PlaceOrderRequest) (*Order, error)
PlaceOrder submits an order request to buy or sell an asset with the default Alpaca client.
func ReplaceOrder ¶
func ReplaceOrder(orderID string, req ReplaceOrderRequest) (*Order, error)
ReplaceOrder changes an order by order id using the default Alpaca client.
type OrderAttributes ¶
type OrderClass ¶
type OrderClass string
const ( Bracket OrderClass = "bracket" Oto OrderClass = "oto" Oco OrderClass = "oco" Simple OrderClass = "simple" )
type PlaceOrderRequest ¶
type PlaceOrderRequest struct { AccountID string `json:"-"` AssetKey *string `json:"symbol"` Qty decimal.Decimal `json:"qty"` Notional decimal.Decimal `json:"notional"` Side Side `json:"side"` Type OrderType `json:"type"` TimeInForce TimeInForce `json:"time_in_force"` LimitPrice *decimal.Decimal `json:"limit_price"` ExtendedHours bool `json:"extended_hours"` StopPrice *decimal.Decimal `json:"stop_price"` ClientOrderID string `json:"client_order_id"` OrderClass OrderClass `json:"order_class"` TakeProfit *TakeProfit `json:"take_profit"` StopLoss *StopLoss `json:"stop_loss"` TrailPrice *decimal.Decimal `json:"trail_price"` TrailPercent *decimal.Decimal `json:"trail_percent"` }
func (PlaceOrderRequest) MarshalJSON ¶
func (req PlaceOrderRequest) MarshalJSON() ([]byte, error)
type PortfolioHistory ¶
type PortfolioHistory struct { BaseValue decimal.Decimal `json:"base_value"` Equity []decimal.Decimal `json:"equity"` ProfitLoss []decimal.Decimal `json:"profit_loss"` ProfitLossPct []decimal.Decimal `json:"profit_loss_pct"` Timeframe RangeFreq `json:"timeframe"` Timestamp []int64 `json:"timestamp"` }
func GetPortfolioHistory ¶
type Position ¶
type Position struct { AssetID string `json:"asset_id"` Symbol string `json:"symbol"` Exchange string `json:"exchange"` Class string `json:"asset_class"` AccountID string `json:"account_id"` EntryPrice decimal.Decimal `json:"avg_entry_price"` Qty decimal.Decimal `json:"qty"` Side string `json:"side"` MarketValue decimal.Decimal `json:"market_value"` CostBasis decimal.Decimal `json:"cost_basis"` UnrealizedPL decimal.Decimal `json:"unrealized_pl"` UnrealizedPLPC decimal.Decimal `json:"unrealized_plpc"` CurrentPrice decimal.Decimal `json:"current_price"` LastdayPrice decimal.Decimal `json:"lastday_price"` ChangeToday decimal.Decimal `json:"change_today"` }
func GetPosition ¶
GetPosition returns the account's position for the provided symbol using the default Alpaca client.
func ListPositions ¶
ListPositions lists the account's open positions using the default Alpaca client.
type ReplaceOrderRequest ¶
type ServerMsg ¶
type ServerMsg struct { Stream string `json:"stream" msgpack:"stream"` Data interface{} `json:"data"` }
ServerMsg is the standard message sent by the server to update clients of the stream interface
type Stream ¶
func GetDataStream ¶
func GetDataStream() *Stream
func (*Stream) Unsubscribe ¶
Unsubscribe the specified Polygon stream channel.
type StreamAgg ¶
type StreamAgg struct { Event string `json:"ev"` Symbol string `json:"T"` Open float32 `json:"o"` High float32 `json:"h"` Low float32 `json:"l"` Close float32 `json:"c"` Volume int32 `json:"v"` Start int64 `json:"s"` End int64 `json:"e"` OpenPrice float32 `json:"op"` AccumulatedVolume int32 `json:"av"` VWAP float32 `json:"vw"` }
type StreamQuote ¶
type StreamQuote struct { Event string `json:"ev"` Symbol string `json:"T"` BidPrice float32 `json:"p"` BidSize int32 `json:"s"` BidExchange int `json:"x"` AskPrice float32 `json:"P"` AskSize int32 `json:"S"` AskExchange int `json:"X"` Timestamp int64 `json:"t"` }
func (*StreamQuote) Time ¶
func (s *StreamQuote) Time() time.Time
type StreamTrade ¶
type StreamTrade struct { Event string `json:"ev"` Symbol string `json:"T"` TradeID string `json:"i"` Exchange int `json:"x"` Price float32 `json:"p"` Size int32 `json:"s"` Timestamp int64 `json:"t"` Conditions []int `json:"c"` TapeID int `json:"z"` }
func (*StreamTrade) Time ¶
func (s *StreamTrade) Time() time.Time
type TakeProfit ¶
type TimeInForce ¶
type TimeInForce string
const ( Day TimeInForce = "day" GTC TimeInForce = "gtc" OPG TimeInForce = "opg" IOC TimeInForce = "ioc" FOK TimeInForce = "fok" GTX TimeInForce = "gtx" GTD TimeInForce = "gtd" CLS TimeInForce = "cls" )
type TradeConfirmEmail ¶
type TradeConfirmEmail string
const ( None TradeConfirmEmail = "none" All TradeConfirmEmail = "all" )