213 lines
7.3 KiB
Go
213 lines
7.3 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"time"
|
|
)
|
|
|
|
type Accountbalance struct {
|
|
XMLName xml.Name `xml:"accountbalance"`
|
|
Account string `xml:"account"`
|
|
Accountvalue float64 `xml:"accountvalue"`
|
|
Buyingpower struct {
|
|
Text string `xml:",chardata"`
|
|
Cashavailableforwithdrawal float64 `xml:"cashavailableforwithdrawal"`
|
|
Daytrading float64 `xml:"daytrading"`
|
|
Equitypercentage float64 `xml:"equitypercentage"`
|
|
Options float64 `xml:"options"`
|
|
Soddaytrading float64 `xml:"soddaytrading"`
|
|
Sodoptions float64 `xml:"sodoptions"`
|
|
Sodstock float64 `xml:"sodstock"`
|
|
Stock float64 `xml:"stock"`
|
|
} `xml:"buyingpower"`
|
|
Fedcall float64 `xml:"fedcall"`
|
|
Housecall float64 `xml:"housecall"`
|
|
Money struct {
|
|
Text string `xml:",chardata"`
|
|
Accruedinterest float64 `xml:"accruedinterest"`
|
|
Cash float64 `xml:"cash"`
|
|
Cashavailable float64 `xml:"cashavailable"`
|
|
Marginbalance float64 `xml:"marginbalance"`
|
|
Mmf float64 `xml:"mmf"`
|
|
Total float64 `xml:"total"`
|
|
Uncleareddeposits float64 `xml:"uncleareddeposits"`
|
|
Unsettledfunds float64 `xml:"unsettledfunds"`
|
|
Yield float64 `xml:"yield"`
|
|
} `xml:"money"`
|
|
Securities struct {
|
|
Text string `xml:",chardata"`
|
|
Longoptions float64 `xml:"longoptions"`
|
|
Longstocks float64 `xml:"longstocks"`
|
|
Options float64 `xml:"options"`
|
|
Shortoptions float64 `xml:"shortoptions"`
|
|
Shortstocks float64 `xml:"shortstocks"`
|
|
Stocks float64 `xml:"stocks"`
|
|
Total float64 `xml:"total"`
|
|
} `xml:"securities"`
|
|
}
|
|
|
|
type Accountholdings struct {
|
|
XMLName xml.Name `xml:"accountholdings"`
|
|
Displaydata struct {
|
|
Text string `xml:",chardata"`
|
|
Totalsecurities string `xml:"totalsecurities"`
|
|
} `xml:"displaydata"`
|
|
Holding []struct {
|
|
Text string `xml:",chardata"`
|
|
Accounttype string `xml:"accounttype"`
|
|
Costbasis string `xml:"costbasis"`
|
|
Displaydata struct {
|
|
Text string `xml:",chardata"`
|
|
Accounttype string `xml:"accounttype"`
|
|
Assetclass string `xml:"assetclass"`
|
|
Change string `xml:"change"`
|
|
Costbasis string `xml:"costbasis"`
|
|
Desc string `xml:"desc"`
|
|
Lastprice string `xml:"lastprice"`
|
|
Marketvalue string `xml:"marketvalue"`
|
|
Marketvaluechange string `xml:"marketvaluechange"`
|
|
Qty string `xml:"qty"`
|
|
Symbol string `xml:"symbol"`
|
|
} `xml:"displaydata"`
|
|
Gainloss float64 `xml:"gainloss"`
|
|
Instrument struct {
|
|
Text string `xml:",chardata"`
|
|
Cusip string `xml:"cusip"`
|
|
Desc string `xml:"desc"`
|
|
Factor string `xml:"factor"`
|
|
Sectyp string `xml:"sectyp"`
|
|
Sym string `xml:"sym"`
|
|
} `xml:"instrument"`
|
|
Marketvalue float64 `xml:"marketvalue"`
|
|
Marketvaluechange float64 `xml:"marketvaluechange"`
|
|
Price float64 `xml:"price"`
|
|
Purchaseprice float64 `xml:"purchaseprice"`
|
|
Qty float64 `xml:"qty"`
|
|
Quote struct {
|
|
Text string `xml:",chardata"`
|
|
Change float64 `xml:"change"`
|
|
Lastprice float64 `xml:"lastprice"`
|
|
} `xml:"quote"`
|
|
Underlying string `xml:"underlying"`
|
|
} `xml:"holding"`
|
|
Totalsecurities float64 `xml:"totalsecurities"`
|
|
}
|
|
|
|
type AccountSummary struct {
|
|
XMLName xml.Name `xml:"accountsummary"`
|
|
Text string `xml:",chardata"`
|
|
Account string `xml:"account"`
|
|
Accountbalance Accountbalance `xml:"accountbalance"`
|
|
Accountholdings Accountholdings `xml:"accountholdings"`
|
|
}
|
|
|
|
type AccountResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
Text string `xml:",chardata"`
|
|
ID string `xml:"id,attr"`
|
|
Accounts struct {
|
|
Text string `xml:",chardata"`
|
|
Accountsummary []AccountSummary `xml:"accountsummary"`
|
|
} `xml:"accounts"`
|
|
}
|
|
|
|
type AccountBalance struct {
|
|
XMLName xml.Name `xml:"accountbalance"`
|
|
Account int `xml:"account"`
|
|
AccountName string `xml:"accountname"`
|
|
AccountValue float64 `xml:"accountvalue"`
|
|
}
|
|
|
|
type AccountBalanceResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
AccountBalances []AccountBalance `xml:"accountbalance"`
|
|
TotalBalance float64 `xml:"totalbalance>accountvalue"`
|
|
}
|
|
|
|
type AccountDetailResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
AccountBalance Accountbalance `xml:"accountbalance"`
|
|
AccountHoldings Accountholdings `xml:"accountholdings"`
|
|
}
|
|
|
|
type AccountDetailBalanceResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
AccountBalance Accountbalance `xml:"accountbalance"`
|
|
}
|
|
|
|
type AccountDetailHoldingsResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
AccountHoldings Accountholdings `xml:"accountholdings"`
|
|
}
|
|
|
|
type MarketClockResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
Date string `xml:"date"`
|
|
CurrentStatus string `xml:"status>current"`
|
|
Message string `xml:"message"`
|
|
UnixTime time.Time `xml:"unixtime"`
|
|
}
|
|
|
|
type MarketQuotesResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
Quotes []Quote `xml:"quotes"'`
|
|
}
|
|
|
|
/**
|
|
TODO: Finish this page https://www.ally.com/api/invest/documentation/market-ext-quotes-get-post/
|
|
*/
|
|
type Quote struct {
|
|
XMLName xml.Name `xml:"quote"`
|
|
AverageDailyPrice100 float64 `xml:"adp_100"`
|
|
AverageDailyPrice200 float64 `xml:"adp_200"`
|
|
AverageDailyPrice50 float64 `xml:"adp_50"`
|
|
AverageDailyVolume21 float64 `xml:"adv_21"`
|
|
AverageDailyVolume30 float64 `xml:"adv_30"`
|
|
AverageDailyVolume90 float64 `xml:"adv_90"`
|
|
AskPrice float64 `xml:"ask"`
|
|
AskTime time.Time `xml:"ask_time"`
|
|
AskSize int `xml:"asksz"`
|
|
Basis float64 `xml:"basis"`
|
|
Beta float64 `xml:"beta"`
|
|
Bid float64 `xml:"bid"`
|
|
BidTime time.Time `xml:"bid_time"`
|
|
BidSize int `xml:"bidsz"`
|
|
BidTick int `xml:"bidtick"`
|
|
Change float64 `xml:"chg"`
|
|
ChangeSign string `xml:"chg_sign"`
|
|
ChangeText string `xml:"chg_t"`
|
|
Close float64 `xml:"cl"`
|
|
Cusip float64 `xml:"cusip"`
|
|
Date string `xml:"date"`
|
|
Datetime string `xml:"datetime"`
|
|
Dividend float64 `xml:"div"`
|
|
DividendFrequency string `xml:"divfreq"`
|
|
DollarValue float64 `xml:"dollar_value"`
|
|
EarningsPerShare float64 `xml:"eps"`
|
|
CompanyName string `xml:"name"`
|
|
PercentChangeSinceClose float64 `xml:"pchg"`
|
|
PriorDayClose float64 `xml:"pcls"`
|
|
PriceEarningRatio float64 `xml:"pe"`
|
|
PriorDayHigh float64 `xml:"phi"`
|
|
PriorDayLow float64 `xml:"plo"`
|
|
PriorDayOpen float64 `xml:"popn"`
|
|
}
|
|
|
|
type MarketNewsResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
Articles []Article `xml:"articles"`
|
|
}
|
|
|
|
type Article struct {
|
|
XMLName xml.Name `xml:"article"`
|
|
Date string `xml:"date"`
|
|
Headline string `xml:"headline"`
|
|
Id string `xml:"id"`
|
|
Story string `xml:"story"`
|
|
}
|
|
|
|
type MarketNewsGetResponse struct {
|
|
XMLName xml.Name `xml:"response"`
|
|
Article Article `xml:"article"`
|
|
}
|