Documentation ¶
Index ¶
- Variables
- func CancelOrder(orderID string) error
- func StreamTradeUpdates(ctx context.Context, handler func(TradeUpdate)) error
- func StreamTradeUpdatesInBackground(ctx context.Context, handler func(TradeUpdate))
- type APIError
- type Account
- type AccountActivitiesRequest
- type AccountActivity
- type AccountConfigurations
- type AccountConfigurationsRequest
- type Asset
- type CalendarDay
- type Client
- type ClientOpts
- type Clock
- type DtbpCheck
- type Fundamental
- type ListOrdersRequest
- 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 Side
- type StopLoss
- type TakeProfit
- type TimeInForce
- type TradeConfirmEmail
- type TradeUpdate
Constants ¶
This section is empty.
Variables ¶
var DefaultClient = NewClient(ClientOpts{})
DefaultClient uses options from environment variables, or the defaults.
Functions ¶
func CancelOrder ¶
CancelOrder submits a request to cancel an open order with the default Alpaca client.
func StreamTradeUpdates ¶
func StreamTradeUpdates(ctx context.Context, handler func(TradeUpdate)) error
StreamTradeUpdates streams the trade updates of the account. It blocks and keeps calling the handler function for each trade update until the context is cancelled.
func StreamTradeUpdatesInBackground ¶
func StreamTradeUpdatesInBackground(ctx context.Context, handler func(TradeUpdate))
StreamTradeUpdatesInBackground streams the trade updates of the account. It runs in the background and keeps calling the handler function for each trade update until the context is cancelled. If an error happens it logs it and retries immediately.
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 civil.Date `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 Asset ¶
type Asset struct { ID string `json:"id"` Name string `json:"name"` Exchange string `json:"exchange"` Class string `json:"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"` Fractionable bool `json:"fractionable"` }
func ListAssets ¶
ListAssets returns the list of assets, filtered by the input 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 interface { GetAccount() (*Account, error) GetAccountConfigurations() (*AccountConfigurations, error) UpdateAccountConfigurations(newConfigs AccountConfigurationsRequest) (*AccountConfigurations, error) GetAccountActivities(activityType *string, opts *AccountActivitiesRequest) ([]AccountActivity, error) GetPortfolioHistory(period *string, timeframe *RangeFreq, dateEnd *time.Time, extendedHours bool) (*PortfolioHistory, error) ListPositions() ([]Position, error) GetPosition(symbol string) (*Position, error) CloseAllPositions() error ClosePosition(symbol string) error GetClock() (*Clock, error) GetCalendar(start, end *string) ([]CalendarDay, error) ListOrders(status *string, until *time.Time, limit *int, nested *bool) ([]Order, error) ListOrdersWithRequest(req ListOrdersRequest) ([]Order, error) PlaceOrder(req PlaceOrderRequest) (*Order, error) GetOrder(orderID string) (*Order, error) GetOrderByClientOrderID(clientOrderID string) (*Order, error) ReplaceOrder(orderID string, req ReplaceOrderRequest) (*Order, error) CancelOrder(orderID string) error CancelAllOrders() error ListAssets(status *string) ([]Asset, error) GetAsset(symbol string) (*Asset, error) StreamTradeUpdates(ctx context.Context, handler func(TradeUpdate)) error StreamTradeUpdatesInBackground(ctx context.Context, handler func(TradeUpdate)) }
Client is the alpaca client.
func NewClient ¶
func NewClient(opts ClientOpts) Client
NewClient creates a new Alpaca trading client using the given opts.
type ClientOpts ¶
type ClientOpts struct { ApiKey string ApiSecret string OAuth string BaseURL string // Timeout sets the HTTP timeout for each request. // // Deprecated: use HttpClient with its Timeout set instead. // If both are set, HttpClient has precedence. Timeout time.Duration RetryLimit int RetryDelay time.Duration // HttpClient to be used for each http request. HttpClient *http.Client }
ClientOpts contains options for the alpaca client
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 ListOrdersRequest ¶
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"` Class string `json:"asset_class"` OrderClass OrderClass `json:"order_class"` Qty *decimal.Decimal `json:"qty"` Notional *decimal.Decimal `json:"notional"` FilledQty decimal.Decimal `json:"filled_qty"` Type OrderType `json:"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"` }
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 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" )