Documentation
¶
Index ¶
- Constants
- type APIError
- type AccountChanges
- type AccountInfo
- type AccountProperties
- type AccountSummary
- type BidAskCandles
- type BrokerBook
- type Bucket
- type CancelledOrder
- type Candle
- type Candles
- type ClosePositionPayload
- type CloseTradePayload
- type Connection
- func (c *Connection) Accounts() ([]AccountProperties, error)
- func (c *Connection) CancelOrder(orderSpecifier string) (CancelledOrder, error)
- func (c *Connection) CheckConnection() error
- func (c *Connection) ClosePosition(instrument string, body ClosePositionPayload) (ModifiedTrade, error)
- func (c *Connection) CreateOrder(body OrderPayload) (OrderResponse, error)
- func (c *Connection) Get(endpoint string) ([]byte, error)
- func (c *Connection) GetAccount(id string) (AccountInfo, error)
- func (c *Connection) GetAccountChanges(id string, transactionId string) (AccountChanges, error)
- func (c *Connection) GetAccountInstruments(id string) (Instruments, error)
- func (c *Connection) GetAccountSummary() (AccountSummary, error)
- func (c *Connection) GetBidAskCandles(instrument string, count string, g Granularity) (BidAskCandles, error)
- func (c *Connection) GetCandles(instrument string, count int, g Granularity) (InstrumentHistory, error)
- func (c *Connection) GetInstrumentPrice(instrument string) (InstrumentPricing, error)
- func (c *Connection) GetOpenPositions() (OpenPositions, error)
- func (c *Connection) GetOpenTrades() (ReceivedTrades, error)
- func (c *Connection) GetOrder(orderSpecifier string) (RetrievedOrder, error)
- func (c *Connection) GetOrderDetails(instrument string, units string) (OrderDetails, error)
- func (c *Connection) GetOrders(instrument string) (RetrievedOrders, error)
- func (c *Connection) GetPendingOrders() (RetrievedOrders, error)
- func (c *Connection) GetPricingForInstruments(instruments []string) (Pricings, error)
- func (c *Connection) GetTimeFromCandles(instrument string, count int, g Granularity, from time.Time) (InstrumentHistory, error)
- func (c *Connection) GetTimeToCandles(instrument string, count int, g Granularity, to time.Time) (InstrumentHistory, error)
- func (c *Connection) GetTrade(ticket string) (ReceivedTrade, error)
- func (c *Connection) GetTradesForInstrument(instrument string) (ReceivedTrades, error)
- func (c *Connection) GetTransaction(ticket string) (Transaction, error)
- func (c *Connection) GetTransactions(from time.Time, to time.Time) (TransactionPages, error)
- func (c *Connection) GetTransactionsSinceId(id string) (Transactions, error)
- func (c *Connection) NewStreamingConnection() *StreamingConnection
- func (c *Connection) OrderBook(instrument string) (BrokerBook, error)
- func (c *Connection) PositionBook(instrument string) (BrokerBook, error)
- func (c *Connection) Post(endpoint string, data []byte) ([]byte, error)
- func (c *Connection) Put(endpoint string, data []byte) ([]byte, error)
- func (c *Connection) ReduceTradeSize(ticket string, body CloseTradePayload) (ModifiedTrade, error)
- func (c *Connection) UpdateOrder(orderSpecifier string, body OrderPayload) (RetrievedOrder, error)
- type ConnectionConfig
- type FullPrice
- type Granularity
- type HeartbeatResponse
- type InstrumentHistory
- type InstrumentPricing
- type Instruments
- type ModifiedTrade
- type OnFill
- type OpenPositions
- type OrderBody
- type OrderDetails
- type OrderExtensions
- type OrderInfo
- type OrderPayload
- type OrderResponse
- type PriceLevel
- type PricingStreamResponse
- type Pricings
- type ReceivedTrade
- type ReceivedTrades
- type RetrievedOrder
- type RetrievedOrders
- type StopLossOrder
- type StreamingConnection
- type TakeProfitOrder
- type Trade
- type TrailingStopLossOrder
- type Transaction
- type TransactionPages
- type TransactionStreamResponse
- type Transactions
Constants ¶
const ( GranularityFiveSeconds = Granularity(time.Second * 5) GranularityTenSeconds = Granularity(time.Second * 10) GranularityFifteenSeconds = Granularity(time.Second * 15) GranularityThirtySeconds = Granularity(time.Second * 30) GranularityMinute = Granularity(time.Minute) GranularityTwoMinutes = Granularity(time.Minute * 2) GranularityFourMinutes = Granularity(time.Minute * 4) GranularityFiveMinutes = Granularity(time.Minute * 5) GranularityTenMinutes = Granularity(time.Minute * 10) GranularityFifteenMinutes = Granularity(time.Minute * 15) GranularityThirtyMinutes = Granularity(time.Minute * 30) GranularityHour = Granularity(time.Hour) GranularityTwoHours = Granularity(time.Hour * 2) GranularityThreeHours = Granularity(time.Hour * 3) GranularityFourHours = Granularity(time.Hour * 4) GranularitySixHours = Granularity(time.Hour * 6) GranularityEightHours = Granularity(time.Hour * 8) GranularityTwelveHours = Granularity(time.Hour * 12) GranularityDay = Granularity(time.Hour * 24) GranularityWeek = Granularity(time.Hour * 24 * 7) GranularityMonth = Granularity(time.Hour * 24 * 7 * 30) )
Granularities available to the API
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIError ¶
APIError is returned when the Oanda server responds with an error
Message is the returned error message from the server if possible to unmarshal, otherwise it is simply the entire body of the response
type AccountChanges ¶
type AccountChanges struct {
Changes struct {
OrdersCancelled []interface{} `json:"ordersCancelled"`
OrdersCreated []interface{} `json:"ordersCreated"`
OrdersFilled []struct {
CreateTime time.Time `json:"createTime"`
FilledTime time.Time `json:"filledTime"`
FillingTransactionID string `json:"fillingTransactionID"`
ID string `json:"id"`
Instrument string `json:"instrument"`
PositionFill string `json:"positionFill"`
State string `json:"state"`
TimeInForce string `json:"timeInForce"`
TradeOpenedID string `json:"tradeOpenedID"`
Type string `json:"type"`
Units string `json:"units"`
} `json:"ordersFilled"`
OrdersTriggered []interface{} `json:"ordersTriggered"`
Positions []struct {
Instrument string `json:"instrument"`
Long struct {
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
Units string `json:"units"`
} `json:"long"`
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
Short struct {
AveragePrice string `json:"averagePrice"`
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
TradeIDs []string `json:"tradeIDs"`
Units string `json:"units"`
} `json:"short"`
} `json:"positions"`
TradesClosed []interface{} `json:"tradesClosed"`
TradesOpened []struct {
CurrentUnits string `json:"currentUnits"`
Financing string `json:"financing"`
ID string `json:"id"`
InitialUnits string `json:"initialUnits"`
Instrument string `json:"instrument"`
OpenTime time.Time `json:"openTime"`
Price string `json:"price"`
RealizedPL string `json:"realizedPL"`
State string `json:"state"`
} `json:"tradesOpened"`
TradesReduced []interface{} `json:"tradesReduced"`
Transactions []struct {
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
ID string `json:"id"`
Instrument string `json:"instrument"`
PositionFill string `json:"positionFill,omitempty"`
Reason string `json:"reason"`
Time time.Time `json:"time"`
TimeInForce string `json:"timeInForce,omitempty"`
Type string `json:"type"`
Units string `json:"units"`
UserID int `json:"userID"`
AccountBalance string `json:"accountBalance,omitempty"`
Financing string `json:"financing,omitempty"`
OrderID string `json:"orderID,omitempty"`
Pl string `json:"pl,omitempty"`
Price string `json:"price,omitempty"`
TradeOpened struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
} `json:"tradeOpened,omitempty"`
} `json:"transactions"`
} `json:"changes"`
LastTransactionID string `json:"lastTransactionID"`
State struct {
NAV string `json:"NAV"`
MarginAvailable string `json:"marginAvailable"`
MarginCloseoutMarginUsed string `json:"marginCloseoutMarginUsed"`
MarginCloseoutNAV string `json:"marginCloseoutNAV"`
MarginCloseoutPercent string `json:"marginCloseoutPercent"`
MarginCloseoutUnrealizedPL string `json:"marginCloseoutUnrealizedPL"`
MarginUsed string `json:"marginUsed"`
Orders []interface{} `json:"orders"`
PositionValue string `json:"positionValue"`
Positions []struct {
Instrument string `json:"instrument"`
LongUnrealizedPL string `json:"longUnrealizedPL"`
NetUnrealizedPL string `json:"netUnrealizedPL"`
ShortUnrealizedPL string `json:"shortUnrealizedPL"`
} `json:"positions"`
Trades []struct {
ID string `json:"id"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"trades"`
UnrealizedPL string `json:"unrealizedPL"`
WithdrawalLimit string `json:"withdrawalLimit"`
} `json:"state"`
}
type AccountInfo ¶
type AccountInfo struct {
Account struct {
NAV string `json:"NAV"`
Alias string `json:"alias"`
Balance string `json:"balance"`
CreatedByUserID int `json:"createdByUserID"`
CreatedTime time.Time `json:"createdTime"`
Currency string `json:"currency"`
HedgingEnabled bool `json:"hedgingEnabled"`
ID string `json:"id"`
LastTransactionID string `json:"lastTransactionID"`
MarginAvailable string `json:"marginAvailable"`
MarginCloseoutMarginUsed string `json:"marginCloseoutMarginUsed"`
MarginCloseoutNAV string `json:"marginCloseoutNAV"`
MarginCloseoutPercent string `json:"marginCloseoutPercent"`
MarginCloseoutPositionValue string `json:"marginCloseoutPositionValue"`
MarginCloseoutUnrealizedPL string `json:"marginCloseoutUnrealizedPL"`
MarginRate string `json:"marginRate"`
MarginUsed string `json:"marginUsed"`
OpenPositionCount int `json:"openPositionCount"`
OpenTradeCount int `json:"openTradeCount"`
Orders []interface{} `json:"orders"`
PendingOrderCount int `json:"pendingOrderCount"`
Pl string `json:"pl"`
PositionValue string `json:"positionValue"`
Positions []struct {
Instrument string `json:"instrument"`
Long struct {
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
Units string `json:"units"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"long"`
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
Short struct {
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
Units string `json:"units"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"short"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"positions"`
ResettablePL string `json:"resettablePL"`
Trades []interface{} `json:"trades"`
UnrealizedPL string `json:"unrealizedPL"`
WithdrawalLimit string `json:"withdrawalLimit"`
} `json:"account"`
LastTransactionID string `json:"lastTransactionID"`
}
type AccountProperties ¶
type AccountSummary ¶
type AccountSummary struct {
Account struct {
NAV string `json:"NAV"`
Alias string `json:"alias"`
Balance float64 `json:"balance,string"`
CreatedByUserID int `json:"createdByUserID"`
CreatedTime time.Time `json:"createdTime"`
Currency string `json:"currency"`
HedgingEnabled bool `json:"hedgingEnabled"`
ID string `json:"id"`
LastTransactionID string `json:"lastTransactionID"`
MarginAvailable float64 `json:"marginAvailable,string"`
MarginCloseoutMarginUsed string `json:"marginCloseoutMarginUsed"`
MarginCloseoutNAV string `json:"marginCloseoutNAV"`
MarginCloseoutPercent string `json:"marginCloseoutPercent"`
MarginCloseoutPositionValue string `json:"marginCloseoutPositionValue"`
MarginCloseoutUnrealizedPL string `json:"marginCloseoutUnrealizedPL"`
MarginRate string `json:"marginRate"`
MarginUsed string `json:"marginUsed"`
OpenPositionCount int `json:"openPositionCount"`
OpenTradeCount int `json:"openTradeCount"`
PendingOrderCount int `json:"pendingOrderCount"`
Pl string `json:"pl"`
PositionValue string `json:"positionValue"`
ResettablePL string `json:"resettablePL"`
UnrealizedPL string `json:"unrealizedPL"`
WithdrawalLimit string `json:"withdrawalLimit"`
} `json:"account"`
LastTransactionID string `json:"lastTransactionID"`
}
type BidAskCandles ¶
type BidAskCandles struct {
Candles []struct {
Ask struct {
C float64 `json:"c,string"`
H float64 `json:"h,string"`
L float64 `json:"l,string"`
O float64 `json:"o,string"`
} `json:"ask"`
Bid struct {
C float64 `json:"c,string"`
H float64 `json:"h,string"`
L float64 `json:"l,string"`
O float64 `json:"o,string"`
} `json:"bid"`
Complete bool `json:"complete"`
Time time.Time `json:"time"`
Volume int `json:"volume"`
} `json:"candles"`
}
type BrokerBook ¶
type CancelledOrder ¶
type CancelledOrder struct {
OrderCancelTransaction struct {
ID string `json:"id"`
Time time.Time `json:"time"`
UserID int `json:"userID"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
RequestID string `json:"requestID"`
Type string `json:"type"`
OrderID string `json:"orderID"`
ClientOrderID string `json:"clientOrderID"`
Reason string `json:"reason"`
ReplacedByOrderID string `json:"replacedByOrderID"`
} `json:"orderCancelTransaction"`
RelatedTransactionIDs []string `json:"relatedTransactionIDs"`
LastTransactionID string `json:"lastTransactionID"`
}
type ClosePositionPayload ¶
type CloseTradePayload ¶
type CloseTradePayload struct {
Units string `json:"units"`
}
type Connection ¶
type Connection struct {
// contains filtered or unexported fields
}
Connection describes a connection to the Oanda v20 API It is thread safe
func NewConnection ¶
func NewConnection(accountID string, token string, config *ConnectionConfig) (*Connection, error)
NewConnection creates a new connection This function calls Connection.CheckConnection(), returning any errors Supplying a config is optional, with sane defaults (paper trading) being used otherwise.
func (*Connection) Accounts ¶
func (c *Connection) Accounts() ([]AccountProperties, error)
Accounts returns a slice of information on accounts authorized for the token.
func (*Connection) CancelOrder ¶
func (c *Connection) CancelOrder(orderSpecifier string) (CancelledOrder, error)
func (*Connection) CheckConnection ¶
func (c *Connection) CheckConnection() error
CheckConnection performs a request, returning any errors encountered
func (*Connection) ClosePosition ¶
func (c *Connection) ClosePosition(instrument string, body ClosePositionPayload) (ModifiedTrade, error)
func (*Connection) CreateOrder ¶
func (c *Connection) CreateOrder(body OrderPayload) (OrderResponse, error)
func (*Connection) Get ¶
func (c *Connection) Get(endpoint string) ([]byte, error)
Get performs a generic http get on the api
func (*Connection) GetAccount ¶
func (c *Connection) GetAccount(id string) (AccountInfo, error)
GetAccount returns information on the account.
func (*Connection) GetAccountChanges ¶
func (c *Connection) GetAccountChanges(id string, transactionId string) (AccountChanges, error)
func (*Connection) GetAccountInstruments ¶
func (c *Connection) GetAccountInstruments(id string) (Instruments, error)
func (*Connection) GetAccountSummary ¶
func (c *Connection) GetAccountSummary() (AccountSummary, error)
func (*Connection) GetBidAskCandles ¶
func (c *Connection) GetBidAskCandles(instrument string, count string, g Granularity) (BidAskCandles, error)
func (*Connection) GetCandles ¶
func (c *Connection) GetCandles(instrument string, count int, g Granularity) (InstrumentHistory, error)
func (*Connection) GetInstrumentPrice ¶
func (c *Connection) GetInstrumentPrice(instrument string) (InstrumentPricing, error)
func (*Connection) GetOpenPositions ¶
func (c *Connection) GetOpenPositions() (OpenPositions, error)
func (*Connection) GetOpenTrades ¶
func (c *Connection) GetOpenTrades() (ReceivedTrades, error)
func (*Connection) GetOrder ¶
func (c *Connection) GetOrder(orderSpecifier string) (RetrievedOrder, error)
func (*Connection) GetOrderDetails ¶
func (c *Connection) GetOrderDetails(instrument string, units string) (OrderDetails, error)
func (*Connection) GetOrders ¶
func (c *Connection) GetOrders(instrument string) (RetrievedOrders, error)
func (*Connection) GetPendingOrders ¶
func (c *Connection) GetPendingOrders() (RetrievedOrders, error)
func (*Connection) GetPricingForInstruments ¶
func (c *Connection) GetPricingForInstruments(instruments []string) (Pricings, error)
func (*Connection) GetTimeFromCandles ¶
func (c *Connection) GetTimeFromCandles(instrument string, count int, g Granularity, from time.Time) (InstrumentHistory, error)
func (*Connection) GetTimeToCandles ¶
func (c *Connection) GetTimeToCandles(instrument string, count int, g Granularity, to time.Time) (InstrumentHistory, error)
func (*Connection) GetTrade ¶
func (c *Connection) GetTrade(ticket string) (ReceivedTrade, error)
func (*Connection) GetTradesForInstrument ¶
func (c *Connection) GetTradesForInstrument(instrument string) (ReceivedTrades, error)
func (*Connection) GetTransaction ¶
func (c *Connection) GetTransaction(ticket string) (Transaction, error)
func (*Connection) GetTransactions ¶
func (c *Connection) GetTransactions(from time.Time, to time.Time) (TransactionPages, error)
https://golang.org/pkg/time/#Time.AddDate https://play.golang.org/p/Dw7D4JJ7EC
func (*Connection) GetTransactionsSinceId ¶
func (c *Connection) GetTransactionsSinceId(id string) (Transactions, error)
func (*Connection) NewStreamingConnection ¶
func (c *Connection) NewStreamingConnection() *StreamingConnection
func (*Connection) OrderBook ¶
func (c *Connection) OrderBook(instrument string) (BrokerBook, error)
func (*Connection) PositionBook ¶
func (c *Connection) PositionBook(instrument string) (BrokerBook, error)
func (*Connection) Post ¶
func (c *Connection) Post(endpoint string, data []byte) ([]byte, error)
Post performs a generic http post on the api
func (*Connection) Put ¶
func (c *Connection) Put(endpoint string, data []byte) ([]byte, error)
Put performs a generic http put on the api
func (*Connection) ReduceTradeSize ¶
func (c *Connection) ReduceTradeSize(ticket string, body CloseTradePayload) (ModifiedTrade, error)
Default is close the whole position using the string "ALL" in body.units
func (*Connection) UpdateOrder ¶
func (c *Connection) UpdateOrder(orderSpecifier string, body OrderPayload) (RetrievedOrder, error)
type ConnectionConfig ¶
ConnectionConfig is used to configure new connections Defaults;
UserAgent = v20-golang/0.0.1 Timeout = 5 seconds Live = False
type FullPrice ¶
type FullPrice struct {
CloseoutBid string `json:"closeoutBid"`
CloseoutAsk string `json:"closeoutAsk"`
Timestamp string `json:"timestamp"`
Bids []PriceLevel `json:"bids"`
Asks []PriceLevel `json:"asks"`
}
type Granularity ¶
Granularity defines a candle's time period
func GranularityFromDuration ¶
func GranularityFromDuration(d time.Duration) (Granularity, error)
GranularityFromDuration tries to find a granularity for the given duration
func (Granularity) Duration ¶
func (g Granularity) Duration() time.Duration
Duration returns the granularity as a time.Duration
func (Granularity) String ¶
func (g Granularity) String() string
String returns the granularity as a string, formatted to the oanda standard
type HeartbeatResponse ¶
type InstrumentHistory ¶
type InstrumentPricing ¶
type InstrumentPricing struct {
Time time.Time `json:"time"`
Prices []struct {
Type string `json:"type"`
Time time.Time `json:"time"`
Bids []struct {
Price float64 `json:"price,string"`
Liquidity int `json:"liquidity"`
} `json:"bids"`
Asks []struct {
Price float64 `json:"price,string"`
Liquidity int `json:"liquidity"`
} `json:"asks"`
CloseoutBid float64 `json:"closeoutBid,string"`
CloseoutAsk float64 `json:"closeoutAsk,string"`
Status string `json:"status"`
Tradeable bool `json:"tradeable"`
UnitsAvailable struct {
Default struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"default"`
OpenOnly struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"openOnly"`
ReduceFirst struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"reduceFirst"`
ReduceOnly struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"reduceOnly"`
} `json:"unitsAvailable"`
QuoteHomeConversionFactors struct {
PositiveUnits string `json:"positiveUnits"`
NegativeUnits string `json:"negativeUnits"`
} `json:"quoteHomeConversionFactors"`
Instrument string `json:"instrument"`
} `json:"prices"`
}
type Instruments ¶
type Instruments []struct {
DisplayName string `json:"displayName"`
DisplayPrecision int `json:"displayPrecision"`
MarginRate string `json:"marginRate"`
MaximumOrderUnits string `json:"maximumOrderUnits"`
MaximumPositionSize string `json:"maximumPositionSize"`
MaximumTrailingStopDistance string `json:"maximumTrailingStopDistance"`
MinimumTradeSize string `json:"minimumTradeSize"`
MinimumTrailingStopDistance string `json:"minimumTrailingStopDistance"`
Name string `json:"name"`
PipLocation int `json:"pipLocation"`
TradeUnitsPrecision int `json:"tradeUnitsPrecision"`
Type string `json:"type"`
}
type ModifiedTrade ¶
type ModifiedTrade struct {
OrderCreateTransaction struct {
Type string `json:"type"`
Instrument string `json:"instrument"`
Units string `json:"units"`
TimeInForce string `json:"timeInForce"`
PositionFill string `json:"positionFill"`
Reason string `json:"reason"`
TradeClose struct {
Units string `json:"units"`
TradeID string `json:"tradeID"`
} `json:"tradeClose"`
ID string `json:"id"`
UserID int `json:"userID"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
RequestID string `json:"requestID"`
Time time.Time `json:"time"`
} `json:"orderCreateTransaction"`
OrderFillTransaction struct {
Type string `json:"type"`
Instrument string `json:"instrument"`
Units string `json:"units"`
Price string `json:"price"`
FullPrice FullPrice `json:"fullPrice"`
PL string `json:"pl"`
Financing string `json:"financing"`
Commission string `json:"commission"`
AccountBalance string `json:"accountBalance"`
TradeOpened string `json:"tradeOpened"`
TimeInForce string `json:"timeInForce"`
PositionFill string `json:"positionFill"`
Reason string `json:"reason"`
TradesClosed []struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
RealizedPL string `json:"realizedPL"`
Financing string `json:"financing"`
} `json:"tradesClosed"`
TradeReduced struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
RealizedPL string `json:"realizedPL"`
Financing string `json:"financing"`
} `json:"tradeReduced"`
ID string `json:"id"`
UserID int `json:"userID"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
RequestID string `json:"requestID"`
OrderID string `json:"orderId"`
ClientOrderID string `json:"clientOrderId"`
Time time.Time `json:"time"`
} `json:"orderFillTransaction"`
OrderCancelTransaction struct {
Type string `json:"type"`
OrderID string `json:"orderID"`
Reason string `json:"reason"`
ID string `json:"id"`
UserID int `json:"userID"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
RequestID string `json:"requestID"`
Time time.Time `json:"time"`
} `json:"orderCancelTransaction"`
RelatedTransactionIDs []string `json:"relatedTransactionIDs"`
LastTransactionID string `json:"lastTransactionID"`
}
type OnFill ¶
type OnFill struct {
TimeInForce string `json:"timeInForce,omitempty"`
Price string `json:"price,omitempty"` // must be a string for float precision
Distance string `json:"distance,omitempty"`
GtdTime string `json:"gtdTime,omitempty"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
}
type OpenPositions ¶
type OpenPositions struct {
LastTransactionID string `json:"lastTransactionID"`
Positions []struct {
Instrument string `json:"instrument"`
Long struct {
AveragePrice string `json:"averagePrice"`
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
TradeIDs []string `json:"tradeIDs"`
Units string `json:"units"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"long"`
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
Short struct {
AveragePrice string `json:"averagePrice"`
Pl string `json:"pl"`
ResettablePL string `json:"resettablePL"`
TradeIDs []string `json:"tradeIDs"`
Units string `json:"units"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"short"`
UnrealizedPL string `json:"unrealizedPL"`
} `json:"positions"`
}
type OrderBody ¶
type OrderBody struct {
ID string `json:"id,omitempty"`
CreateTime time.Time `json:"createTime,omitempty"`
State string `json:"state,omitempty"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
Instrument string `json:"instrument"`
Units int `json:"units"`
TimeInForce string `json:"timeInForce"`
PriceBound string `json:"priceBound,omitempty"`
Type string `json:"type"`
PositionFill string `json:"positionFill,omitempty"`
Price string `json:"price,omitempty"`
TakeProfitOnFill *OnFill `json:"takeProfitOnFill,omitempty"`
StopLossOnFill *OnFill `json:"stopLossOnFill,omitempty"`
GuaranteedStopLossOnFill *OnFill `json:"guaranteedStopLossOnFill,omitempty"`
TrailingStopLossOnFill *OnFill `json:"trailingStopLossOnFill,omitempty"`
TradeClientExtensions *OrderExtensions `json:"tradeClientExtensions,omitempty"`
FillingTransactionID string `json:"fillingTransactionID,omitempty"`
FilledTime time.Time `json:"filledTime,omitempty"`
TradeOpenedID string `json:"tradeOpenedID,omitempty"`
TradeID string `json:"tradeID,omitempty"`
TradeReducedID string `json:"tradeReducedID,omitempty"`
TradeClosedIDs []string `json:"tradeClosedIDs,omitempty"`
CancellingTransactionID string `json:"cancellingTransactionID,omitempty"`
CancelledTime time.Time `json:"cancelledTime,omitempty"`
ReplacesOrderID string `json:"replacesOrderID,omitempty"`
ReplacedByOrderID string `json:"replacedByOrderID,omitempty"`
TriggerCondition string `json:"triggerCondition,omitempty"`
GTDTime time.Time `json:"gtdTime,omitempty"`
Distance string `json:"distance,omitempty"`
}
type OrderDetails ¶
type OrderDetails struct {
GainPerPipPerMillionUnits float64 `json:"gainPerPipPerMillionUnits,string"`
LossPerPipPerMillionUnits float64 `json:"lossPerPipPerMillionUnits,string"`
UnitsAvailable struct {
Default struct {
Long float64 `json:"long,string"`
Short float64 `json:"short,string"`
} `json:"default"`
OpenOnly struct {
Long float64 `json:"long,string"`
Short float64 `json:"short,string"`
} `json:"openOnly"`
ReduceFirst struct {
Long float64 `json:"long,string"`
Short float64 `json:"short,string"`
} `json:"reduceFirst"`
ReduceOnly struct {
Long float64 `json:"long,string"`
Short float64 `json:"short,string"`
} `json:"reduceOnly"`
} `json:"unitsAvailable"`
UnitValues struct {
Isolation struct {
Units float64 `json:"units,string"`
Commission float64 `json:"commission,string"`
PositionValueChange float64 `json:"positionValueChange,string"`
PositionValue float64 `json:"positionValue,string"`
MarginRequired float64 `json:"marginRequired,string"`
MarginUsed float64 `json:"marginUsed,string"`
} `json:"isolation"`
PositionDefault struct {
Units float64 `json:"units,string"`
Commission float64 `json:"commission,string"`
PositionValueChange float64 `json:"positionValueChange,string"`
PositionValue float64 `json:"positionValue,string"`
MarginRequired float64 `json:"marginRequired,string"`
MarginUsed float64 `json:"marginUsed,string"`
} `json:"positionDefault"`
PositionOpenOnly struct {
Units float64 `json:"units,string"`
Commission float64 `json:"commission,string"`
PositionValueChange float64 `json:"positionValueChange,string"`
PositionValue float64 `json:"positionValue,string"`
MarginRequired float64 `json:"marginRequired,string"`
MarginUsed float64 `json:"marginUsed,string"`
} `json:"positionOpenOnly"`
PositionReduceFirst struct {
Units float64 `json:"units,string"`
Commission float64 `json:"commission,string"`
PositionValueChange float64 `json:"positionValueChange,string"`
PositionValue float64 `json:"positionValue,string"`
MarginRequired float64 `json:"marginRequired,string"`
MarginUsed float64 `json:"marginUsed,string"`
} `json:"positionReduceFirst"`
PositionReduceOnly struct {
Units float64 `json:"units,string"`
Commission float64 `json:"commission,string"`
PositionValueChange float64 `json:"positionValueChange,string"`
PositionValue float64 `json:"positionValue,string"`
MarginRequired float64 `json:"marginRequired,string"`
MarginUsed float64 `json:"marginUsed,string"`
} `json:"positionReduceOnly"`
} `json:"unitValues"`
ValueTables struct {
CommissionTable []struct {
Units string `json:"units"`
Value string `json:"value"`
} `json:"commissionTable"`
} `json:"valueTables"`
LastTransactionID string `json:"lastTransactionID"`
}
type OrderExtensions ¶
type OrderInfo ¶
type OrderInfo struct {
ID string `json:"id"`
CreateTime time.Time `json:"createTime"`
State string `json:"state"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
Instrument string `json:"instrument"`
Units string `json:"units"` // Keep as string for API response
TimeInForce string `json:"timeInForce"`
PriceBound string `json:"priceBound,omitempty"`
Type string `json:"type"`
PositionFill string `json:"positionFill"`
Price string `json:"price,omitempty"`
TakeProfitOnFill *OnFill `json:"takeProfitOnFill,omitempty"`
StopLossOnFill *OnFill `json:"stopLossOnFill,omitempty"`
GuaranteedStopLossOnFill *OnFill `json:"guaranteedStopLossOnFill,omitempty"`
TrailingStopLossOnFill *OnFill `json:"trailingStopLossOnFill,omitempty"`
TradeClientExtensions *OrderExtensions `json:"tradeClientExtensions,omitempty"`
FillingTransactionID string `json:"fillingTransactionID,omitempty"`
FilledTime time.Time `json:"filledTime,omitempty"`
TradeOpenedID string `json:"tradeOpenedID,omitempty"`
TradeID string `json:"tradeID,omitempty"`
TradeReducedID string `json:"tradeReducedID,omitempty"`
CancellingTransactionID string `json:"cancellingTransactionID,omitempty"`
CancelledTime time.Time `json:"cancelledTime,omitempty"`
ReplacesOrderID string `json:"replacesOrderID,omitempty"`
ReplacedByOrderID string `json:"replacedByOrderID,omitempty"`
TriggerCondition string `json:"triggerCondition,omitempty"`
GTDTime time.Time `json:"gtdTime,omitempty"`
PartialFill string `json:"partialFill,omitempty"`
Distance string `json:"distance,omitempty"`
}
type OrderPayload ¶
type OrderPayload struct {
Order OrderBody `json:"order"`
}
type OrderResponse ¶
type OrderResponse struct {
LastTransactionID string `json:"lastTransactionID"`
OrderCreateTransaction struct {
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
ID string `json:"id"`
Instrument string `json:"instrument"`
PositionFill string `json:"positionFill"`
Reason string `json:"reason"`
Time time.Time `json:"time"`
TimeInForce string `json:"timeInForce"`
Type string `json:"type"`
Units string `json:"units"`
UserID int `json:"userID"`
Price string `json:"price,omitempty"`
PriceBound string `json:"priceBound,omitempty"`
Extensions *OrderExtensions `json:"clientExtensions,omitempty"`
TakeProfitOnFill *OnFill `json:"takeProfitOnFill,omitempty"`
StopLossOnFill *OnFill `json:"stopLossOnFill,omitempty"`
GuaranteedStopLossOnFill *OnFill `json:"guaranteedStopLossOnFill,omitempty"`
TrailingStopLossOnFill *OnFill `json:"trailingStopLossOnFill,omitempty"`
TradeClientExtensions *OrderExtensions `json:"tradeClientExtensions,omitempty"`
TriggerCondition string `json:"triggerCondition,omitempty"`
GTDTime time.Time `json:"gtdTime,omitempty"`
Distance string `json:"distance,omitempty"`
} `json:"orderCreateTransaction,omitempty"`
OrderFillTransaction struct {
AccountBalance string `json:"accountBalance"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
Financing string `json:"financing"`
ID string `json:"id"`
Instrument string `json:"instrument"`
OrderID string `json:"orderID"`
Pl string `json:"pl"`
Price string `json:"price"`
Reason string `json:"reason"`
Time time.Time `json:"time"`
TradeOpened struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
} `json:"tradeOpened"`
Type string `json:"type"`
Units string `json:"units"`
UserID int `json:"userID"`
FullPrice FullPrice `json:"fullPrice,omitempty"`
TradesClosed []struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
Financing string `json:"financing"`
RealizedPL string `json:"realizedPL"`
Price string `json:"price"`
} `json:"tradesClosed,omitempty"`
TradeReduced struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
Financing string `json:"financing"`
RealizedPL string `json:"realizedPL"`
Price string `json:"price"`
} `json:"tradeReduced,omitempty"`
} `json:"orderFillTransaction,omitempty"`
OrderCancelTransaction struct {
ID string `json:"id"`
Time time.Time `json:"time"`
Reason string `json:"reason"`
} `json:"orderCancelTransaction,omitempty"`
RelatedTransactionIDs []string `json:"relatedTransactionIDs"`
OrderClientExtensions *OrderExtensions `json:"orderClientExtensions,omitempty"`
TradeClientExtensions *OrderExtensions `json:"tradeClientExtensions,omitempty"`
}
func (*OrderResponse) GetOrderState ¶
func (or *OrderResponse) GetOrderState() string
GetOrderState returns the state of the order based on the transactions in the response
type PriceLevel ¶
type PricingStreamResponse ¶
type PricingStreamResponse struct {
Type string `json:"type"`
Time string `json:"time"`
Instrument string `json:"instrument,omitempty"`
Bids []struct {
Price string `json:"price"`
Liquidity int `json:"liquidity"`
} `json:"bids,omitempty"`
Asks []struct {
Price string `json:"price"`
Liquidity int `json:"liquidity"`
} `json:"asks,omitempty"`
CloseoutBid string `json:"closeoutBid,omitempty"`
CloseoutAsk string `json:"closeoutAsk,omitempty"`
Status string `json:"status,omitempty"`
Tradeable bool `json:"tradeable,omitempty"`
}
type Pricings ¶
type Pricings struct {
Prices []struct {
Asks []struct {
Liquidity int `json:"liquidity"`
Price string `json:"price"`
} `json:"asks"`
Bids []struct {
Liquidity int `json:"liquidity"`
Price string `json:"price"`
} `json:"bids"`
CloseoutAsk string `json:"closeoutAsk"`
CloseoutBid string `json:"closeoutBid"`
Instrument string `json:"instrument"`
QuoteHomeConversionFactors struct {
NegativeUnits string `json:"negativeUnits"`
PositiveUnits string `json:"positiveUnits"`
} `json:"quoteHomeConversionFactors"`
Status string `json:"status"`
Time time.Time `json:"time"`
UnitsAvailable struct {
Default struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"default"`
OpenOnly struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"openOnly"`
ReduceFirst struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"reduceFirst"`
ReduceOnly struct {
Long string `json:"long"`
Short string `json:"short"`
} `json:"reduceOnly"`
} `json:"unitsAvailable"`
} `json:"prices"`
}
type ReceivedTrade ¶
type ReceivedTrades ¶
type RetrievedOrder ¶
type RetrievedOrder struct {
Order OrderInfo `json:"order"`
}
type RetrievedOrders ¶
type StopLossOrder ¶
type StopLossOrder struct {
ID string `json:"id"`
CreateTime time.Time `json:"createTime"`
Type string `json:"type"`
TradeID string `json:"tradeID"`
ClientTradeID string `json:"clientTradeID,omitempty"`
Price string `json:"price"`
TimeInForce string `json:"timeInForce"`
TriggerCondition string `json:"triggerCondition"`
State string `json:"state"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
Guaranteed bool `json:"guaranteed"`
}
type StreamingConnection ¶
type StreamingConnection struct {
*Connection
// contains filtered or unexported fields
}
func NewStreamingConnection ¶
func NewStreamingConnection(c *Connection) *StreamingConnection
func (*StreamingConnection) StreamPrices ¶
func (sc *StreamingConnection) StreamPrices(instruments []string, callback func(PricingStreamResponse)) error
func (*StreamingConnection) StreamTransactions ¶
func (sc *StreamingConnection) StreamTransactions(callback func(TransactionStreamResponse)) error
type TakeProfitOrder ¶
type TakeProfitOrder struct {
ID string `json:"id"`
CreateTime time.Time `json:"createTime"`
Type string `json:"type"`
TradeID string `json:"tradeID"`
ClientTradeID string `json:"clientTradeID,omitempty"`
Price string `json:"price"`
TimeInForce string `json:"timeInForce"`
TriggerCondition string `json:"triggerCondition"`
State string `json:"state"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
}
type Trade ¶
type Trade struct {
ID string `json:"id"`
Instrument string `json:"instrument"`
Price string `json:"price"`
OpenTime time.Time `json:"openTime"`
State string `json:"state"`
InitialUnits string `json:"initialUnits"`
InitialMarginRequired string `json:"initialMarginRequired"`
CurrentUnits string `json:"currentUnits"`
RealizedPL string `json:"realizedPL"`
UnrealizedPL string `json:"unrealizedPL"`
MarginUsed string `json:"marginUsed"`
AverageClosePrice string `json:"averageClosePrice,omitempty"`
ClosingTransactionIDs []string `json:"closingTransactionIDs,omitempty"`
Financing string `json:"financing"`
CloseTime time.Time `json:"closeTime,omitempty"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
TakeProfitOrder *TakeProfitOrder `json:"takeProfitOrder,omitempty"`
StopLossOrder *StopLossOrder `json:"stopLossOrder,omitempty"`
TrailingStopLossOrder *TrailingStopLossOrder `json:"trailingStopLossOrder,omitempty"`
}
type TrailingStopLossOrder ¶
type TrailingStopLossOrder struct {
ID string `json:"id"`
CreateTime time.Time `json:"createTime"`
Type string `json:"type"`
TradeID string `json:"tradeID"`
ClientTradeID string `json:"clientTradeID,omitempty"`
Distance string `json:"distance"`
TimeInForce string `json:"timeInForce"`
TriggerCondition string `json:"triggerCondition"`
State string `json:"state"`
ClientExtensions *OrderExtensions `json:"clientExtensions,omitempty"`
}
type Transaction ¶
type Transaction struct {
LastTransactionID string `json:"lastTransactionID"`
Transaction struct {
AccountBalance string `json:"accountBalance"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
Financing string `json:"financing"`
ID string `json:"id"`
Instrument string `json:"instrument"`
OrderID string `json:"orderID"`
Pl string `json:"pl"`
Price string `json:"price"`
Reason string `json:"reason"`
Time time.Time `json:"time"`
TradeOpened struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
} `json:"tradeOpened"`
Type string `json:"type"`
Units string `json:"units"`
UserID int `json:"userID"`
} `json:"transaction"`
}
type TransactionPages ¶
type TransactionStreamResponse ¶
type TransactionStreamResponse struct {
Type string `json:"type"`
Time string `json:"time"`
TransactionID string `json:"transactionID,omitempty"`
AccountID string `json:"accountID,omitempty"`
BatchID string `json:"batchID,omitempty"`
RequestID string `json:"requestID,omitempty"`
Transaction json.RawMessage `json:"transaction,omitempty"`
}
type Transactions ¶
type Transactions struct {
LastTransactionID string `json:"lastTransactionID"`
Transactions []struct {
AccountBalance string `json:"accountBalance"`
AccountID string `json:"accountID"`
BatchID string `json:"batchID"`
Financing string `json:"financing"`
ID string `json:"id"`
Instrument string `json:"instrument"`
OrderID string `json:"orderID"`
Pl string `json:"pl"`
Price string `json:"price"`
Reason string `json:"reason"`
Time time.Time `json:"time"`
TradeOpened struct {
TradeID string `json:"tradeID"`
Units string `json:"units"`
} `json:"tradeOpened"`
Type string `json:"type"`
Units string `json:"units"`
UserID int `json:"userID"`
} `json:"transactions"`
}