Documentation ¶
Index ¶
- Constants
- Variables
- func Array(a Series, limit ...int) (result []float64)
- func AutoCorrelation(a Series, length int, lags ...int) float64
- func BeginningOfTheDay(t time.Time) time.Time
- func Correlation(a Series, b Series, length int, method ...CorrFunc) float64
- func Covariance(a Series, b Series, length int) float64
- func CrossEntropy(a, b Series, window int) (e float64)
- func Dot(a interface{}, b interface{}, limit ...int) float64
- func Entropy(a Series, window int) (e float64)
- func ExchangeFooterIcon(exName ExchangeName) string
- func FormatPrice(price fixedpoint.Value, tickSize fixedpoint.Value) string
- func Highest(a Series, lookback int) float64
- func IsFiatCurrency(currency string) bool
- func IsUSDFiatCurrency(currency string) bool
- func Kendall(a, b Series, length int) float64
- func LinearRegression(a Series, lookback int) (alpha float64, beta float64)
- func Lowest(a Series, lookback int) float64
- func Mean(a Series, limit ...int) (mean float64)
- func MustParseUnixTimestamp(a string) time.Time
- func NewOrderError(e error, o Order) error
- func NextCross(a Series, b Series, lookback int) (int, float64, bool)
- func Omega(returns Series, returnThresholds ...float64) float64
- func Over24Hours(since time.Time) bool
- func ParseInterval(input Interval) int
- func ParseTimeWithFormats(strTime string, formats []string) (time.Time, error)
- func Pearson(a, b Series, length int) float64
- func Predict(a Series, lookback int, offset ...int) float64
- func Reverse(a Series, limit ...int) (result floats.Slice)
- func Sharpe(returns Series, periods int, annualize bool, smart bool) float64
- func SideToColorName(side SideType) string
- func Skew(a Series, length int) float64
- func Sortino(returns Series, riskFreeReturns float64, periods int, annualize bool, ...) float64
- func Spearman(a, b Series, length int) float64
- func Stdev(a Series, params ...int) float64
- func Sum(a Series, limit ...int) (sum float64)
- func Variance(a Series, length int) float64
- type AbsResult
- type Acc
- type Account
- func (a *Account) AddBalance(currency string, fund fixedpoint.Value)
- func (a *Account) Balance(currency string) (balance Balance, ok bool)
- func (a *Account) Balances() (d BalanceMap)
- func (a *Account) LockBalance(currency string, locked fixedpoint.Value) error
- func (a *Account) Print()
- func (a *Account) UnlockBalance(currency string, unlocked fixedpoint.Value) error
- func (a *Account) UpdateBalances(balances BalanceMap)
- func (a *Account) UseLockedBalance(currency string, fund fixedpoint.Value) error
- type AccountType
- type AddSeriesResult
- type Asset
- type AssetMap
- type BacktestStream
- type Balance
- type BalanceMap
- func (m BalanceMap) Add(bm BalanceMap) BalanceMap
- func (m BalanceMap) Assets(prices PriceMap, priceTime time.Time) AssetMap
- func (m BalanceMap) Copy() (d BalanceMap)
- func (m BalanceMap) Currencies() (currencies []string)
- func (m BalanceMap) Debts() BalanceMap
- func (m BalanceMap) Print()
- func (m BalanceMap) SlackAttachment() slack.Attachment
- func (m BalanceMap) String() string
- type BalanceSnapshot
- type BollingerSetting
- type BookTicker
- type BoolSeries
- type CancelReplaceModeType
- type Canvas
- type ChangeResult
- type Channel
- type Color
- type CorrFunc
- type CrossResult
- type CsvFormatter
- type CustomIntervalProvider
- type Deposit
- type DepositStatus
- type Depth
- type Direction
- type Dispatcher
- type DivSeriesResult
- type Duration
- type EndpointCreator
- type Exchange
- type ExchangeAmountFeeProtect
- type ExchangeDefaultFeeRates
- type ExchangeFee
- type ExchangeMarketDataService
- type ExchangeName
- type ExchangeOrderQueryService
- type ExchangeRewardService
- type ExchangeTradeHistoryService
- type ExchangeTradeService
- type ExchangeTransferService
- type ExchangeWithdrawalService
- type FilterResult
- type Float64Indicator
- type FundingRate
- type FuturesAccountInfo
- type FuturesAssetMap
- type FuturesExchange
- type FuturesPosition
- type FuturesPositionMap
- type FuturesSettings
- type FuturesUserAsset
- type HeikinAshiStream
- type InstanceIDProvider
- type Interval
- type IntervalProfitCollector
- func (s *IntervalProfitCollector) GetNonProfitableIntervals() (result []ProfitReport)
- func (s *IntervalProfitCollector) GetNumOfNonProfitableIntervals() (nonprofit int)
- func (s *IntervalProfitCollector) GetNumOfProfitableIntervals() (profit int)
- func (s *IntervalProfitCollector) GetOmega() float64
- func (s *IntervalProfitCollector) GetProfitableIntervals() (result []ProfitReport)
- func (s *IntervalProfitCollector) GetSharpe() float64
- func (s *IntervalProfitCollector) GetSortino() float64
- func (s IntervalProfitCollector) MarshalYAML() (interface{}, error)
- func (s *IntervalProfitCollector) Update(profit *Profit)
- type IntervalSlice
- type IntervalWindow
- type IntervalWindowBandWidth
- type IsolatedMarginAccount
- type IsolatedMarginAccountInfo
- type IsolatedMarginAsset
- type IsolatedMarginAssetMap
- type IsolatedUserAsset
- type JsonArr
- type JsonStruct
- type KLine
- func (k *KLine) BounceDown() bool
- func (k *KLine) BounceUp() bool
- func (k *KLine) Color() string
- func (k *KLine) Direction() Direction
- func (k *KLine) GetAmplification() fixedpoint.Value
- func (k *KLine) GetBody() fixedpoint.Value
- func (k *KLine) GetChange() fixedpoint.Value
- func (k *KLine) GetClose() fixedpoint.Value
- func (k *KLine) GetEndTime() Time
- func (k *KLine) GetHigh() fixedpoint.Value
- func (k *KLine) GetInterval() Interval
- func (k *KLine) GetLow() fixedpoint.Value
- func (k *KLine) GetLowerShadowHeight() fixedpoint.Value
- func (k *KLine) GetLowerShadowRatio() fixedpoint.Value
- func (k *KLine) GetMaxChange() fixedpoint.Value
- func (k *KLine) GetOpen() fixedpoint.Value
- func (k *KLine) GetStartTime() Time
- func (k *KLine) GetThickness() fixedpoint.Value
- func (k *KLine) GetUpperShadowHeight() fixedpoint.Value
- func (k *KLine) GetUpperShadowRatio() fixedpoint.Value
- func (k *KLine) Merge(o *KLine)
- func (k *KLine) Mid() fixedpoint.Value
- func (k *KLine) PlainText() string
- func (k *KLine) Set(o *KLine)
- func (k *KLine) SlackAttachment() slack.Attachment
- func (k *KLine) String() string
- type KLineCallback
- type KLineOrWindow
- type KLineQueryOptions
- type KLineSeries
- type KLineWindow
- func (k *KLineWindow) Add(line KLine)
- func (k KLineWindow) AllDrop() bool
- func (k KLineWindow) AllRise() bool
- func (k KLineWindow) BounceDown() bool
- func (k KLineWindow) BounceUp() bool
- func (k *KLineWindow) Close() Series
- func (k KLineWindow) Color() string
- func (k KLineWindow) First() KLine
- func (k KLineWindow) GetAmplification() fixedpoint.Value
- func (k KLineWindow) GetBody() fixedpoint.Value
- func (k KLineWindow) GetChange() fixedpoint.Value
- func (k KLineWindow) GetClose() fixedpoint.Value
- func (k KLineWindow) GetHigh() fixedpoint.Value
- func (k KLineWindow) GetInterval() Interval
- func (k KLineWindow) GetLow() fixedpoint.Value
- func (k KLineWindow) GetLowerShadowHeight() fixedpoint.Value
- func (k KLineWindow) GetLowerShadowRatio() fixedpoint.Value
- func (k KLineWindow) GetMaxChange() fixedpoint.Value
- func (k KLineWindow) GetOpen() fixedpoint.Value
- func (k KLineWindow) GetThickness() fixedpoint.Value
- func (k KLineWindow) GetTrend() int
- func (k KLineWindow) GetUpperShadowHeight() fixedpoint.Value
- func (k KLineWindow) GetUpperShadowRatio() fixedpoint.Value
- func (k *KLineWindow) High() Series
- func (k KLineWindow) Last() KLine
- func (k KLineWindow) Len() int
- func (k *KLineWindow) Low() Series
- func (k KLineWindow) Mid() fixedpoint.Value
- func (k *KLineWindow) Open() Series
- func (k KLineWindow) ReduceClose() fixedpoint.Value
- func (k KLineWindow) SlackAttachment() slack.Attachment
- func (k KLineWindow) Tail(size int) KLineWindow
- func (k KLineWindow) Take(size int) KLineWindow
- func (k *KLineWindow) Truncate(size int)
- func (k *KLineWindow) Volume() Series
- type KValueType
- type LogisticRegressionModel
- type LooseFormatTime
- type MarginAccount
- type MarginAccountInfo
- type MarginAssetMap
- type MarginBorrowRepayService
- type MarginExchange
- type MarginHistory
- type MarginInterest
- type MarginLiquidation
- type MarginLoan
- type MarginOrderSideEffectType
- type MarginRepay
- type MarginSettings
- type MarginUserAsset
- type Market
- func (m Market) BaseCurrencyFormatter() *accounting.Accounting
- func (m Market) CanonicalizeVolume(val fixedpoint.Value) float64
- func (m Market) FormatPrice(val fixedpoint.Value) string
- func (m Market) FormatPriceCurrency(val fixedpoint.Value) string
- func (m Market) FormatQuantity(val fixedpoint.Value) string
- func (m Market) FormatVolume(val fixedpoint.Value) string
- func (m Market) IsDustQuantity(quantity, price fixedpoint.Value) bool
- func (m Market) QuoteCurrencyFormatter() *accounting.Accounting
- func (m Market) TruncatePrice(price fixedpoint.Value) fixedpoint.Value
- func (m Market) TruncateQuantity(quantity fixedpoint.Value) fixedpoint.Value
- type MarketMap
- type MillisecondTimestamp
- type MinusSeriesResult
- type MulSeriesResult
- type MutexOrderBook
- func (b *MutexOrderBook) BestAsk() (pv PriceVolume, ok bool)
- func (b *MutexOrderBook) BestBid() (pv PriceVolume, ok bool)
- func (b *MutexOrderBook) BestBidAndAsk() (bid, ask PriceVolume, ok bool)
- func (b *MutexOrderBook) Copy() OrderBook
- func (b *MutexOrderBook) CopyDepth(depth int) OrderBook
- func (b *MutexOrderBook) IsValid() (ok bool, err error)
- func (b *MutexOrderBook) LastUpdateTime() time.Time
- func (b *MutexOrderBook) Load(book SliceOrderBook)
- func (b *MutexOrderBook) Reset()
- func (b *MutexOrderBook) Update(update SliceOrderBook)
- type NanosecondTimestamp
- type NumberSeries
- type Order
- type OrderBook
- type OrderError
- type OrderMap
- func (m OrderMap) Add(o Order)
- func (m OrderMap) Backup() (orderForms []SubmitOrder)
- func (m OrderMap) Canceled() OrderSlice
- func (m OrderMap) Exists(orderID uint64) bool
- func (m OrderMap) Filled() OrderSlice
- func (m OrderMap) FindByStatus(status OrderStatus) (orders OrderSlice)
- func (m OrderMap) IDs() (ids []uint64)
- func (m OrderMap) Lookup(f func(o Order) bool) *Order
- func (m OrderMap) Orders() (orders OrderSlice)
- func (m OrderMap) Remove(orderID uint64)
- func (m OrderMap) Update(o Order)
- type OrderQuery
- type OrderSlice
- type OrderStatus
- type OrderType
- type PCA
- type Parser
- type PercentageChangeResult
- type PlainText
- type Position
- func (p *Position) AddTrade(td Trade) (profit fixedpoint.Value, netProfit fixedpoint.Value, madeProfit bool)
- func (p *Position) AddTrades(trades []Trade) (fixedpoint.Value, fixedpoint.Value, bool)
- func (p *Position) BindStream(stream Stream)
- func (p *Position) CsvHeader() []string
- func (p *Position) CsvRecords() [][]string
- func (p *Position) EmitModify(baseQty fixedpoint.Value, quoteQty fixedpoint.Value, price fixedpoint.Value)
- func (p *Position) GetBase() (base fixedpoint.Value)
- func (p *Position) GetQuantity() fixedpoint.Value
- func (p *Position) IsClosed() bool
- func (p *Position) IsDust(price fixedpoint.Value) bool
- func (p *Position) IsLong() bool
- func (p *Position) IsOpened(currentPrice fixedpoint.Value) bool
- func (p *Position) IsShort() bool
- func (p *Position) ModifyAverageCost(price fixedpoint.Value) error
- func (p *Position) ModifyBase(qty fixedpoint.Value) error
- func (p *Position) ModifyQuote(qty fixedpoint.Value) error
- func (p *Position) NewMarketCloseOrder(percentage fixedpoint.Value) *SubmitOrder
- func (p *Position) NewProfit(trade Trade, profit, netProfit fixedpoint.Value) Profit
- func (p *Position) OnModify(...)
- func (p *Position) PlainText() (msg string)
- func (p *Position) ROI(price fixedpoint.Value) fixedpoint.Value
- func (p *Position) Reset()
- func (p *Position) SetExchangeFeeRate(ex ExchangeName, exchangeFee ExchangeFee)
- func (p *Position) SetFeeRate(exchangeFee ExchangeFee)
- func (p *Position) SlackAttachment() slack.Attachment
- func (p *Position) String() string
- func (p *Position) Type() PositionType
- func (p *Position) UnrealizedProfit(price fixedpoint.Value) fixedpoint.Value
- type PositionMap
- type PositionRisk
- type PositionType
- type PremiumIndex
- type PriceHeartBeat
- type PriceMap
- type PriceVolume
- type PriceVolumeSlice
- func (slice PriceVolumeSlice) Copy() PriceVolumeSlice
- func (slice PriceVolumeSlice) CopyDepth(depth int) PriceVolumeSlice
- func (slice PriceVolumeSlice) Find(price fixedpoint.Value, descending bool) (pv PriceVolume, idx int)
- func (slice PriceVolumeSlice) First() (PriceVolume, bool)
- func (slice PriceVolumeSlice) IndexByVolumeDepth(requiredVolume fixedpoint.Value) int
- func (slice PriceVolumeSlice) InsertAt(idx int, pv PriceVolume) PriceVolumeSlice
- func (slice PriceVolumeSlice) Len() int
- func (slice PriceVolumeSlice) Less(i, j int) bool
- func (slice PriceVolumeSlice) Remove(price fixedpoint.Value, descending bool) PriceVolumeSlice
- func (slice PriceVolumeSlice) Second() (PriceVolume, bool)
- func (slice PriceVolumeSlice) Swap(i, j int)
- func (slice PriceVolumeSlice) Trim() (pvs PriceVolumeSlice)
- func (slice *PriceVolumeSlice) UnmarshalJSON(b []byte) error
- func (slice PriceVolumeSlice) Upsert(pv PriceVolume, descending bool) PriceVolumeSlice
- type Profit
- type ProfitReport
- type ProfitStats
- func (s *ProfitStats) AddProfit(profit Profit)
- func (s *ProfitStats) AddTrade(trade Trade)
- func (s *ProfitStats) Init(market Market)
- func (s *ProfitStats) IsOver24Hours() bool
- func (s *ProfitStats) PlainText() string
- func (s *ProfitStats) ResetToday(t time.Time)
- func (s *ProfitStats) SlackAttachment() slack.Attachment
- type Queue
- type RBNode
- type RBTOrderBook
- func (b *RBTOrderBook) BestAsk() (PriceVolume, bool)
- func (b *RBTOrderBook) BestBid() (PriceVolume, bool)
- func (b *RBTOrderBook) Copy() OrderBook
- func (b *RBTOrderBook) CopyDepth(limit int) OrderBook
- func (b *RBTOrderBook) EmitLoad(book *RBTOrderBook)
- func (b *RBTOrderBook) EmitUpdate(book *RBTOrderBook)
- func (b *RBTOrderBook) IsValid() (bool, error)
- func (b *RBTOrderBook) LastUpdateTime() time.Time
- func (b *RBTOrderBook) Load(book SliceOrderBook)
- func (b *RBTOrderBook) OnLoad(cb func(book *RBTOrderBook))
- func (b *RBTOrderBook) OnUpdate(cb func(book *RBTOrderBook))
- func (b *RBTOrderBook) Print()
- func (b *RBTOrderBook) Reset()
- func (b *RBTOrderBook) SideBook(sideType SideType) PriceVolumeSlice
- func (b *RBTOrderBook) Spread() (fixedpoint.Value, bool)
- func (b *RBTOrderBook) Update(book SliceOrderBook)
- type RBTree
- func (tree *RBTree) CopyInorder(limit int) *RBTree
- func (tree *RBTree) CopyInorderReverse(limit int) *RBTree
- func (tree *RBTree) Delete(key fixedpoint.Value) bool
- func (tree *RBTree) DeleteFixup(current *RBNode)
- func (tree *RBTree) Inorder(cb func(n *RBNode) bool)
- func (tree *RBTree) InorderOf(current *RBNode, cb func(n *RBNode) bool)
- func (tree *RBTree) InorderReverse(cb func(n *RBNode) bool)
- func (tree *RBTree) InorderReverseOf(current *RBNode, cb func(n *RBNode) bool)
- func (tree *RBTree) Insert(key, val fixedpoint.Value)
- func (tree *RBTree) InsertFixup(current *RBNode)
- func (tree *RBTree) Leftmost() *RBNode
- func (tree *RBTree) LeftmostOf(current *RBNode) *RBNode
- func (tree *RBTree) Postorder(cb func(n *RBNode) bool)
- func (tree *RBTree) PostorderOf(current *RBNode, cb func(n *RBNode) bool)
- func (tree *RBTree) Preorder(cb func(n *RBNode))
- func (tree *RBTree) PreorderOf(current *RBNode, cb func(n *RBNode))
- func (tree *RBTree) Print()
- func (tree *RBTree) Rightmost() *RBNode
- func (tree *RBTree) RightmostOf(current *RBNode) *RBNode
- func (tree *RBTree) RotateLeft(x *RBNode)
- func (tree *RBTree) RotateRight(y *RBNode)
- func (tree *RBTree) Search(key fixedpoint.Value) *RBNode
- func (tree *RBTree) Size() int
- func (tree *RBTree) Successor(current *RBNode) *RBNode
- func (tree *RBTree) Upsert(key, val fixedpoint.Value)
- type Reward
- type RewardSlice
- type RewardSliceByCreationTime
- type RewardType
- type RollingResult
- type Series
- type SeriesBase
- func (s *SeriesBase) Abs() SeriesExtend
- func (s *SeriesBase) Add(b interface{}) SeriesExtend
- func (s *SeriesBase) Array(limit ...int) (result []float64)
- func (s *SeriesBase) AutoCorrelation(length int, lag ...int) float64
- func (s *SeriesBase) Change(offset ...int) SeriesExtend
- func (s *SeriesBase) Correlation(b Series, length int, method ...CorrFunc) float64
- func (s *SeriesBase) Covariance(b Series, length int) float64
- func (s *SeriesBase) CrossEntropy(b Series, window int) float64
- func (s *SeriesBase) CrossOver(b Series) BoolSeries
- func (s *SeriesBase) CrossUnder(b Series) BoolSeries
- func (s *SeriesBase) Div(b interface{}) SeriesExtend
- func (s *SeriesBase) Dot(b interface{}, limit ...int) float64
- func (s *SeriesBase) Entropy(window int) float64
- func (s *SeriesBase) Filter(b func(int, float64) bool, length int) SeriesExtend
- func (s *SeriesBase) Highest(lookback int) float64
- func (s *SeriesBase) Index(i int) float64
- func (s *SeriesBase) Last() float64
- func (s *SeriesBase) Length() int
- func (s *SeriesBase) Lowest(lookback int) float64
- func (s *SeriesBase) Mean(limit ...int) float64
- func (s *SeriesBase) Minus(b interface{}) SeriesExtend
- func (s *SeriesBase) Mul(b interface{}) SeriesExtend
- func (s *SeriesBase) NextCross(b Series, lookback int) (int, float64, bool)
- func (s *SeriesBase) PercentageChange(offset ...int) SeriesExtend
- func (s *SeriesBase) Predict(lookback int, offset ...int) float64
- func (s *SeriesBase) Rank(length int) SeriesExtend
- func (s *SeriesBase) Reverse(limit ...int) (result floats.Slice)
- func (s *SeriesBase) Rolling(window int) *RollingResult
- func (s *SeriesBase) Shift(offset int) SeriesExtend
- func (s *SeriesBase) Sigmoid() SeriesExtend
- func (s *SeriesBase) Skew(length int) float64
- func (s *SeriesBase) Softmax(window int) SeriesExtend
- func (s *SeriesBase) Stdev(params ...int) float64
- func (s *SeriesBase) Sum(limit ...int) float64
- func (s *SeriesBase) Variance(length int) float64
- type SeriesExtend
- func Abs(a Series) SeriesExtend
- func Add(a interface{}, b interface{}) SeriesExtend
- func Change(a Series, offset ...int) SeriesExtend
- func Div(a interface{}, b interface{}) SeriesExtend
- func Filter(a Series, b func(i int, value float64) bool, length int) SeriesExtend
- func Minus(a interface{}, b interface{}) SeriesExtend
- func Mul(a interface{}, b interface{}) SeriesExtend
- func NewSeries(a Series) SeriesExtend
- func PercentageChange(a Series, offset ...int) SeriesExtend
- func Rank(a Series, length int) SeriesExtend
- func Shift(a Series, offset int) SeriesExtend
- func Sigmoid(a Series) SeriesExtend
- func Softmax(a Series, window int) SeriesExtend
- type ShiftResult
- type SideType
- type SigmoidResult
- type SliceOrderBook
- func (b *SliceOrderBook) BestAsk() (PriceVolume, bool)
- func (b *SliceOrderBook) BestBid() (PriceVolume, bool)
- func (b *SliceOrderBook) Copy() OrderBook
- func (b *SliceOrderBook) CopyDepth(limit int) OrderBook
- func (b *SliceOrderBook) EmitLoad(book *SliceOrderBook)
- func (b *SliceOrderBook) EmitUpdate(book *SliceOrderBook)
- func (b *SliceOrderBook) IsValid() (bool, error)
- func (b *SliceOrderBook) LastUpdateTime() time.Time
- func (b *SliceOrderBook) Load(book SliceOrderBook)
- func (b *SliceOrderBook) OnLoad(cb func(book *SliceOrderBook))
- func (b *SliceOrderBook) OnUpdate(cb func(book *SliceOrderBook))
- func (b *SliceOrderBook) PriceVolumesBySide(side SideType) PriceVolumeSlice
- func (b *SliceOrderBook) Print()
- func (b *SliceOrderBook) Reset()
- func (b *SliceOrderBook) SideBook(sideType SideType) PriceVolumeSlice
- func (b *SliceOrderBook) Spread() (fixedpoint.Value, bool)
- func (b *SliceOrderBook) String() string
- func (b *SliceOrderBook) Update(book SliceOrderBook)
- type SliceView
- type Speed
- type StandardStream
- func (s *StandardStream) Close() error
- func (s *StandardStream) Connect(ctx context.Context) error
- func (s *StandardStream) Dial(ctx context.Context, args ...string) (*websocket.Conn, error)
- func (s *StandardStream) DialAndConnect(ctx context.Context) error
- func (s *StandardStream) EmitAggTrade(trade Trade)
- func (s *StandardStream) EmitBalanceSnapshot(balances BalanceMap)
- func (s *StandardStream) EmitBalanceUpdate(balances BalanceMap)
- func (s *StandardStream) EmitBookSnapshot(book SliceOrderBook)
- func (s *StandardStream) EmitBookTickerUpdate(bookTicker BookTicker)
- func (s *StandardStream) EmitBookUpdate(book SliceOrderBook)
- func (s *StandardStream) EmitConnect()
- func (s *StandardStream) EmitDisconnect()
- func (s *StandardStream) EmitFuturesPositionSnapshot(futuresPositions FuturesPositionMap)
- func (s *StandardStream) EmitFuturesPositionUpdate(futuresPositions FuturesPositionMap)
- func (s *StandardStream) EmitKLine(kline KLine)
- func (s *StandardStream) EmitKLineClosed(kline KLine)
- func (s *StandardStream) EmitMarketTrade(trade Trade)
- func (s *StandardStream) EmitOrderUpdate(order Order)
- func (s *StandardStream) EmitStart()
- func (s *StandardStream) EmitTradeUpdate(trade Trade)
- func (s *StandardStream) GetPublicOnly() bool
- func (s *StandardStream) GetSubscriptions() []Subscription
- func (s *StandardStream) OnAggTrade(cb func(trade Trade))
- func (s *StandardStream) OnBalanceSnapshot(cb func(balances BalanceMap))
- func (s *StandardStream) OnBalanceUpdate(cb func(balances BalanceMap))
- func (s *StandardStream) OnBookSnapshot(cb func(book SliceOrderBook))
- func (s *StandardStream) OnBookTickerUpdate(cb func(bookTicker BookTicker))
- func (s *StandardStream) OnBookUpdate(cb func(book SliceOrderBook))
- func (s *StandardStream) OnConnect(cb func())
- func (s *StandardStream) OnDisconnect(cb func())
- func (s *StandardStream) OnFuturesPositionSnapshot(cb func(futuresPositions FuturesPositionMap))
- func (s *StandardStream) OnFuturesPositionUpdate(cb func(futuresPositions FuturesPositionMap))
- func (s *StandardStream) OnKLine(cb func(kline KLine))
- func (s *StandardStream) OnKLineClosed(cb func(kline KLine))
- func (s *StandardStream) OnMarketTrade(cb func(trade Trade))
- func (s *StandardStream) OnOrderUpdate(cb func(order Order))
- func (s *StandardStream) OnStart(cb func())
- func (s *StandardStream) OnTradeUpdate(cb func(trade Trade))
- func (s *StandardStream) Read(ctx context.Context, conn *websocket.Conn, cancel context.CancelFunc)
- func (s *StandardStream) Reconnect()
- func (s *StandardStream) SetConn(ctx context.Context, conn *websocket.Conn) (context.Context, context.CancelFunc)
- func (s *StandardStream) SetDispatcher(dispatcher Dispatcher)
- func (s *StandardStream) SetEndpointCreator(creator EndpointCreator)
- func (s *StandardStream) SetParser(parser Parser)
- func (s *StandardStream) SetPublicOnly()
- func (s *StandardStream) Subscribe(channel Channel, symbol string, options SubscribeOptions)
- type StandardStreamEmitter
- type StandardStreamEventHub
- type StrategyStatus
- type Stream
- type StreamOrderBook
- func (sb *StreamOrderBook) BindStream(stream Stream)
- func (sb *StreamOrderBook) EmitSnapshot(snapshot SliceOrderBook)
- func (sb *StreamOrderBook) EmitUpdate(update SliceOrderBook)
- func (sb *StreamOrderBook) OnSnapshot(cb func(snapshot SliceOrderBook))
- func (sb *StreamOrderBook) OnUpdate(cb func(update SliceOrderBook))
- type Stringer
- type SubmitOrder
- type SubscribeOptions
- type Subscription
- type SyncOrderMap
- func (m *SyncOrderMap) Add(o Order)
- func (m *SyncOrderMap) AnyFilled() (order Order, ok bool)
- func (m *SyncOrderMap) Backup() (orders []SubmitOrder)
- func (m *SyncOrderMap) Canceled() OrderSlice
- func (m *SyncOrderMap) Exists(orderID uint64) (exists bool)
- func (m *SyncOrderMap) Filled() OrderSlice
- func (m *SyncOrderMap) FindByStatus(status OrderStatus) OrderSlice
- func (m *SyncOrderMap) IDs() (ids []uint64)
- func (m *SyncOrderMap) Iterate(it func(id uint64, order Order) bool)
- func (m *SyncOrderMap) Len() int
- func (m *SyncOrderMap) Lookup(f func(o Order) bool) *Order
- func (m *SyncOrderMap) Orders() (slice OrderSlice)
- func (m *SyncOrderMap) Remove(orderID uint64) (exists bool)
- func (m *SyncOrderMap) Update(o Order)
- type Ticker
- type Time
- func (t Time) After(time2 time.Time) bool
- func (t Time) Before(time2 time.Time) bool
- func (t Time) Equal(time2 time.Time) bool
- func (t Time) MarshalJSON() ([]byte, error)
- func (t *Time) Scan(src interface{}) error
- func (t Time) String() string
- func (t Time) Time() time.Time
- func (t Time) Unix() int64
- func (t Time) UnixMilli() int64
- func (t *Time) UnmarshalJSON(data []byte) error
- func (t Time) Value() (driver.Value, error)
- type TimeInForce
- type Timestamp
- type Trade
- func (trade Trade) CsvHeader() []string
- func (trade Trade) CsvRecords() [][]string
- func (trade Trade) Key() TradeKey
- func (trade Trade) Liquidity() (o string)
- func (trade Trade) PlainText() string
- func (trade Trade) PositionChange() fixedpoint.Value
- func (trade Trade) SlackAttachment() slack.Attachment
- func (trade Trade) String() string
- type TradeKey
- type TradeQueryOptions
- type TradeSlice
- type TradeStats
- func (s *TradeStats) Add(profit *Profit)
- func (s *TradeStats) BriefString() string
- func (s *TradeStats) CsvHeader() []string
- func (s *TradeStats) CsvRecords() [][]string
- func (s *TradeStats) Recalculate()
- func (s *TradeStats) SetIntervalProfitCollector(c *IntervalProfitCollector)
- func (s *TradeStats) String() string
- type UpdatableSeries
- type UpdatableSeriesExtend
- type ValueMap
- func (m ValueMap) Add(n ValueMap) ValueMap
- func (m ValueMap) AddScalar(x fixedpoint.Value) ValueMap
- func (m ValueMap) Div(n ValueMap) ValueMap
- func (m ValueMap) DivScalar(x fixedpoint.Value) ValueMap
- func (m ValueMap) Eq(n ValueMap) bool
- func (m ValueMap) Mul(n ValueMap) ValueMap
- func (m ValueMap) MulScalar(x fixedpoint.Value) ValueMap
- func (m ValueMap) Normalize() ValueMap
- func (m ValueMap) Sub(n ValueMap) ValueMap
- func (m ValueMap) SubScalar(x fixedpoint.Value) ValueMap
- func (m ValueMap) Sum() fixedpoint.Value
- type Withdraw
- type WithdrawalOptions
- type ZeroAssetError
Constants ¶
const ( AccountTypeFutures = AccountType("futures") AccountTypeMargin = AccountType("margin") AccountTypeIsolatedMargin = AccountType("isolated_margin") AccountTypeSpot = AccountType("spot") )
const ( DepositPending = DepositStatus("pending") DepositRejected = DepositStatus("rejected") DepositSuccess = DepositStatus("success") DepositCancelled = DepositStatus("canceled") // created but can not withdraw DepositCredited = DepositStatus("credited") )
const ( PositionShort = PositionType("Short") PositionLong = PositionType("Long") PositionClosed = PositionType("Closed") )
const ( Red = Color(false) Black = Color(true) )
const ( RewardAirdrop = RewardType("airdrop") RewardCommission = RewardType("commission") RewardReferralKickback = RewardType("referral_kickback") RewardHolding = RewardType("holding") RewardMining = RewardType("mining") RewardTrading = RewardType("trading") RewardVipRebate = RewardType("vip_rebate") )
const ( SideTypeBuy = SideType("BUY") SideTypeSell = SideType("SELL") SideTypeSelf = SideType("SELF") // SideTypeBoth is only used for the configuration context SideTypeBoth = SideType("BOTH") )
const DateFormat = "2006-01-02"
const DirectionDown = -1
const DirectionNone = 0
const DirectionUp = 1
const NoClientOrderID = "0"
Variables ¶
var AggTradeChannel = Channel("aggTrade")
var BNB = wrapper{accounting.Accounting{Symbol: "BNB ", Precision: 4}}
var BTC = wrapper{accounting.Accounting{Symbol: "BTC ", Precision: 8}}
var BookChannel = Channel("book")
var BookTickerChannel = Channel("bookticker")
var ErrInvalidSideType = errors.New("invalid side type")
var FiatCurrencies = []string{"USDC", "USDT", "USD", "TWD", "EUR", "GBP", "BUSD"}
var Four fixedpoint.Value = fixedpoint.NewFromInt(4)
var Interval12h = Interval("12h")
var Interval15m = Interval("15m")
var Interval1d = Interval("1d")
var Interval1h = Interval("1h")
var Interval1m = Interval("1m")
var Interval1mo = Interval("1mo")
var Interval1ms = Interval("1ms")
var Interval1s = Interval("1s")
var Interval1w = Interval("1w")
var Interval2h = Interval("2h")
var Interval2w = Interval("2w")
var Interval30m = Interval("30m")
var Interval3d = Interval("3d")
var Interval3m = Interval("3m")
var Interval4h = Interval("4h")
var Interval5m = Interval("5m")
var Interval6h = Interval("6h")
var KLineChannel = Channel("kline")
var MarketTradeChannel = Channel("trade")
var QuantityDelta = fixedpoint.MustNewFromString("0.00000000001")
var SupportedExchanges = []ExchangeName{ ExchangeMax, ExchangeBinance, ExchangeOKEx, ExchangeKucoin, }
var SupportedIntervals = map[Interval]int{ Interval1s: 1, Interval1m: 1 * 60, Interval3m: 3 * 60, Interval5m: 5 * 60, Interval15m: 15 * 60, Interval30m: 30 * 60, Interval1h: 60 * 60, Interval2h: 60 * 60 * 2, Interval4h: 60 * 60 * 4, Interval6h: 60 * 60 * 6, Interval12h: 60 * 60 * 12, Interval1d: 60 * 60 * 24, Interval3d: 60 * 60 * 24 * 3, Interval1w: 60 * 60 * 24 * 7, Interval2w: 60 * 60 * 24 * 14, Interval1mo: 60 * 60 * 24 * 30, }
var Two = fixedpoint.NewFromInt(2)
var USD = wrapper{accounting.Accounting{Symbol: "$ ", Precision: 2}}
var USDFiatCurrencies = []string{"USDT", "USDC", "USD", "BUSD"}
Functions ¶
func Array ¶ added in v1.36.0
Extract elements from the Series to a float64 array, following the order of Index(0..limit) if limit is given, will only take the first limit numbers (a.Index[0..limit]) otherwise will operate on all elements
func AutoCorrelation ¶ added in v1.38.0
similar to pandas.Series.autocorr() function.
The method computes the Pearson correlation between Series and shifted itself
func Correlation ¶ added in v1.36.0
similar to pandas.Series.corr() function.
method could either be `types.Pearson`, `types.Spearman` or `types.Kendall`
func Covariance ¶ added in v1.36.0
similar to pandas.Series.cov() function with ddof=0
Compute covariance with Series
func CrossEntropy ¶ added in v1.37.0
CrossEntropy computes the cross-entropy between the two distributions
func Dot ¶ added in v1.30.2
Calculate (a dot b). if limit is given, will only calculate the first limit numbers (a.Index[0..limit]) otherwise will operate on all elements
func Entropy ¶ added in v1.37.0
Entropy computes the Shannon entropy of a distribution or the distance between two distributions. The natural logarithm is used. - sum(v * ln(v))
func ExchangeFooterIcon ¶ added in v1.32.0
func ExchangeFooterIcon(exName ExchangeName) string
func FormatPrice ¶ added in v1.43.0
func FormatPrice(price fixedpoint.Value, tickSize fixedpoint.Value) string
func IsFiatCurrency ¶ added in v1.18.1
func IsUSDFiatCurrency ¶ added in v1.39.0
func LinearRegression ¶ added in v1.38.0
func Mean ¶ added in v1.30.2
Calculate the average value of the series if limit is given, will only calculate the average of first limit numbers (a.Index[0..limit]) otherwise will operate on all elements
func MustParseUnixTimestamp ¶ added in v1.21.0
func NewOrderError ¶ added in v1.25.3
func NextCross ¶ added in v1.30.2
This will make prediction using Linear Regression to get the next cross point Return (offset from latest, crossed value, could cross) offset from latest should always be positive lookback param is to use at most `lookback` points to determine linear regression functions
You may also refer to excel's FORECAST function
func Omega ¶ added in v1.38.0
Determines the Omega ratio of a strategy See https://en.wikipedia.org/wiki/Omega_ratio for more details
@param returns (Series): Series of profit/loss percentage every specific interval @param returnThresholds(float64): threshold for returns filtering @return Omega ratio for give return series and threshold
func Over24Hours ¶ added in v1.40.0
func ParseInterval ¶ added in v1.40.3
func ParseTimeWithFormats ¶ added in v1.40.0
func Reverse ¶ added in v1.36.0
Similar to Array but in reverse order. Useful when you want to cache series' calculated result as float64 array the then reuse the result in multiple places (so that no recalculation will be triggered)
notice that the return type is a Float64Slice, which implements the Series interface
func Sharpe ¶ added in v1.38.0
Sharpe: Calcluates the sharpe ratio of access returns
@param returns (Series): Series of profit/loss percentage every specific interval @param periods (int): Freq. of returns (252/365 for daily, 12 for monthy, 1 for annually) @param annualize (bool): return annualize sharpe? @param smart (bool): return smart sharpe ratio
func SideToColorName ¶
func Skew ¶ added in v1.36.0
similar to pandas.Series.skew() function.
Return unbiased skew over input series
func Sortino ¶ added in v1.39.2
func Sortino(returns Series, riskFreeReturns float64, periods int, annualize bool, smart bool) float64
Sortino: Calcluates the sotino ratio of access returns
ROI_excess E[ROI] - ROI_risk_free
sortino = ---------- = -----------------------
risk sqrt(E[ROI_drawdown^2])
@param returns (Series): Series of profit/loss percentage every specific interval @param riskFreeReturns (float): risk-free return rate of year @param periods (int): Freq. of returns (252/365 for daily, 12 for monthy, 1 for annually) @param annualize (bool): return annualize sortino? @param smart (bool): return smart sharpe ratio
Types ¶
type AbsResult ¶ added in v1.30.2
type AbsResult struct {
// contains filtered or unexported fields
}
type Acc ¶ added in v1.28.0
type Acc = accounting.Accounting
type Account ¶
type Account struct { sync.Mutex `json:"-"` AccountType AccountType `json:"accountType,omitempty"` FuturesInfo *FuturesAccountInfo MarginInfo *MarginAccountInfo IsolatedMarginInfo *IsolatedMarginAccountInfo // Margin related common field // From binance: // Margin Level = Total Asset Value / (Total Borrowed + Total Accrued Interest) // If your margin level drops to 1.3, you will receive a Margin Call, which is a reminder that you should either increase your collateral (by depositing more funds) or reduce your loan (by repaying what you’ve borrowed). // If your margin level drops to 1.1, your assets will be automatically liquidated, meaning that Binance will sell your funds at market price to repay the loan. MarginLevel fixedpoint.Value `json:"marginLevel,omitempty"` MarginTolerance fixedpoint.Value `json:"marginTolerance,omitempty"` BorrowEnabled bool `json:"borrowEnabled,omitempty"` TransferEnabled bool `json:"transferEnabled,omitempty"` // isolated margin related fields // LiquidationPrice is only used when account is in the isolated margin mode MarginRatio fixedpoint.Value `json:"marginRatio,omitempty"` LiquidationPrice fixedpoint.Value `json:"liquidationPrice,omitempty"` LiquidationRate fixedpoint.Value `json:"liquidationRate,omitempty"` MakerFeeRate fixedpoint.Value `json:"makerFeeRate,omitempty"` TakerFeeRate fixedpoint.Value `json:"takerFeeRate,omitempty"` TotalAccountValue fixedpoint.Value `json:"totalAccountValue,omitempty"` CanDeposit bool `json:"canDeposit"` CanTrade bool `json:"canTrade"` CanWithdraw bool `json:"canWithdraw"` // contains filtered or unexported fields }
func NewAccount ¶
func NewAccount() *Account
func (*Account) AddBalance ¶
func (a *Account) AddBalance(currency string, fund fixedpoint.Value)
func (*Account) Balances ¶
func (a *Account) Balances() (d BalanceMap)
Balances lock the balances and returned the copied balances
func (*Account) LockBalance ¶
func (a *Account) LockBalance(currency string, locked fixedpoint.Value) error
func (*Account) UnlockBalance ¶
func (a *Account) UnlockBalance(currency string, unlocked fixedpoint.Value) error
func (*Account) UpdateBalances ¶
func (a *Account) UpdateBalances(balances BalanceMap)
func (*Account) UseLockedBalance ¶
func (a *Account) UseLockedBalance(currency string, fund fixedpoint.Value) error
type AccountType ¶ added in v1.18.5
type AccountType string
type AddSeriesResult ¶ added in v1.30.2
type AddSeriesResult struct {
// contains filtered or unexported fields
}
func (*AddSeriesResult) Index ¶ added in v1.30.2
func (a *AddSeriesResult) Index(i int) float64
func (*AddSeriesResult) Last ¶ added in v1.30.2
func (a *AddSeriesResult) Last() float64
func (*AddSeriesResult) Length ¶ added in v1.30.2
func (a *AddSeriesResult) Length() int
type Asset ¶ added in v1.11.0
type Asset struct { Currency string `json:"currency" db:"currency"` Total fixedpoint.Value `json:"total" db:"total"` NetAsset fixedpoint.Value `json:"netAsset" db:"net_asset"` Interest fixedpoint.Value `json:"interest" db:"interest"` // InUSD is net asset in USD InUSD fixedpoint.Value `json:"inUSD" db:"net_asset_in_usd"` // InBTC is net asset in BTC InBTC fixedpoint.Value `json:"inBTC" db:"net_asset_in_btc"` Time time.Time `json:"time" db:"time"` Locked fixedpoint.Value `json:"lock" db:"lock" ` Available fixedpoint.Value `json:"available" db:"available"` Borrowed fixedpoint.Value `json:"borrowed" db:"borrowed"` PriceInUSD fixedpoint.Value `json:"priceInUSD" db:"price_in_usd"` }
type AssetMap ¶ added in v1.11.0
func (AssetMap) InUSD ¶ added in v1.33.0
func (m AssetMap) InUSD() (total fixedpoint.Value)
func (AssetMap) SlackAttachment ¶ added in v1.18.0
func (m AssetMap) SlackAttachment() slack.Attachment
type BacktestStream ¶ added in v1.35.0
type BacktestStream struct {
StandardStreamEmitter
}
func (*BacktestStream) Close ¶ added in v1.35.0
func (s *BacktestStream) Close() error
type Balance ¶
type Balance struct { Currency string `json:"currency"` Available fixedpoint.Value `json:"available"` Locked fixedpoint.Value `json:"locked,omitempty"` // margin related fields Borrowed fixedpoint.Value `json:"borrowed,omitempty"` Interest fixedpoint.Value `json:"interest,omitempty"` // NetAsset = (Available + Locked) - Borrowed - Interest NetAsset fixedpoint.Value `json:"net,omitempty"` }
func (Balance) Debt ¶ added in v1.38.0
func (b Balance) Debt() fixedpoint.Value
func (Balance) Net ¶ added in v1.32.0
func (b Balance) Net() fixedpoint.Value
Net returns the net asset value (total - debt)
func (Balance) Total ¶ added in v1.11.1
func (b Balance) Total() fixedpoint.Value
func (Balance) ValueString ¶ added in v1.33.0
type BalanceMap ¶
func (BalanceMap) Add ¶ added in v1.32.0
func (m BalanceMap) Add(bm BalanceMap) BalanceMap
func (BalanceMap) Assets ¶ added in v1.11.0
func (m BalanceMap) Assets(prices PriceMap, priceTime time.Time) AssetMap
Assets converts balances into assets with the given prices
func (BalanceMap) Copy ¶ added in v1.18.0
func (m BalanceMap) Copy() (d BalanceMap)
func (BalanceMap) Currencies ¶ added in v1.32.0
func (m BalanceMap) Currencies() (currencies []string)
func (BalanceMap) Debts ¶ added in v1.33.0
func (m BalanceMap) Debts() BalanceMap
func (BalanceMap) Print ¶
func (m BalanceMap) Print()
func (BalanceMap) SlackAttachment ¶ added in v1.33.0
func (m BalanceMap) SlackAttachment() slack.Attachment
func (BalanceMap) String ¶ added in v1.2.0
func (m BalanceMap) String() string
type BalanceSnapshot ¶ added in v1.33.0
type BalanceSnapshot struct { Balances BalanceMap `json:"balances"` Session string `json:"session"` Time time.Time `json:"time"` }
func (BalanceSnapshot) CsvHeader ¶ added in v1.33.0
func (m BalanceSnapshot) CsvHeader() []string
func (BalanceSnapshot) CsvRecords ¶ added in v1.33.0
func (m BalanceSnapshot) CsvRecords() [][]string
type BollingerSetting ¶ added in v1.36.0
type BollingerSetting struct { IntervalWindow BandWidth float64 `json:"bandWidth"` }
BollingerSetting contains the bollinger indicator setting propers Interval, Window and BandWidth
type BookTicker ¶ added in v1.21.0
type BookTicker struct { //Time time.Time Symbol string Buy fixedpoint.Value // `buy` from Max, `bidPrice` from binance BuySize fixedpoint.Value Sell fixedpoint.Value // `sell` from Max, `askPrice` from binance SellSize fixedpoint.Value }
BookTicker time exists in ftx, not in binance last exists in ftx, not in binance
func (BookTicker) String ¶ added in v1.21.0
func (b BookTicker) String() string
type BoolSeries ¶ added in v1.30.2
The interface maps to pinescript basic type `series` for bool type Access the internal historical data from the latest to the oldest Index(0) always maps to Last()
func CrossOver ¶ added in v1.30.2
func CrossOver(a Series, b Series) BoolSeries
a series cross above b series. If in current KLine, a is higher than b, and in previous KLine, a is lower than b, then return true. Otherwise return false. If accessing index <= length, will always return false
func CrossUnder ¶ added in v1.30.2
func CrossUnder(a Series, b Series) BoolSeries
a series cross under b series. If in current KLine, a is lower than b, and in previous KLine, a is higher than b, then return true. Otherwise return false. If accessing index <= length, will always return false
type CancelReplaceModeType ¶ added in v1.43.0
type CancelReplaceModeType string
var ( StopOnFailure CancelReplaceModeType = "STOP_ON_FAILURE" AllowFailure CancelReplaceModeType = "ALLOW_FAILURE" )
type Canvas ¶ added in v1.38.0
type Canvas struct { chart.Chart Interval Interval }
type ChangeResult ¶ added in v1.30.2
type ChangeResult struct {
// contains filtered or unexported fields
}
func (*ChangeResult) Index ¶ added in v1.30.2
func (c *ChangeResult) Index(i int) float64
func (*ChangeResult) Last ¶ added in v1.30.2
func (c *ChangeResult) Last() float64
func (*ChangeResult) Length ¶ added in v1.30.2
func (c *ChangeResult) Length() int
type CrossResult ¶ added in v1.30.2
type CrossResult struct {
// contains filtered or unexported fields
}
The result structure that maps to the crossing result of `CrossOver` and `CrossUnder` Accessible through BoolSeries interface
func (*CrossResult) Index ¶ added in v1.30.2
func (c *CrossResult) Index(i int) bool
func (*CrossResult) Last ¶ added in v1.30.2
func (c *CrossResult) Last() bool
func (*CrossResult) Length ¶ added in v1.30.2
func (c *CrossResult) Length() int
type CsvFormatter ¶ added in v1.33.0
CsvFormatter is an interface used for dumping object into csv file
type CustomIntervalProvider ¶ added in v1.21.0
type Deposit ¶
type Deposit struct { GID int64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` Time Time `json:"time" db:"time"` Amount fixedpoint.Value `json:"amount" db:"amount"` Asset string `json:"asset" db:"asset"` Address string `json:"address" db:"address"` AddressTag string `json:"addressTag"` TransactionID string `json:"transactionID" db:"txn_id"` Status DepositStatus `json:"status"` }
func (Deposit) EffectiveTime ¶
type DepositStatus ¶
type DepositStatus string
type Dispatcher ¶ added in v1.23.0
type Dispatcher func(e interface{})
type DivSeriesResult ¶ added in v1.30.2
type DivSeriesResult struct {
// contains filtered or unexported fields
}
func (*DivSeriesResult) Index ¶ added in v1.30.2
func (a *DivSeriesResult) Index(i int) float64
func (*DivSeriesResult) Last ¶ added in v1.30.2
func (a *DivSeriesResult) Last() float64
func (*DivSeriesResult) Length ¶ added in v1.30.2
func (a *DivSeriesResult) Length() int
type Duration ¶ added in v1.3.1
func (*Duration) UnmarshalJSON ¶ added in v1.3.1
type EndpointCreator ¶ added in v1.23.0
type Exchange ¶
type Exchange interface { Name() ExchangeName PlatformFeeCurrency() string ExchangeMarketDataService ExchangeTradeService }
type ExchangeAmountFeeProtect ¶ added in v1.39.0
type ExchangeAmountFeeProtect interface {
SetModifyOrderAmountForFee(ExchangeFee)
}
type ExchangeDefaultFeeRates ¶ added in v1.33.0
type ExchangeDefaultFeeRates interface {
DefaultFeeRates() ExchangeFee
}
type ExchangeFee ¶ added in v1.21.0
type ExchangeFee struct { MakerFeeRate fixedpoint.Value TakerFeeRate fixedpoint.Value }
type ExchangeMarketDataService ¶ added in v1.14.0
type ExchangeMarketDataService interface { NewStream() Stream QueryMarkets(ctx context.Context) (MarketMap, error) QueryTicker(ctx context.Context, symbol string) (*Ticker, error) QueryTickers(ctx context.Context, symbol ...string) (map[string]Ticker, error) QueryKLines(ctx context.Context, symbol string, interval Interval, options KLineQueryOptions) ([]KLine, error) }
type ExchangeName ¶
type ExchangeName string
const ( ExchangeMax ExchangeName = "max" ExchangeBinance ExchangeName = "binance" ExchangeOKEx ExchangeName = "okex" ExchangeKucoin ExchangeName = "kucoin" ExchangeBacktest ExchangeName = "backtest" )
func ValidExchangeName ¶
func ValidExchangeName(a string) (ExchangeName, error)
func (ExchangeName) String ¶
func (n ExchangeName) String() string
func (*ExchangeName) UnmarshalJSON ¶ added in v1.11.1
func (n *ExchangeName) UnmarshalJSON(data []byte) error
type ExchangeOrderQueryService ¶ added in v1.28.0
type ExchangeOrderQueryService interface { QueryOrder(ctx context.Context, q OrderQuery) (*Order, error) QueryOrderTrades(ctx context.Context, q OrderQuery) ([]Trade, error) }
ExchangeOrderQueryService provides an interface for querying the order status via order ID or client order ID
type ExchangeRewardService ¶ added in v1.13.0
type ExchangeTradeHistoryService ¶ added in v1.17.0
type ExchangeTradeService ¶ added in v1.17.0
type ExchangeTradeService interface { QueryAccount(ctx context.Context) (*Account, error) QueryAccountBalances(ctx context.Context) (BalanceMap, error) SubmitOrder(ctx context.Context, order SubmitOrder) (createdOrder *Order, err error) QueryOpenOrders(ctx context.Context, symbol string) (orders []Order, err error) CancelOrders(ctx context.Context, orders ...Order) error }
type ExchangeTransferService ¶ added in v1.14.0
type ExchangeWithdrawalService ¶ added in v1.16.0
type ExchangeWithdrawalService interface {
Withdraw(ctx context.Context, asset string, amount fixedpoint.Value, address string, options *WithdrawalOptions) error
}
type FilterResult ¶ added in v1.42.0
type FilterResult struct {
// contains filtered or unexported fields
}
func (*FilterResult) Index ¶ added in v1.42.0
func (f *FilterResult) Index(j int) float64
func (*FilterResult) Last ¶ added in v1.42.0
func (f *FilterResult) Last() float64
func (*FilterResult) Length ¶ added in v1.42.0
func (f *FilterResult) Length() int
type Float64Indicator ¶ added in v1.17.1
type Float64Indicator interface {
Last() float64
}
Float64Indicator is the indicators (SMA and EWMA) that we want to use are returning float64 data.
type FundingRate ¶ added in v1.21.0
type FuturesAccountInfo ¶ added in v1.21.0
type FuturesAccountInfo struct { // Futures fields Assets FuturesAssetMap `json:"assets"` Positions FuturesPositionMap `json:"positions"` TotalInitialMargin fixedpoint.Value `json:"totalInitialMargin"` TotalMaintMargin fixedpoint.Value `json:"totalMaintMargin"` TotalMarginBalance fixedpoint.Value `json:"totalMarginBalance"` TotalOpenOrderInitialMargin fixedpoint.Value `json:"totalOpenOrderInitialMargin"` TotalPositionInitialMargin fixedpoint.Value `json:"totalPositionInitialMargin"` TotalUnrealizedProfit fixedpoint.Value `json:"totalUnrealizedProfit"` TotalWalletBalance fixedpoint.Value `json:"totalWalletBalance"` UpdateTime int64 `json:"updateTime"` }
type FuturesAssetMap ¶ added in v1.26.2
type FuturesAssetMap map[string]FuturesUserAsset
type FuturesExchange ¶ added in v1.18.0
type FuturesExchange interface { UseFutures() UseIsolatedFutures(symbol string) GetFuturesSettings() FuturesSettings }
type FuturesPosition ¶ added in v1.22.0
type FuturesPosition struct { Symbol string `json:"symbol"` BaseCurrency string `json:"baseCurrency"` QuoteCurrency string `json:"quoteCurrency"` Market Market `json:"market"` Base fixedpoint.Value `json:"base"` Quote fixedpoint.Value `json:"quote"` AverageCost fixedpoint.Value `json:"averageCost"` // ApproximateAverageCost adds the computed fee in quote in the average cost // This is used for calculating net profit ApproximateAverageCost fixedpoint.Value `json:"approximateAverageCost"` FeeRate *ExchangeFee `json:"feeRate,omitempty"` ExchangeFeeRates map[ExchangeName]ExchangeFee `json:"exchangeFeeRates"` // Futures data fields Isolated bool `json:"isolated"` UpdateTime int64 `json:"updateTime"` PositionRisk *PositionRisk }
type FuturesPositionMap ¶ added in v1.22.0
type FuturesPositionMap map[string]FuturesPosition
type FuturesSettings ¶ added in v1.18.0
func (FuturesSettings) GetFuturesSettings ¶ added in v1.18.0
func (s FuturesSettings) GetFuturesSettings() FuturesSettings
func (*FuturesSettings) UseFutures ¶ added in v1.18.0
func (s *FuturesSettings) UseFutures()
func (*FuturesSettings) UseIsolatedFutures ¶ added in v1.18.5
func (s *FuturesSettings) UseIsolatedFutures(symbol string)
type FuturesUserAsset ¶ added in v1.21.0
type FuturesUserAsset struct { Asset string `json:"asset"` InitialMargin fixedpoint.Value `json:"initialMargin"` MaintMargin fixedpoint.Value `json:"maintMargin"` MarginBalance fixedpoint.Value `json:"marginBalance"` MaxWithdrawAmount fixedpoint.Value `json:"maxWithdrawAmount"` OpenOrderInitialMargin fixedpoint.Value `json:"openOrderInitialMargin"` PositionInitialMargin fixedpoint.Value `json:"positionInitialMargin"` UnrealizedProfit fixedpoint.Value `json:"unrealizedProfit"` WalletBalance fixedpoint.Value `json:"walletBalance"` }
FuturesUserAsset define cross/isolated futures account asset
type HeikinAshiStream ¶ added in v1.35.0
type HeikinAshiStream struct { StandardStreamEmitter LastOrigin map[string]map[Interval]*KLine // contains filtered or unexported fields }
func (*HeikinAshiStream) EmitKLine ¶ added in v1.35.0
func (s *HeikinAshiStream) EmitKLine(kline KLine)
No writeback to lastAshi
func (*HeikinAshiStream) EmitKLineClosed ¶ added in v1.35.0
func (s *HeikinAshiStream) EmitKLineClosed(kline KLine)
type InstanceIDProvider ¶ added in v1.40.0
type InstanceIDProvider interface {
InstanceID() string
}
type Interval ¶
type Interval string
func (Interval) Milliseconds ¶ added in v1.43.0
Milliseconds is specially handled, for better precision for ms level interval, calling Seconds and Minutes directly might trigger panic error
func (*Interval) UnmarshalJSON ¶
type IntervalProfitCollector ¶ added in v1.38.0
type IntervalProfitCollector struct { Interval Interval `json:"interval"` Profits *floats.Slice `json:"profits"` Timestamp *floats.Slice `json:"timestamp"` // contains filtered or unexported fields }
func NewIntervalProfitCollector ¶ added in v1.38.0
func NewIntervalProfitCollector(i Interval, startTime time.Time) *IntervalProfitCollector
func (*IntervalProfitCollector) GetNonProfitableIntervals ¶ added in v1.39.0
func (s *IntervalProfitCollector) GetNonProfitableIntervals() (result []ProfitReport)
Get all none-profitable intervals
func (*IntervalProfitCollector) GetNumOfNonProfitableIntervals ¶ added in v1.38.0
func (s *IntervalProfitCollector) GetNumOfNonProfitableIntervals() (nonprofit int)
Get number of non-profitable traded intervals (no trade within the interval or pnl = 0 will be also included here)
func (*IntervalProfitCollector) GetNumOfProfitableIntervals ¶ added in v1.38.0
func (s *IntervalProfitCollector) GetNumOfProfitableIntervals() (profit int)
Get number of profitable traded intervals
func (*IntervalProfitCollector) GetOmega ¶ added in v1.38.0
func (s *IntervalProfitCollector) GetOmega() float64
func (*IntervalProfitCollector) GetProfitableIntervals ¶ added in v1.39.0
func (s *IntervalProfitCollector) GetProfitableIntervals() (result []ProfitReport)
Get all profitable intervals
func (*IntervalProfitCollector) GetSharpe ¶ added in v1.38.0
func (s *IntervalProfitCollector) GetSharpe() float64
Get sharpe value with the interval of profit collected. no smart sharpe ON for the calculated result
func (*IntervalProfitCollector) GetSortino ¶ added in v1.39.2
func (s *IntervalProfitCollector) GetSortino() float64
Get sortino value with the interval of profit collected. No risk-free return rate and smart sortino OFF for the calculated result.
func (IntervalProfitCollector) MarshalYAML ¶ added in v1.38.0
func (s IntervalProfitCollector) MarshalYAML() (interface{}, error)
func (*IntervalProfitCollector) Update ¶ added in v1.38.0
func (s *IntervalProfitCollector) Update(profit *Profit)
Update the collector by every traded profit
type IntervalSlice ¶
type IntervalSlice []Interval
func (IntervalSlice) StringSlice ¶
func (s IntervalSlice) StringSlice() (slice []string)
type IntervalWindow ¶
type IntervalWindow struct { // The interval of kline Interval Interval `json:"interval"` // The windows size of the indicator (for example, EWMA and SMA) Window int `json:"window"` // RightWindow is used by the pivot indicator RightWindow int `json:"rightWindow"` }
IntervalWindow is used by the indicators
func (IntervalWindow) String ¶ added in v1.4.0
func (iw IntervalWindow) String() string
type IntervalWindowBandWidth ¶ added in v1.31.0
type IntervalWindowBandWidth struct { IntervalWindow BandWidth float64 `json:"bandWidth"` }
type IsolatedMarginAccount ¶ added in v1.13.0
type IsolatedMarginAccount struct { TotalAssetOfBTC fixedpoint.Value `json:"totalAssetOfBtc"` TotalLiabilityOfBTC fixedpoint.Value `json:"totalLiabilityOfBtc"` TotalNetAssetOfBTC fixedpoint.Value `json:"totalNetAssetOfBtc"` Assets IsolatedMarginAssetMap `json:"assets"` }
IsolatedMarginAccount defines isolated user assets of margin account
type IsolatedMarginAccountInfo ¶ added in v1.26.2
type IsolatedMarginAccountInfo struct { TotalAssetOfBTC fixedpoint.Value `json:"totalAssetOfBtc"` TotalLiabilityOfBTC fixedpoint.Value `json:"totalLiabilityOfBtc"` TotalNetAssetOfBTC fixedpoint.Value `json:"totalNetAssetOfBtc"` Assets IsolatedMarginAssetMap `json:"userAssets"` }
type IsolatedMarginAsset ¶ added in v1.13.0
type IsolatedMarginAsset struct { Symbol string `json:"symbol"` QuoteAsset IsolatedUserAsset `json:"quoteAsset"` BaseAsset IsolatedUserAsset `json:"baseAsset"` IsolatedCreated bool `json:"isolatedCreated"` MarginLevel fixedpoint.Value `json:"marginLevel"` MarginLevelStatus string `json:"marginLevelStatus"` MarginRatio fixedpoint.Value `json:"marginRatio"` IndexPrice fixedpoint.Value `json:"indexPrice"` LiquidatePrice fixedpoint.Value `json:"liquidatePrice"` LiquidateRate fixedpoint.Value `json:"liquidateRate"` TradeEnabled bool `json:"tradeEnabled"` }
IsolatedMarginAsset defines isolated margin asset information, like margin level, liquidation price... etc
type IsolatedMarginAssetMap ¶ added in v1.26.2
type IsolatedMarginAssetMap map[string]IsolatedMarginAsset
type IsolatedUserAsset ¶ added in v1.13.0
type IsolatedUserAsset struct { Asset string `json:"asset"` Borrowed fixedpoint.Value `json:"borrowed"` Free fixedpoint.Value `json:"free"` Interest fixedpoint.Value `json:"interest"` Locked fixedpoint.Value `json:"locked"` NetAsset fixedpoint.Value `json:"netAsset"` NetAssetOfBtc fixedpoint.Value `json:"netAssetOfBtc"` BorrowEnabled bool `json:"borrowEnabled"` RepayEnabled bool `json:"repayEnabled"` TotalAsset fixedpoint.Value `json:"totalAsset"` }
IsolatedUserAsset defines isolated user assets of the margin account
type JsonArr ¶ added in v1.40.0
type JsonArr []JsonStruct
type JsonStruct ¶ added in v1.40.0
type KLine ¶
type KLine struct { GID uint64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` Symbol string `json:"symbol" db:"symbol"` StartTime Time `json:"startTime" db:"start_time"` EndTime Time `json:"endTime" db:"end_time"` Interval Interval `json:"interval" db:"interval"` Open fixedpoint.Value `json:"open" db:"open"` Close fixedpoint.Value `json:"close" db:"close"` High fixedpoint.Value `json:"high" db:"high"` Low fixedpoint.Value `json:"low" db:"low"` Volume fixedpoint.Value `json:"volume" db:"volume"` QuoteVolume fixedpoint.Value `json:"quoteVolume" db:"quote_volume"` TakerBuyBaseAssetVolume fixedpoint.Value `json:"takerBuyBaseAssetVolume" db:"taker_buy_base_volume"` TakerBuyQuoteAssetVolume fixedpoint.Value `json:"takerBuyQuoteAssetVolume" db:"taker_buy_quote_volume"` LastTradeID uint64 `json:"lastTradeID" db:"last_trade_id"` NumberOfTrades uint64 `json:"numberOfTrades" db:"num_trades"` Closed bool `json:"closed" db:"closed"` }
KLine uses binance's kline as the standard structure
func SortKLinesAscending ¶ added in v1.33.0
func (*KLine) BounceDown ¶
red candle with open and close near low price
func (*KLine) GetAmplification ¶ added in v1.26.1
func (k *KLine) GetAmplification() fixedpoint.Value
func (*KLine) GetBody ¶
func (k *KLine) GetBody() fixedpoint.Value
GetBody returns the height of the candle real body
func (*KLine) GetChange ¶
func (k *KLine) GetChange() fixedpoint.Value
GetChange returns Close price - Open price.
func (*KLine) GetClose ¶
func (k *KLine) GetClose() fixedpoint.Value
func (*KLine) GetEndTime ¶
func (*KLine) GetHigh ¶
func (k *KLine) GetHigh() fixedpoint.Value
func (*KLine) GetInterval ¶
func (*KLine) GetLow ¶
func (k *KLine) GetLow() fixedpoint.Value
func (*KLine) GetLowerShadowHeight ¶
func (k *KLine) GetLowerShadowHeight() fixedpoint.Value
func (*KLine) GetLowerShadowRatio ¶
func (k *KLine) GetLowerShadowRatio() fixedpoint.Value
func (*KLine) GetMaxChange ¶
func (k *KLine) GetMaxChange() fixedpoint.Value
func (*KLine) GetOpen ¶
func (k *KLine) GetOpen() fixedpoint.Value
func (*KLine) GetStartTime ¶
func (*KLine) GetThickness ¶
func (k *KLine) GetThickness() fixedpoint.Value
GetThickness returns the thickness of the kline. 1 => thick, 0.1 => thin
func (*KLine) GetUpperShadowHeight ¶
func (k *KLine) GetUpperShadowHeight() fixedpoint.Value
func (*KLine) GetUpperShadowRatio ¶
func (k *KLine) GetUpperShadowRatio() fixedpoint.Value
func (*KLine) Mid ¶
func (k *KLine) Mid() fixedpoint.Value
func (*KLine) SlackAttachment ¶
func (k *KLine) SlackAttachment() slack.Attachment
type KLineCallback ¶
type KLineCallback func(k KLine)
func KLineWith ¶ added in v1.36.0
func KLineWith(symbol string, interval Interval, callback KLineCallback) KLineCallback
type KLineOrWindow ¶
type KLineOrWindow interface { GetInterval() string Direction() Direction GetChange() fixedpoint.Value GetMaxChange() fixedpoint.Value GetThickness() fixedpoint.Value Mid() fixedpoint.Value GetOpen() fixedpoint.Value GetClose() fixedpoint.Value GetHigh() fixedpoint.Value GetLow() fixedpoint.Value BounceUp() bool BounceDown() bool GetUpperShadowRatio() fixedpoint.Value GetLowerShadowRatio() fixedpoint.Value SlackAttachment() slack.Attachment }
type KLineQueryOptions ¶
type KLineSeries ¶ added in v1.30.2
type KLineSeries struct {
// contains filtered or unexported fields
}
func (*KLineSeries) Index ¶ added in v1.30.2
func (k *KLineSeries) Index(i int) float64
func (*KLineSeries) Last ¶ added in v1.30.2
func (k *KLineSeries) Last() float64
func (*KLineSeries) Length ¶ added in v1.30.2
func (k *KLineSeries) Length() int
type KLineWindow ¶
type KLineWindow []KLine
func (*KLineWindow) Add ¶
func (k *KLineWindow) Add(line KLine)
func (KLineWindow) AllDrop ¶
func (k KLineWindow) AllDrop() bool
func (KLineWindow) AllRise ¶
func (k KLineWindow) AllRise() bool
func (KLineWindow) BounceDown ¶
func (k KLineWindow) BounceDown() bool
BounceDown returns true red candle with open and close near low price
func (KLineWindow) BounceUp ¶
func (k KLineWindow) BounceUp() bool
BounceUp returns true if it's green candle with open and close near high price
func (*KLineWindow) Close ¶ added in v1.30.2
func (k *KLineWindow) Close() Series
func (KLineWindow) Color ¶
func (k KLineWindow) Color() string
func (KLineWindow) First ¶
func (k KLineWindow) First() KLine
func (KLineWindow) GetAmplification ¶ added in v1.26.1
func (k KLineWindow) GetAmplification() fixedpoint.Value
func (KLineWindow) GetBody ¶
func (k KLineWindow) GetBody() fixedpoint.Value
func (KLineWindow) GetChange ¶
func (k KLineWindow) GetChange() fixedpoint.Value
func (KLineWindow) GetClose ¶
func (k KLineWindow) GetClose() fixedpoint.Value
func (KLineWindow) GetHigh ¶
func (k KLineWindow) GetHigh() fixedpoint.Value
func (KLineWindow) GetInterval ¶
func (k KLineWindow) GetInterval() Interval
func (KLineWindow) GetLow ¶
func (k KLineWindow) GetLow() fixedpoint.Value
func (KLineWindow) GetLowerShadowHeight ¶
func (k KLineWindow) GetLowerShadowHeight() fixedpoint.Value
func (KLineWindow) GetLowerShadowRatio ¶
func (k KLineWindow) GetLowerShadowRatio() fixedpoint.Value
func (KLineWindow) GetMaxChange ¶
func (k KLineWindow) GetMaxChange() fixedpoint.Value
func (KLineWindow) GetOpen ¶
func (k KLineWindow) GetOpen() fixedpoint.Value
func (KLineWindow) GetThickness ¶
func (k KLineWindow) GetThickness() fixedpoint.Value
func (KLineWindow) GetTrend ¶
func (k KLineWindow) GetTrend() int
func (KLineWindow) GetUpperShadowHeight ¶
func (k KLineWindow) GetUpperShadowHeight() fixedpoint.Value
func (KLineWindow) GetUpperShadowRatio ¶
func (k KLineWindow) GetUpperShadowRatio() fixedpoint.Value
func (*KLineWindow) High ¶ added in v1.30.2
func (k *KLineWindow) High() Series
func (KLineWindow) Last ¶
func (k KLineWindow) Last() KLine
func (KLineWindow) Len ¶
func (k KLineWindow) Len() int
func (*KLineWindow) Low ¶ added in v1.30.2
func (k *KLineWindow) Low() Series
func (*KLineWindow) Open ¶ added in v1.30.2
func (k *KLineWindow) Open() Series
func (KLineWindow) ReduceClose ¶
func (k KLineWindow) ReduceClose() fixedpoint.Value
ReduceClose reduces the closed prices
func (KLineWindow) SlackAttachment ¶
func (k KLineWindow) SlackAttachment() slack.Attachment
func (KLineWindow) Tail ¶
func (k KLineWindow) Tail(size int) KLineWindow
func (KLineWindow) Take ¶
func (k KLineWindow) Take(size int) KLineWindow
func (*KLineWindow) Truncate ¶
func (k *KLineWindow) Truncate(size int)
Truncate removes the old klines from the window
func (*KLineWindow) Volume ¶ added in v1.30.2
func (k *KLineWindow) Volume() Series
type KValueType ¶ added in v1.30.2
type KValueType int
type LogisticRegressionModel ¶ added in v1.37.0
func LogisticRegression ¶ added in v1.37.0
func LogisticRegression(x []Series, y Series, lookback, iterations int, learningRate float64) *LogisticRegressionModel
func (*LogisticRegressionModel) Predict ¶ added in v1.37.0
func (l *LogisticRegressionModel) Predict(x []float64) float64
type LooseFormatTime ¶ added in v1.27.0
LooseFormatTime parses date time string with a wide range of formats.
func ParseLooseFormatTime ¶ added in v1.36.0
func ParseLooseFormatTime(s string) (LooseFormatTime, error)
func (LooseFormatTime) MarshalJSON ¶ added in v1.33.0
func (t LooseFormatTime) MarshalJSON() ([]byte, error)
func (LooseFormatTime) Time ¶ added in v1.27.0
func (t LooseFormatTime) Time() time.Time
func (*LooseFormatTime) UnmarshalJSON ¶ added in v1.27.0
func (t *LooseFormatTime) UnmarshalJSON(data []byte) error
func (*LooseFormatTime) UnmarshalYAML ¶ added in v1.27.0
func (t *LooseFormatTime) UnmarshalYAML(unmarshal func(interface{}) error) error
type MarginAccount ¶ added in v1.13.0
type MarginAccount struct { BorrowEnabled bool `json:"borrowEnabled"` MarginLevel fixedpoint.Value `json:"marginLevel"` TotalAssetOfBTC fixedpoint.Value `json:"totalAssetOfBtc"` TotalLiabilityOfBTC fixedpoint.Value `json:"totalLiabilityOfBtc"` TotalNetAssetOfBTC fixedpoint.Value `json:"totalNetAssetOfBtc"` TradeEnabled bool `json:"tradeEnabled"` TransferEnabled bool `json:"transferEnabled"` UserAssets []MarginUserAsset `json:"userAssets"` }
MarginAccount is for the cross margin account
type MarginAccountInfo ¶ added in v1.26.2
type MarginAccountInfo struct { // Margin fields BorrowEnabled bool `json:"borrowEnabled"` MarginLevel fixedpoint.Value `json:"marginLevel"` TotalAssetOfBTC fixedpoint.Value `json:"totalAssetOfBtc"` TotalLiabilityOfBTC fixedpoint.Value `json:"totalLiabilityOfBtc"` TotalNetAssetOfBTC fixedpoint.Value `json:"totalNetAssetOfBtc"` TradeEnabled bool `json:"tradeEnabled"` TransferEnabled bool `json:"transferEnabled"` Assets MarginAssetMap `json:"userAssets"` }
type MarginAssetMap ¶ added in v1.26.2
type MarginAssetMap map[string]MarginUserAsset
type MarginBorrowRepayService ¶ added in v1.33.0
type MarginBorrowRepayService interface { RepayMarginAsset(ctx context.Context, asset string, amount fixedpoint.Value) error BorrowMarginAsset(ctx context.Context, asset string, amount fixedpoint.Value) error QueryMarginAssetMaxBorrowable(ctx context.Context, asset string) (amount fixedpoint.Value, err error) }
MarginBorrowRepayService provides repay and borrow actions of an crypto exchange
type MarginExchange ¶ added in v1.8.0
type MarginExchange interface { UseMargin() UseIsolatedMargin(symbol string) GetMarginSettings() MarginSettings }
type MarginHistory ¶ added in v1.33.0
type MarginHistory interface { QueryLoanHistory(ctx context.Context, asset string, startTime, endTime *time.Time) ([]MarginLoan, error) QueryRepayHistory(ctx context.Context, asset string, startTime, endTime *time.Time) ([]MarginRepay, error) QueryLiquidationHistory(ctx context.Context, startTime, endTime *time.Time) ([]MarginLiquidation, error) QueryInterestHistory(ctx context.Context, asset string, startTime, endTime *time.Time) ([]MarginInterest, error) }
MarginHistory provides the service of querying loan history and repay history
type MarginInterest ¶ added in v1.33.0
type MarginInterest struct { GID uint64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` Asset string `json:"asset" db:"asset"` Principle fixedpoint.Value `json:"principle" db:"principle"` Interest fixedpoint.Value `json:"interest" db:"interest"` InterestRate fixedpoint.Value `json:"interestRate" db:"interest_rate"` IsolatedSymbol string `json:"isolatedSymbol" db:"isolated_symbol"` Time Time `json:"time" db:"time"` }
type MarginLiquidation ¶ added in v1.33.0
type MarginLiquidation struct { GID uint64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` AveragePrice fixedpoint.Value `json:"averagePrice" db:"average_price"` ExecutedQuantity fixedpoint.Value `json:"executedQuantity" db:"executed_quantity"` OrderID uint64 `json:"orderID" db:"order_id"` Price fixedpoint.Value `json:"price" db:"price"` Quantity fixedpoint.Value `json:"quantity" db:"quantity"` Side SideType `json:"side" db:"side"` Symbol string `json:"symbol" db:"symbol"` TimeInForce TimeInForce `json:"timeInForce" db:"time_in_force"` IsIsolated bool `json:"isIsolated" db:"is_isolated"` UpdatedTime Time `json:"updatedTime" db:"time"` }
type MarginLoan ¶ added in v1.33.0
type MarginLoan struct { GID uint64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` TransactionID uint64 `json:"transactionID" db:"transaction_id"` Asset string `json:"asset" db:"asset"` Principle fixedpoint.Value `json:"principle" db:"principle"` Time Time `json:"time" db:"time"` IsolatedSymbol string `json:"isolatedSymbol" db:"isolated_symbol"` }
type MarginOrderSideEffectType ¶ added in v1.8.0
type MarginOrderSideEffectType string
MarginOrderSideEffectType define side effect type for orders
var ( SideEffectTypeNoSideEffect MarginOrderSideEffectType = "NO_SIDE_EFFECT" SideEffectTypeMarginBuy MarginOrderSideEffectType = "MARGIN_BUY" SideEffectTypeAutoRepay MarginOrderSideEffectType = "AUTO_REPAY" )
func (*MarginOrderSideEffectType) UnmarshalJSON ¶ added in v1.11.0
func (t *MarginOrderSideEffectType) UnmarshalJSON(data []byte) error
type MarginRepay ¶ added in v1.33.0
type MarginRepay struct { GID uint64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` TransactionID uint64 `json:"transactionID" db:"transaction_id"` Asset string `json:"asset" db:"asset"` Principle fixedpoint.Value `json:"principle" db:"principle"` Time Time `json:"time" db:"time"` IsolatedSymbol string `json:"isolatedSymbol" db:"isolated_symbol"` }
type MarginSettings ¶ added in v1.8.0
func (MarginSettings) GetMarginSettings ¶ added in v1.8.0
func (e MarginSettings) GetMarginSettings() MarginSettings
func (*MarginSettings) UseIsolatedMargin ¶ added in v1.8.0
func (e *MarginSettings) UseIsolatedMargin(symbol string)
func (*MarginSettings) UseMargin ¶ added in v1.8.0
func (e *MarginSettings) UseMargin()
type MarginUserAsset ¶ added in v1.13.0
type MarginUserAsset struct { Asset string `json:"asset"` Borrowed fixedpoint.Value `json:"borrowed"` Free fixedpoint.Value `json:"free"` Interest fixedpoint.Value `json:"interest"` Locked fixedpoint.Value `json:"locked"` NetAsset fixedpoint.Value `json:"netAsset"` }
MarginUserAsset define user assets of margin account
type Market ¶
type Market struct { Symbol string `json:"symbol"` // LocalSymbol is used for exchange's API (exchange package internal) LocalSymbol string `json:"localSymbol,omitempty"` // PricePrecision is the precision used for formatting price, 8 = 8 decimals // can be converted from price tick step size, e.g. // int(math.Log10(price step size)) PricePrecision int `json:"pricePrecision"` // VolumePrecision is the precision used for formatting quantity and volume, 8 = 8 decimals // can be converted from step size, e.g. // int(math.Log10(quantity step size)) VolumePrecision int `json:"volumePrecision"` // QuoteCurrency is the currency name for quote, e.g. USDT in BTC/USDT, USDC in BTC/USDC QuoteCurrency string `json:"quoteCurrency"` // BaseCurrency is the current name for base, e.g. BTC in BTC/USDT, ETH in ETH/USDC BaseCurrency string `json:"baseCurrency"` // The MIN_NOTIONAL filter defines the minimum notional value allowed for an order on a symbol. // An order's notional value is the price * quantity MinNotional fixedpoint.Value `json:"minNotional,omitempty"` MinAmount fixedpoint.Value `json:"minAmount,omitempty"` // The LOT_SIZE filter defines the quantity MinQuantity fixedpoint.Value `json:"minQuantity,omitempty"` // MaxQuantity is currently not used in the code MaxQuantity fixedpoint.Value `json:"maxQuantity,omitempty"` // StepSize is the step size of quantity // can be converted from precision, e.g. // 1.0 / math.Pow10(m.BaseUnitPrecision) StepSize fixedpoint.Value `json:"stepSize,omitempty"` MinPrice fixedpoint.Value `json:"minPrice,omitempty"` MaxPrice fixedpoint.Value `json:"maxPrice,omitempty"` // TickSize is the step size of price TickSize fixedpoint.Value `json:"tickSize,omitempty"` }
func (Market) BaseCurrencyFormatter ¶ added in v1.18.0
func (m Market) BaseCurrencyFormatter() *accounting.Accounting
func (Market) CanonicalizeVolume ¶
func (m Market) CanonicalizeVolume(val fixedpoint.Value) float64
func (Market) FormatPrice ¶
func (m Market) FormatPrice(val fixedpoint.Value) string
func (Market) FormatPriceCurrency ¶
func (m Market) FormatPriceCurrency(val fixedpoint.Value) string
func (Market) FormatQuantity ¶
func (m Market) FormatQuantity(val fixedpoint.Value) string
func (Market) FormatVolume ¶
func (m Market) FormatVolume(val fixedpoint.Value) string
func (Market) IsDustQuantity ¶ added in v1.33.0
func (m Market) IsDustQuantity(quantity, price fixedpoint.Value) bool
func (Market) QuoteCurrencyFormatter ¶ added in v1.18.0
func (m Market) QuoteCurrencyFormatter() *accounting.Accounting
func (Market) TruncatePrice ¶ added in v1.39.2
func (m Market) TruncatePrice(price fixedpoint.Value) fixedpoint.Value
func (Market) TruncateQuantity ¶ added in v1.21.0
func (m Market) TruncateQuantity(quantity fixedpoint.Value) fixedpoint.Value
TruncateQuantity uses the step size to truncate floating number, in order to avoid the rounding issue
type MillisecondTimestamp ¶ added in v1.17.0
func MustParseMillisecondTimestamp ¶ added in v1.21.0
func MustParseMillisecondTimestamp(a string) MillisecondTimestamp
func NewMillisecondTimestampFromInt ¶ added in v1.21.0
func NewMillisecondTimestampFromInt(i int64) MillisecondTimestamp
func (MillisecondTimestamp) String ¶ added in v1.17.0
func (t MillisecondTimestamp) String() string
func (MillisecondTimestamp) Time ¶ added in v1.17.0
func (t MillisecondTimestamp) Time() time.Time
func (*MillisecondTimestamp) UnmarshalJSON ¶ added in v1.17.0
func (t *MillisecondTimestamp) UnmarshalJSON(data []byte) error
type MinusSeriesResult ¶ added in v1.30.2
type MinusSeriesResult struct {
// contains filtered or unexported fields
}
func (*MinusSeriesResult) Index ¶ added in v1.30.2
func (a *MinusSeriesResult) Index(i int) float64
func (*MinusSeriesResult) Last ¶ added in v1.30.2
func (a *MinusSeriesResult) Last() float64
func (*MinusSeriesResult) Length ¶ added in v1.30.2
func (a *MinusSeriesResult) Length() int
type MulSeriesResult ¶ added in v1.30.2
type MulSeriesResult struct {
// contains filtered or unexported fields
}
func (*MulSeriesResult) Index ¶ added in v1.30.2
func (a *MulSeriesResult) Index(i int) float64
func (*MulSeriesResult) Last ¶ added in v1.30.2
func (a *MulSeriesResult) Last() float64
func (*MulSeriesResult) Length ¶ added in v1.30.2
func (a *MulSeriesResult) Length() int
type MutexOrderBook ¶
func NewMutexOrderBook ¶
func NewMutexOrderBook(symbol string) *MutexOrderBook
func (*MutexOrderBook) BestAsk ¶ added in v1.17.0
func (b *MutexOrderBook) BestAsk() (pv PriceVolume, ok bool)
func (*MutexOrderBook) BestBid ¶ added in v1.17.0
func (b *MutexOrderBook) BestBid() (pv PriceVolume, ok bool)
func (*MutexOrderBook) BestBidAndAsk ¶ added in v1.17.0
func (b *MutexOrderBook) BestBidAndAsk() (bid, ask PriceVolume, ok bool)
func (*MutexOrderBook) Copy ¶ added in v1.17.0
func (b *MutexOrderBook) Copy() OrderBook
func (*MutexOrderBook) CopyDepth ¶ added in v1.17.0
func (b *MutexOrderBook) CopyDepth(depth int) OrderBook
func (*MutexOrderBook) IsValid ¶ added in v1.17.0
func (b *MutexOrderBook) IsValid() (ok bool, err error)
func (*MutexOrderBook) LastUpdateTime ¶ added in v1.25.4
func (b *MutexOrderBook) LastUpdateTime() time.Time
func (*MutexOrderBook) Load ¶
func (b *MutexOrderBook) Load(book SliceOrderBook)
func (*MutexOrderBook) Reset ¶ added in v1.11.0
func (b *MutexOrderBook) Reset()
func (*MutexOrderBook) Update ¶
func (b *MutexOrderBook) Update(update SliceOrderBook)
type NanosecondTimestamp ¶ added in v1.21.3
func (NanosecondTimestamp) Time ¶ added in v1.21.3
func (t NanosecondTimestamp) Time() time.Time
func (*NanosecondTimestamp) UnmarshalJSON ¶ added in v1.21.3
func (t *NanosecondTimestamp) UnmarshalJSON(data []byte) error
type NumberSeries ¶ added in v1.30.2
type NumberSeries float64
func (NumberSeries) Clone ¶ added in v1.38.0
func (a NumberSeries) Clone() NumberSeries
func (NumberSeries) Index ¶ added in v1.30.2
func (a NumberSeries) Index(_ int) float64
func (NumberSeries) Last ¶ added in v1.30.2
func (a NumberSeries) Last() float64
func (NumberSeries) Length ¶ added in v1.30.2
func (a NumberSeries) Length() int
type Order ¶
type Order struct { SubmitOrder Exchange ExchangeName `json:"exchange" db:"exchange"` // GID is used for relational database storage, it's an incremental ID GID uint64 `json:"gid" db:"gid"` OrderID uint64 `json:"orderID" db:"order_id"` // order id UUID string `json:"uuid,omitempty"` Status OrderStatus `json:"status" db:"status"` ExecutedQuantity fixedpoint.Value `json:"executedQuantity" db:"executed_quantity"` IsWorking bool `json:"isWorking" db:"is_working"` CreationTime Time `json:"creationTime" db:"created_at"` UpdateTime Time `json:"updateTime" db:"updated_at"` IsFutures bool `json:"isFutures" db:"is_futures"` IsMargin bool `json:"isMargin" db:"is_margin"` IsIsolated bool `json:"isIsolated" db:"is_isolated"` }
func SortOrdersAscending ¶ added in v1.33.0
func (Order) Backup ¶ added in v1.14.0
func (o Order) Backup() SubmitOrder
Backup backs up the current order quantity to a SubmitOrder object so that we can post the order later when we want to restore the orders.
func (Order) CsvRecords ¶ added in v1.33.0
func (Order) SlackAttachment ¶ added in v1.17.0
func (o Order) SlackAttachment() slack.Attachment
type OrderBook ¶
type OrderBook interface { Spread() (fixedpoint.Value, bool) BestAsk() (PriceVolume, bool) BestBid() (PriceVolume, bool) LastUpdateTime() time.Time Reset() Load(book SliceOrderBook) Update(book SliceOrderBook) Copy() OrderBook SideBook(sideType SideType) PriceVolumeSlice CopyDepth(depth int) OrderBook IsValid() (bool, error) }
type OrderError ¶ added in v1.25.3
type OrderError struct {
// contains filtered or unexported fields
}
func (*OrderError) Error ¶ added in v1.25.3
func (e *OrderError) Error() string
func (*OrderError) Order ¶ added in v1.25.3
func (e *OrderError) Order() Order
type OrderMap ¶
OrderMap is used for storing orders by their order id
func (OrderMap) Backup ¶ added in v1.14.0
func (m OrderMap) Backup() (orderForms []SubmitOrder)
func (OrderMap) Canceled ¶
func (m OrderMap) Canceled() OrderSlice
func (OrderMap) Filled ¶
func (m OrderMap) Filled() OrderSlice
func (OrderMap) FindByStatus ¶
func (m OrderMap) FindByStatus(status OrderStatus) (orders OrderSlice)
func (OrderMap) Orders ¶
func (m OrderMap) Orders() (orders OrderSlice)
type OrderQuery ¶ added in v1.28.0
type OrderSlice ¶
type OrderSlice []Order
type OrderStatus ¶
type OrderStatus string
const ( // OrderStatusNew means the order is active on the orderbook without any filling. OrderStatusNew OrderStatus = "NEW" // OrderStatusFilled means the order is fully-filled, it's an end state. OrderStatusFilled OrderStatus = "FILLED" // OrderStatusPartiallyFilled means the order is partially-filled, it's an end state, the order might be canceled in the end. OrderStatusPartiallyFilled OrderStatus = "PARTIALLY_FILLED" // OrderStatusCanceled means the order is canceled without partially filled or filled. OrderStatusCanceled OrderStatus = "CANCELED" // OrderStatusRejected means the order is not placed successfully, it's rejected by the api OrderStatusRejected OrderStatus = "REJECTED" )
type PCA ¶ added in v1.40.3
type PCA struct {
// contains filtered or unexported fields
}
func (*PCA) FitTransform ¶ added in v1.40.3
func (pca *PCA) FitTransform(x []SeriesExtend, lookback, feature int) ([]SeriesExtend, error)
func (*PCA) Transform ¶ added in v1.40.3
func (pca *PCA) Transform(x []SeriesExtend, lookback int, features int) (result []SeriesExtend)
type PercentageChangeResult ¶ added in v1.36.0
type PercentageChangeResult struct {
// contains filtered or unexported fields
}
func (*PercentageChangeResult) Index ¶ added in v1.36.0
func (c *PercentageChangeResult) Index(i int) float64
func (*PercentageChangeResult) Last ¶ added in v1.36.0
func (c *PercentageChangeResult) Last() float64
func (*PercentageChangeResult) Length ¶ added in v1.36.0
func (c *PercentageChangeResult) Length() int
type Position ¶ added in v1.21.0
type Position struct { Symbol string `json:"symbol" db:"symbol"` BaseCurrency string `json:"baseCurrency" db:"base"` QuoteCurrency string `json:"quoteCurrency" db:"quote"` Market Market `json:"market,omitempty"` Base fixedpoint.Value `json:"base" db:"base"` Quote fixedpoint.Value `json:"quote" db:"quote"` AverageCost fixedpoint.Value `json:"averageCost" db:"average_cost"` // ApproximateAverageCost adds the computed fee in quote in the average cost // This is used for calculating net profit ApproximateAverageCost fixedpoint.Value `json:"approximateAverageCost"` FeeRate *ExchangeFee `json:"feeRate,omitempty"` ExchangeFeeRates map[ExchangeName]ExchangeFee `json:"exchangeFeeRates"` // TotalFee stores the fee currency -> total fee quantity TotalFee map[string]fixedpoint.Value `json:"totalFee" db:"-"` OpenedAt time.Time `json:"openedAt,omitempty" db:"-"` ChangedAt time.Time `json:"changedAt,omitempty" db:"changed_at"` Strategy string `json:"strategy,omitempty" db:"strategy"` StrategyInstanceID string `json:"strategyInstanceID,omitempty" db:"strategy_instance_id"` AccumulatedProfit fixedpoint.Value `json:"accumulatedProfit,omitempty" db:"accumulated_profit"` sync.Mutex // contains filtered or unexported fields }
func NewPosition ¶ added in v1.21.0
func NewPositionFromMarket ¶ added in v1.21.0
func (*Position) AddTrade ¶ added in v1.21.0
func (p *Position) AddTrade(td Trade) (profit fixedpoint.Value, netProfit fixedpoint.Value, madeProfit bool)
func (*Position) AddTrades ¶ added in v1.21.0
func (p *Position) AddTrades(trades []Trade) (fixedpoint.Value, fixedpoint.Value, bool)
func (*Position) BindStream ¶ added in v1.21.0
func (*Position) CsvRecords ¶ added in v1.33.0
func (*Position) EmitModify ¶ added in v1.39.0
func (p *Position) EmitModify(baseQty fixedpoint.Value, quoteQty fixedpoint.Value, price fixedpoint.Value)
func (*Position) GetBase ¶ added in v1.24.0
func (p *Position) GetBase() (base fixedpoint.Value)
GetBase locks the mutex and return the base quantity The base quantity can be negative
func (*Position) GetQuantity ¶ added in v1.36.0
func (p *Position) GetQuantity() fixedpoint.Value
func (*Position) IsOpened ¶ added in v1.36.0
func (p *Position) IsOpened(currentPrice fixedpoint.Value) bool
func (*Position) ModifyAverageCost ¶ added in v1.39.0
func (p *Position) ModifyAverageCost(price fixedpoint.Value) error
ModifyAverageCost modifies position average cost with `price`
func (*Position) ModifyBase ¶ added in v1.39.0
func (p *Position) ModifyBase(qty fixedpoint.Value) error
ModifyBase modifies position base quantity with `qty`
func (*Position) ModifyQuote ¶ added in v1.39.0
func (p *Position) ModifyQuote(qty fixedpoint.Value) error
ModifyQuote modifies position quote quantity with `qty`
func (*Position) NewMarketCloseOrder ¶ added in v1.33.3
func (p *Position) NewMarketCloseOrder(percentage fixedpoint.Value) *SubmitOrder
func (*Position) NewProfit ¶ added in v1.28.0
func (p *Position) NewProfit(trade Trade, profit, netProfit fixedpoint.Value) Profit
NewProfit generates the profit object from the current position
func (*Position) OnModify ¶ added in v1.39.0
func (p *Position) OnModify(cb func(baseQty fixedpoint.Value, quoteQty fixedpoint.Value, price fixedpoint.Value))
func (*Position) ROI ¶ added in v1.36.0
func (p *Position) ROI(price fixedpoint.Value) fixedpoint.Value
ROI -- Return on investment (ROI) is a performance measure used to evaluate the efficiency or profitability of an investment or compare the efficiency of a number of different investments. ROI tries to directly measure the amount of return on a particular investment, relative to the investment's cost.
func (*Position) SetExchangeFeeRate ¶ added in v1.21.0
func (p *Position) SetExchangeFeeRate(ex ExchangeName, exchangeFee ExchangeFee)
func (*Position) SetFeeRate ¶ added in v1.21.0
func (p *Position) SetFeeRate(exchangeFee ExchangeFee)
func (*Position) SlackAttachment ¶ added in v1.21.0
func (p *Position) SlackAttachment() slack.Attachment
func (*Position) Type ¶ added in v1.24.0
func (p *Position) Type() PositionType
func (*Position) UnrealizedProfit ¶ added in v1.33.0
func (p *Position) UnrealizedProfit(price fixedpoint.Value) fixedpoint.Value
type PositionMap ¶ added in v1.21.0
type PositionRisk ¶ added in v1.21.0
type PositionRisk struct { Leverage fixedpoint.Value `json:"leverage"` LiquidationPrice fixedpoint.Value `json:"liquidationPrice"` }
type PositionType ¶ added in v1.24.0
type PositionType string
type PremiumIndex ¶ added in v1.21.0
type PremiumIndex struct { Symbol string `json:"symbol"` MarkPrice fixedpoint.Value `json:"markPrice"` LastFundingRate fixedpoint.Value `json:"lastFundingRate"` NextFundingTime time.Time `json:"nextFundingTime"` Time time.Time `json:"time"` }
type PriceHeartBeat ¶ added in v1.25.4
type PriceHeartBeat struct { PriceVolume PriceVolume LastTime time.Time }
PriceHeartBeat is used for monitoring the price volume update.
func (*PriceHeartBeat) Update ¶ added in v1.25.4
func (b *PriceHeartBeat) Update(pv PriceVolume, timeout time.Duration) (bool, error)
Update updates the price volume object and the last update time It returns (bool, error), when the price is successfully updated, it returns true. If the price is not updated (same price) and the last time exceeded the timeout, Then false, and an error will be returned
type PriceMap ¶ added in v1.41.0
type PriceMap map[string]fixedpoint.Value
type PriceVolume ¶
type PriceVolume struct {
Price, Volume fixedpoint.Value
}
func (PriceVolume) String ¶
func (p PriceVolume) String() string
type PriceVolumeSlice ¶
type PriceVolumeSlice []PriceVolume
func ParsePriceVolumeSliceJSON ¶ added in v1.21.0
func ParsePriceVolumeSliceJSON(b []byte) (slice PriceVolumeSlice, err error)
ParsePriceVolumeSliceJSON tries to parse a 2 dimensional string array into a PriceVolumeSlice
[["9000", "10"], ["9900", "10"], ... ]
func (PriceVolumeSlice) Copy ¶
func (slice PriceVolumeSlice) Copy() PriceVolumeSlice
func (PriceVolumeSlice) CopyDepth ¶ added in v1.17.0
func (slice PriceVolumeSlice) CopyDepth(depth int) PriceVolumeSlice
func (PriceVolumeSlice) Find ¶
func (slice PriceVolumeSlice) Find(price fixedpoint.Value, descending bool) (pv PriceVolume, idx int)
Find finds the pair by the given price, this function is a read-only operation, so we use the value receiver to avoid copy value from the pointer If the price is not found, it will return the index where the price can be inserted at. true for descending (bid orders), false for ascending (ask orders)
func (PriceVolumeSlice) First ¶
func (slice PriceVolumeSlice) First() (PriceVolume, bool)
func (PriceVolumeSlice) IndexByVolumeDepth ¶
func (slice PriceVolumeSlice) IndexByVolumeDepth(requiredVolume fixedpoint.Value) int
func (PriceVolumeSlice) InsertAt ¶
func (slice PriceVolumeSlice) InsertAt(idx int, pv PriceVolume) PriceVolumeSlice
func (PriceVolumeSlice) Len ¶
func (slice PriceVolumeSlice) Len() int
func (PriceVolumeSlice) Less ¶
func (slice PriceVolumeSlice) Less(i, j int) bool
func (PriceVolumeSlice) Remove ¶
func (slice PriceVolumeSlice) Remove(price fixedpoint.Value, descending bool) PriceVolumeSlice
func (PriceVolumeSlice) Second ¶ added in v1.17.0
func (slice PriceVolumeSlice) Second() (PriceVolume, bool)
func (PriceVolumeSlice) Swap ¶
func (slice PriceVolumeSlice) Swap(i, j int)
func (PriceVolumeSlice) Trim ¶
func (slice PriceVolumeSlice) Trim() (pvs PriceVolumeSlice)
Trim removes the pairs that volume = 0
func (*PriceVolumeSlice) UnmarshalJSON ¶ added in v1.21.0
func (slice *PriceVolumeSlice) UnmarshalJSON(b []byte) error
func (PriceVolumeSlice) Upsert ¶
func (slice PriceVolumeSlice) Upsert(pv PriceVolume, descending bool) PriceVolumeSlice
type Profit ¶ added in v1.28.0
type Profit struct { // --- position related fields // ------------------------------------------- // Symbol is the symbol of the position Symbol string `json:"symbol"` QuoteCurrency string `json:"quoteCurrency" db:"quote_currency"` BaseCurrency string `json:"baseCurrency" db:"base_currency"` AverageCost fixedpoint.Value `json:"averageCost" db:"average_cost"` // profit related fields // ------------------------------------------- // Profit is the profit of this trade made. negative profit means loss. Profit fixedpoint.Value `json:"profit" db:"profit"` // NetProfit is (profit - trading fee) NetProfit fixedpoint.Value `json:"netProfit" db:"net_profit"` // ProfitMargin is a percentage of the profit and the capital amount ProfitMargin fixedpoint.Value `json:"profitMargin" db:"profit_margin"` // NetProfitMargin is a percentage of the net profit and the capital amount NetProfitMargin fixedpoint.Value `json:"netProfitMargin" db:"net_profit_margin"` // trade related fields // -------------------------------------------- // TradeID is the exchange trade id of that trade Trade *Trade `json:"trade,omitempty" db:"-"` TradeID uint64 `json:"tradeID" db:"trade_id"` OrderID uint64 `json:"orderID,omitempty"` Side SideType `json:"side" db:"side"` IsBuyer bool `json:"isBuyer" db:"is_buyer"` IsMaker bool `json:"isMaker" db:"is_maker"` Price fixedpoint.Value `json:"price" db:"price"` Quantity fixedpoint.Value `json:"quantity" db:"quantity"` QuoteQuantity fixedpoint.Value `json:"quoteQuantity" db:"quote_quantity"` // FeeInUSD is the summed fee of this profit, // you will need to convert the trade fee into USD since the fee currencies can be different. FeeInUSD fixedpoint.Value `json:"feeInUSD" db:"fee_in_usd"` Fee fixedpoint.Value `json:"fee" db:"fee"` FeeCurrency string `json:"feeCurrency" db:"fee_currency"` Exchange ExchangeName `json:"exchange" db:"exchange"` IsMargin bool `json:"isMargin" db:"is_margin"` IsFutures bool `json:"isFutures" db:"is_futures"` IsIsolated bool `json:"isIsolated" db:"is_isolated"` TradedAt time.Time `json:"tradedAt" db:"traded_at"` PositionOpenedAt time.Time `json:"positionOpenedAt" db:"-"` // strategy related fields Strategy string `json:"strategy" db:"strategy"` StrategyInstanceID string `json:"strategyInstanceID" db:"strategy_instance_id"` }
Profit struct stores the PnL information
func (*Profit) SlackAttachment ¶ added in v1.28.0
func (p *Profit) SlackAttachment() slack.Attachment
type ProfitReport ¶ added in v1.39.0
type ProfitReport struct { StartTime time.Time `json:"startTime"` Profit float64 `json:"profit"` Interval Interval `json:"interval"` }
func (ProfitReport) String ¶ added in v1.39.0
func (s ProfitReport) String() string
type ProfitStats ¶ added in v1.28.0
type ProfitStats struct { Symbol string `json:"symbol"` QuoteCurrency string `json:"quoteCurrency"` BaseCurrency string `json:"baseCurrency"` AccumulatedPnL fixedpoint.Value `json:"accumulatedPnL,omitempty"` AccumulatedNetProfit fixedpoint.Value `json:"accumulatedNetProfit,omitempty"` AccumulatedGrossProfit fixedpoint.Value `json:"accumulatedGrossProfit,omitempty"` AccumulatedGrossLoss fixedpoint.Value `json:"accumulatedGrossLoss,omitempty"` AccumulatedVolume fixedpoint.Value `json:"accumulatedVolume,omitempty"` AccumulatedSince int64 `json:"accumulatedSince,omitempty"` TodayPnL fixedpoint.Value `json:"todayPnL,omitempty"` TodayNetProfit fixedpoint.Value `json:"todayNetProfit,omitempty"` TodayGrossProfit fixedpoint.Value `json:"todayGrossProfit,omitempty"` TodayGrossLoss fixedpoint.Value `json:"todayGrossLoss,omitempty"` TodaySince int64 `json:"todaySince,omitempty"` }
func NewProfitStats ¶ added in v1.33.0
func NewProfitStats(market Market) *ProfitStats
func (*ProfitStats) AddProfit ¶ added in v1.28.0
func (s *ProfitStats) AddProfit(profit Profit)
func (*ProfitStats) AddTrade ¶ added in v1.28.0
func (s *ProfitStats) AddTrade(trade Trade)
func (*ProfitStats) Init ¶ added in v1.28.0
func (s *ProfitStats) Init(market Market)
Init Deprecated: use NewProfitStats instead
func (*ProfitStats) IsOver24Hours ¶ added in v1.28.0
func (s *ProfitStats) IsOver24Hours() bool
IsOver24Hours checks if the since time is over 24 hours
func (*ProfitStats) PlainText ¶ added in v1.28.0
func (s *ProfitStats) PlainText() string
func (*ProfitStats) ResetToday ¶ added in v1.28.0
func (s *ProfitStats) ResetToday(t time.Time)
func (*ProfitStats) SlackAttachment ¶ added in v1.28.0
func (s *ProfitStats) SlackAttachment() slack.Attachment
type Queue ¶ added in v1.33.1
type Queue struct { SeriesBase // contains filtered or unexported fields }
Super basic Series type that simply holds the float64 data with size limit (the only difference compare to float64slice)
type RBNode ¶ added in v1.17.0
type RBNode struct {
// contains filtered or unexported fields
}
RBNode A red node always has black children. A black node may have red or black children
type RBTOrderBook ¶ added in v1.17.0
type RBTOrderBook struct { Symbol string Bids *RBTree Asks *RBTree // contains filtered or unexported fields }
func NewRBOrderBook ¶ added in v1.17.0
func NewRBOrderBook(symbol string) *RBTOrderBook
func (*RBTOrderBook) BestAsk ¶ added in v1.17.0
func (b *RBTOrderBook) BestAsk() (PriceVolume, bool)
func (*RBTOrderBook) BestBid ¶ added in v1.17.0
func (b *RBTOrderBook) BestBid() (PriceVolume, bool)
func (*RBTOrderBook) Copy ¶ added in v1.17.0
func (b *RBTOrderBook) Copy() OrderBook
func (*RBTOrderBook) CopyDepth ¶ added in v1.17.0
func (b *RBTOrderBook) CopyDepth(limit int) OrderBook
func (*RBTOrderBook) EmitLoad ¶ added in v1.17.0
func (b *RBTOrderBook) EmitLoad(book *RBTOrderBook)
func (*RBTOrderBook) EmitUpdate ¶ added in v1.17.0
func (b *RBTOrderBook) EmitUpdate(book *RBTOrderBook)
func (*RBTOrderBook) IsValid ¶ added in v1.17.0
func (b *RBTOrderBook) IsValid() (bool, error)
func (*RBTOrderBook) LastUpdateTime ¶ added in v1.25.4
func (b *RBTOrderBook) LastUpdateTime() time.Time
func (*RBTOrderBook) Load ¶ added in v1.17.0
func (b *RBTOrderBook) Load(book SliceOrderBook)
func (*RBTOrderBook) OnLoad ¶ added in v1.17.0
func (b *RBTOrderBook) OnLoad(cb func(book *RBTOrderBook))
func (*RBTOrderBook) OnUpdate ¶ added in v1.17.0
func (b *RBTOrderBook) OnUpdate(cb func(book *RBTOrderBook))
func (*RBTOrderBook) Print ¶ added in v1.17.0
func (b *RBTOrderBook) Print()
func (*RBTOrderBook) Reset ¶ added in v1.17.0
func (b *RBTOrderBook) Reset()
func (*RBTOrderBook) SideBook ¶ added in v1.17.0
func (b *RBTOrderBook) SideBook(sideType SideType) PriceVolumeSlice
func (*RBTOrderBook) Spread ¶ added in v1.17.0
func (b *RBTOrderBook) Spread() (fixedpoint.Value, bool)
func (*RBTOrderBook) Update ¶ added in v1.17.0
func (b *RBTOrderBook) Update(book SliceOrderBook)
type RBTree ¶ added in v1.17.0
type RBTree struct { Root *RBNode // contains filtered or unexported fields }
func (*RBTree) CopyInorder ¶ added in v1.17.0
func (*RBTree) CopyInorderReverse ¶ added in v1.17.0
func (*RBTree) DeleteFixup ¶ added in v1.17.0
func (*RBTree) InorderReverse ¶ added in v1.17.0
InorderReverse traverses the tree in descending order
func (*RBTree) InorderReverseOf ¶ added in v1.17.0
func (*RBTree) Insert ¶ added in v1.17.0
func (tree *RBTree) Insert(key, val fixedpoint.Value)
func (*RBTree) InsertFixup ¶ added in v1.17.0
func (*RBTree) LeftmostOf ¶ added in v1.17.0
func (*RBTree) PostorderOf ¶ added in v1.17.0
func (*RBTree) PreorderOf ¶ added in v1.17.0
func (*RBTree) RightmostOf ¶ added in v1.17.0
func (*RBTree) RotateLeft ¶ added in v1.17.0
RotateLeft x is the axes of rotation, y is the node that will be replace x's position. we need to: 1. move y's left child to the x's right child 2. change y's parent to x's parent 3. change x's parent to y
func (*RBTree) RotateRight ¶ added in v1.17.0
func (*RBTree) Upsert ¶ added in v1.17.0
func (tree *RBTree) Upsert(key, val fixedpoint.Value)
type Reward ¶ added in v1.13.0
type Reward struct { GID int64 `json:"gid" db:"gid"` UUID string `json:"uuid" db:"uuid"` Exchange ExchangeName `json:"exchange" db:"exchange"` Type RewardType `json:"reward_type" db:"reward_type"` Currency string `json:"currency" db:"currency"` Quantity fixedpoint.Value `json:"quantity" db:"quantity"` State string `json:"state" db:"state"` Note string `json:"note" db:"note"` Spent bool `json:"spent" db:"spent"` CreatedAt Time `json:"created_at" db:"created_at"` }
type RewardSlice ¶ added in v1.13.0
type RewardSlice []Reward
func (RewardSlice) Len ¶ added in v1.13.0
func (s RewardSlice) Len() int
func (RewardSlice) Swap ¶ added in v1.13.0
func (s RewardSlice) Swap(i, j int)
type RewardSliceByCreationTime ¶ added in v1.13.0
type RewardSliceByCreationTime RewardSlice
func (RewardSliceByCreationTime) Len ¶ added in v1.13.0
func (s RewardSliceByCreationTime) Len() int
func (RewardSliceByCreationTime) Less ¶ added in v1.13.0
func (s RewardSliceByCreationTime) Less(i, j int) bool
Less reports whether x[i] should be ordered before x[j]
func (RewardSliceByCreationTime) Swap ¶ added in v1.13.0
func (s RewardSliceByCreationTime) Swap(i, j int)
type RewardType ¶ added in v1.13.0
type RewardType string
type RollingResult ¶ added in v1.36.0
type RollingResult struct {
// contains filtered or unexported fields
}
func Rolling ¶ added in v1.36.0
func Rolling(a Series, window int) *RollingResult
func (*RollingResult) Index ¶ added in v1.36.0
func (r *RollingResult) Index(i int) SeriesExtend
func (*RollingResult) Last ¶ added in v1.36.0
func (r *RollingResult) Last() SeriesExtend
func (*RollingResult) Length ¶ added in v1.36.0
func (r *RollingResult) Length() int
type Series ¶ added in v1.30.2
The interface maps to pinescript basic type `series` Access the internal historical data from the latest to the oldest Index(0) always maps to Last()
type SeriesBase ¶ added in v1.36.0
type SeriesBase struct {
Series
}
func (*SeriesBase) Abs ¶ added in v1.36.0
func (s *SeriesBase) Abs() SeriesExtend
func (*SeriesBase) Add ¶ added in v1.36.0
func (s *SeriesBase) Add(b interface{}) SeriesExtend
func (*SeriesBase) Array ¶ added in v1.36.0
func (s *SeriesBase) Array(limit ...int) (result []float64)
func (*SeriesBase) AutoCorrelation ¶ added in v1.38.0
func (s *SeriesBase) AutoCorrelation(length int, lag ...int) float64
func (*SeriesBase) Change ¶ added in v1.36.0
func (s *SeriesBase) Change(offset ...int) SeriesExtend
func (*SeriesBase) Correlation ¶ added in v1.36.0
func (s *SeriesBase) Correlation(b Series, length int, method ...CorrFunc) float64
func (*SeriesBase) Covariance ¶ added in v1.36.0
func (s *SeriesBase) Covariance(b Series, length int) float64
func (*SeriesBase) CrossEntropy ¶ added in v1.37.0
func (s *SeriesBase) CrossEntropy(b Series, window int) float64
func (*SeriesBase) CrossOver ¶ added in v1.36.0
func (s *SeriesBase) CrossOver(b Series) BoolSeries
func (*SeriesBase) CrossUnder ¶ added in v1.36.0
func (s *SeriesBase) CrossUnder(b Series) BoolSeries
func (*SeriesBase) Div ¶ added in v1.36.0
func (s *SeriesBase) Div(b interface{}) SeriesExtend
func (*SeriesBase) Dot ¶ added in v1.36.0
func (s *SeriesBase) Dot(b interface{}, limit ...int) float64
func (*SeriesBase) Entropy ¶ added in v1.37.0
func (s *SeriesBase) Entropy(window int) float64
func (*SeriesBase) Filter ¶ added in v1.42.0
func (s *SeriesBase) Filter(b func(int, float64) bool, length int) SeriesExtend
func (*SeriesBase) Highest ¶ added in v1.36.0
func (s *SeriesBase) Highest(lookback int) float64
func (*SeriesBase) Index ¶ added in v1.36.0
func (s *SeriesBase) Index(i int) float64
func (*SeriesBase) Last ¶ added in v1.36.0
func (s *SeriesBase) Last() float64
func (*SeriesBase) Length ¶ added in v1.36.0
func (s *SeriesBase) Length() int
func (*SeriesBase) Lowest ¶ added in v1.36.0
func (s *SeriesBase) Lowest(lookback int) float64
func (*SeriesBase) Mean ¶ added in v1.36.0
func (s *SeriesBase) Mean(limit ...int) float64
func (*SeriesBase) Minus ¶ added in v1.36.0
func (s *SeriesBase) Minus(b interface{}) SeriesExtend
func (*SeriesBase) Mul ¶ added in v1.36.0
func (s *SeriesBase) Mul(b interface{}) SeriesExtend
func (*SeriesBase) PercentageChange ¶ added in v1.36.0
func (s *SeriesBase) PercentageChange(offset ...int) SeriesExtend
func (*SeriesBase) Predict ¶ added in v1.36.0
func (s *SeriesBase) Predict(lookback int, offset ...int) float64
func (*SeriesBase) Rank ¶ added in v1.36.0
func (s *SeriesBase) Rank(length int) SeriesExtend
func (*SeriesBase) Reverse ¶ added in v1.36.0
func (s *SeriesBase) Reverse(limit ...int) (result floats.Slice)
func (*SeriesBase) Rolling ¶ added in v1.36.0
func (s *SeriesBase) Rolling(window int) *RollingResult
func (*SeriesBase) Shift ¶ added in v1.36.0
func (s *SeriesBase) Shift(offset int) SeriesExtend
func (*SeriesBase) Sigmoid ¶ added in v1.37.0
func (s *SeriesBase) Sigmoid() SeriesExtend
func (*SeriesBase) Skew ¶ added in v1.36.0
func (s *SeriesBase) Skew(length int) float64
func (*SeriesBase) Softmax ¶ added in v1.37.0
func (s *SeriesBase) Softmax(window int) SeriesExtend
func (*SeriesBase) Stdev ¶ added in v1.36.0
func (s *SeriesBase) Stdev(params ...int) float64
func (*SeriesBase) Sum ¶ added in v1.36.0
func (s *SeriesBase) Sum(limit ...int) float64
func (*SeriesBase) Variance ¶ added in v1.36.0
func (s *SeriesBase) Variance(length int) float64
type SeriesExtend ¶ added in v1.36.0
type SeriesExtend interface { Series Sum(limit ...int) float64 Mean(limit ...int) float64 Abs() SeriesExtend Predict(lookback int, offset ...int) float64 NextCross(b Series, lookback int) (int, float64, bool) CrossOver(b Series) BoolSeries CrossUnder(b Series) BoolSeries Highest(lookback int) float64 Lowest(lookback int) float64 Add(b interface{}) SeriesExtend Minus(b interface{}) SeriesExtend Div(b interface{}) SeriesExtend Mul(b interface{}) SeriesExtend Dot(b interface{}, limit ...int) float64 Array(limit ...int) (result []float64) Reverse(limit ...int) (result floats.Slice) Change(offset ...int) SeriesExtend PercentageChange(offset ...int) SeriesExtend Stdev(params ...int) float64 Rolling(window int) *RollingResult Shift(offset int) SeriesExtend Skew(length int) float64 Variance(length int) float64 Covariance(b Series, length int) float64 Correlation(b Series, length int, method ...CorrFunc) float64 AutoCorrelation(length int, lag ...int) float64 Rank(length int) SeriesExtend Sigmoid() SeriesExtend Softmax(window int) SeriesExtend Entropy(window int) float64 CrossEntropy(b Series, window int) float64 Filter(b func(i int, value float64) bool, length int) SeriesExtend }
func Abs ¶ added in v1.30.2
func Abs(a Series) SeriesExtend
Return series that having all the elements positive
func Add ¶ added in v1.30.2
func Add(a interface{}, b interface{}) SeriesExtend
Add two series, result[i] = a[i] + b[i]
func Change ¶ added in v1.30.2
func Change(a Series, offset ...int) SeriesExtend
Difference between current value and previous, a - a[offset] offset: if not given, offset is 1.
func Div ¶ added in v1.30.2
func Div(a interface{}, b interface{}) SeriesExtend
Divid two series, result[i] = a[i] / b[i]
func Filter ¶ added in v1.42.0
Filter function filters Series by using a boolean function. When the boolean function returns true, the Series value at index i will be included in the returned Series. The returned Series will find at most `length` latest matching elements from the input Series. Query index larger or equal than length from the returned Series will return 0 instead. Notice that any Update on the input Series will make the previously returned Series outdated.
func Minus ¶ added in v1.30.2
func Minus(a interface{}, b interface{}) SeriesExtend
Minus two series, result[i] = a[i] - b[i]
func Mul ¶ added in v1.30.2
func Mul(a interface{}, b interface{}) SeriesExtend
Multiple two series, result[i] = a[i] * b[i]
func NewSeries ¶ added in v1.36.0
func NewSeries(a Series) SeriesExtend
func PercentageChange ¶ added in v1.36.0
func PercentageChange(a Series, offset ...int) SeriesExtend
Percentage change between current and a prior element, a / a[offset] - 1. offset: if not give, offset is 1.
func Rank ¶ added in v1.36.0
func Rank(a Series, length int) SeriesExtend
func Shift ¶ added in v1.36.0
func Shift(a Series, offset int) SeriesExtend
func Sigmoid ¶ added in v1.37.0
func Sigmoid(a Series) SeriesExtend
Sigmoid returns the input values in range of -1 to 1 along the sigmoid or s-shaped curve. Commonly used in machine learning while training neural networks as an activation function.
func Softmax ¶ added in v1.37.0
func Softmax(a Series, window int) SeriesExtend
SoftMax returns the input value in the range of 0 to 1 with sum of all the probabilities being equal to one. It is commonly used in machine learning neural networks. Will return Softmax SeriesExtend result based in latest [window] numbers from [a] Series
type ShiftResult ¶ added in v1.36.0
type ShiftResult struct {
// contains filtered or unexported fields
}
func (*ShiftResult) Index ¶ added in v1.36.0
func (inc *ShiftResult) Index(i int) float64
func (*ShiftResult) Last ¶ added in v1.36.0
func (inc *ShiftResult) Last() float64
func (*ShiftResult) Length ¶ added in v1.36.0
func (inc *ShiftResult) Length() int
type SideType ¶
type SideType string
SideType define side type of order
func StrToSideType ¶ added in v1.17.0
func (*SideType) UnmarshalJSON ¶ added in v1.14.0
type SigmoidResult ¶ added in v1.37.0
type SigmoidResult struct {
// contains filtered or unexported fields
}
func (*SigmoidResult) Index ¶ added in v1.37.0
func (s *SigmoidResult) Index(i int) float64
func (*SigmoidResult) Last ¶ added in v1.37.0
func (s *SigmoidResult) Last() float64
func (*SigmoidResult) Length ¶ added in v1.37.0
func (s *SigmoidResult) Length() int
type SliceOrderBook ¶ added in v1.17.0
type SliceOrderBook struct { Symbol string Bids PriceVolumeSlice Asks PriceVolumeSlice // contains filtered or unexported fields }
SliceOrderBook is a general order book structure which could be used for RESTful responses and websocket stream parsing
func NewSliceOrderBook ¶ added in v1.17.0
func NewSliceOrderBook(symbol string) *SliceOrderBook
func (*SliceOrderBook) BestAsk ¶ added in v1.17.0
func (b *SliceOrderBook) BestAsk() (PriceVolume, bool)
func (*SliceOrderBook) BestBid ¶ added in v1.17.0
func (b *SliceOrderBook) BestBid() (PriceVolume, bool)
func (*SliceOrderBook) Copy ¶ added in v1.17.0
func (b *SliceOrderBook) Copy() OrderBook
func (*SliceOrderBook) CopyDepth ¶ added in v1.17.0
func (b *SliceOrderBook) CopyDepth(limit int) OrderBook
func (*SliceOrderBook) EmitLoad ¶ added in v1.17.0
func (b *SliceOrderBook) EmitLoad(book *SliceOrderBook)
func (*SliceOrderBook) EmitUpdate ¶ added in v1.17.0
func (b *SliceOrderBook) EmitUpdate(book *SliceOrderBook)
func (*SliceOrderBook) IsValid ¶ added in v1.17.0
func (b *SliceOrderBook) IsValid() (bool, error)
func (*SliceOrderBook) LastUpdateTime ¶ added in v1.25.4
func (b *SliceOrderBook) LastUpdateTime() time.Time
func (*SliceOrderBook) Load ¶ added in v1.17.0
func (b *SliceOrderBook) Load(book SliceOrderBook)
func (*SliceOrderBook) OnLoad ¶ added in v1.17.0
func (b *SliceOrderBook) OnLoad(cb func(book *SliceOrderBook))
func (*SliceOrderBook) OnUpdate ¶ added in v1.17.0
func (b *SliceOrderBook) OnUpdate(cb func(book *SliceOrderBook))
func (*SliceOrderBook) PriceVolumesBySide ¶ added in v1.17.0
func (b *SliceOrderBook) PriceVolumesBySide(side SideType) PriceVolumeSlice
func (*SliceOrderBook) Print ¶ added in v1.17.0
func (b *SliceOrderBook) Print()
func (*SliceOrderBook) Reset ¶ added in v1.17.0
func (b *SliceOrderBook) Reset()
func (*SliceOrderBook) SideBook ¶ added in v1.17.0
func (b *SliceOrderBook) SideBook(sideType SideType) PriceVolumeSlice
func (*SliceOrderBook) Spread ¶ added in v1.17.0
func (b *SliceOrderBook) Spread() (fixedpoint.Value, bool)
func (*SliceOrderBook) String ¶ added in v1.17.0
func (b *SliceOrderBook) String() string
func (*SliceOrderBook) Update ¶ added in v1.17.0
func (b *SliceOrderBook) Update(book SliceOrderBook)
type SliceView ¶ added in v1.36.0
type SliceView struct {
// contains filtered or unexported fields
}
type StandardStream ¶
type StandardStream struct { // Conn is the websocket connection Conn *websocket.Conn // ConnCtx is the context of the current websocket connection ConnCtx context.Context // ConnCancel is the cancel funcion of the current websocket connection ConnCancel context.CancelFunc // ConnLock is used for locking Conn, ConnCtx and ConnCancel fields. // When changing these field values, be sure to call ConnLock ConnLock sync.Mutex PublicOnly bool // ReconnectC is a signal channel for reconnecting ReconnectC chan struct{} // CloseC is a signal channel for closing stream CloseC chan struct{} Subscriptions []Subscription // Futures FuturesPositionUpdateCallbacks []func(futuresPositions FuturesPositionMap) FuturesPositionSnapshotCallbacks []func(futuresPositions FuturesPositionMap) // contains filtered or unexported fields }
func NewStandardStream ¶ added in v1.23.0
func NewStandardStream() StandardStream
func (*StandardStream) Close ¶ added in v1.23.0
func (s *StandardStream) Close() error
func (*StandardStream) Connect ¶ added in v1.23.0
func (s *StandardStream) Connect(ctx context.Context) error
Connect starts the stream and create the websocket connection
func (*StandardStream) DialAndConnect ¶ added in v1.23.0
func (s *StandardStream) DialAndConnect(ctx context.Context) error
func (*StandardStream) EmitAggTrade ¶ added in v1.43.0
func (s *StandardStream) EmitAggTrade(trade Trade)
func (*StandardStream) EmitBalanceSnapshot ¶
func (s *StandardStream) EmitBalanceSnapshot(balances BalanceMap)
func (*StandardStream) EmitBalanceUpdate ¶
func (s *StandardStream) EmitBalanceUpdate(balances BalanceMap)
func (*StandardStream) EmitBookSnapshot ¶
func (s *StandardStream) EmitBookSnapshot(book SliceOrderBook)
func (*StandardStream) EmitBookTickerUpdate ¶ added in v1.21.0
func (s *StandardStream) EmitBookTickerUpdate(bookTicker BookTicker)
func (*StandardStream) EmitBookUpdate ¶
func (s *StandardStream) EmitBookUpdate(book SliceOrderBook)
func (*StandardStream) EmitConnect ¶
func (s *StandardStream) EmitConnect()
func (*StandardStream) EmitDisconnect ¶ added in v1.14.0
func (s *StandardStream) EmitDisconnect()
func (*StandardStream) EmitFuturesPositionSnapshot ¶ added in v1.22.0
func (s *StandardStream) EmitFuturesPositionSnapshot(futuresPositions FuturesPositionMap)
func (*StandardStream) EmitFuturesPositionUpdate ¶ added in v1.22.0
func (s *StandardStream) EmitFuturesPositionUpdate(futuresPositions FuturesPositionMap)
func (*StandardStream) EmitKLine ¶
func (s *StandardStream) EmitKLine(kline KLine)
func (*StandardStream) EmitKLineClosed ¶
func (s *StandardStream) EmitKLineClosed(kline KLine)
func (*StandardStream) EmitMarketTrade ¶ added in v1.29.0
func (s *StandardStream) EmitMarketTrade(trade Trade)
func (*StandardStream) EmitOrderUpdate ¶
func (s *StandardStream) EmitOrderUpdate(order Order)
func (*StandardStream) EmitStart ¶ added in v1.14.0
func (s *StandardStream) EmitStart()
func (*StandardStream) EmitTradeUpdate ¶
func (s *StandardStream) EmitTradeUpdate(trade Trade)
func (*StandardStream) GetPublicOnly ¶ added in v1.35.0
func (s *StandardStream) GetPublicOnly() bool
func (*StandardStream) GetSubscriptions ¶ added in v1.35.0
func (s *StandardStream) GetSubscriptions() []Subscription
func (*StandardStream) OnAggTrade ¶ added in v1.43.0
func (s *StandardStream) OnAggTrade(cb func(trade Trade))
func (*StandardStream) OnBalanceSnapshot ¶
func (s *StandardStream) OnBalanceSnapshot(cb func(balances BalanceMap))
func (*StandardStream) OnBalanceUpdate ¶
func (s *StandardStream) OnBalanceUpdate(cb func(balances BalanceMap))
func (*StandardStream) OnBookSnapshot ¶
func (s *StandardStream) OnBookSnapshot(cb func(book SliceOrderBook))
func (*StandardStream) OnBookTickerUpdate ¶ added in v1.21.0
func (s *StandardStream) OnBookTickerUpdate(cb func(bookTicker BookTicker))
func (*StandardStream) OnBookUpdate ¶
func (s *StandardStream) OnBookUpdate(cb func(book SliceOrderBook))
func (*StandardStream) OnConnect ¶
func (s *StandardStream) OnConnect(cb func())
func (*StandardStream) OnDisconnect ¶ added in v1.14.0
func (s *StandardStream) OnDisconnect(cb func())
func (*StandardStream) OnFuturesPositionSnapshot ¶ added in v1.22.0
func (s *StandardStream) OnFuturesPositionSnapshot(cb func(futuresPositions FuturesPositionMap))
func (*StandardStream) OnFuturesPositionUpdate ¶ added in v1.22.0
func (s *StandardStream) OnFuturesPositionUpdate(cb func(futuresPositions FuturesPositionMap))
func (*StandardStream) OnKLine ¶
func (s *StandardStream) OnKLine(cb func(kline KLine))
func (*StandardStream) OnKLineClosed ¶
func (s *StandardStream) OnKLineClosed(cb func(kline KLine))
func (*StandardStream) OnMarketTrade ¶ added in v1.29.0
func (s *StandardStream) OnMarketTrade(cb func(trade Trade))
func (*StandardStream) OnOrderUpdate ¶
func (s *StandardStream) OnOrderUpdate(cb func(order Order))
func (*StandardStream) OnStart ¶ added in v1.14.0
func (s *StandardStream) OnStart(cb func())
func (*StandardStream) OnTradeUpdate ¶
func (s *StandardStream) OnTradeUpdate(cb func(trade Trade))
func (*StandardStream) Read ¶ added in v1.23.0
func (s *StandardStream) Read(ctx context.Context, conn *websocket.Conn, cancel context.CancelFunc)
func (*StandardStream) Reconnect ¶ added in v1.17.0
func (s *StandardStream) Reconnect()
func (*StandardStream) SetConn ¶ added in v1.23.0
func (s *StandardStream) SetConn(ctx context.Context, conn *websocket.Conn) (context.Context, context.CancelFunc)
func (*StandardStream) SetDispatcher ¶ added in v1.23.0
func (s *StandardStream) SetDispatcher(dispatcher Dispatcher)
func (*StandardStream) SetEndpointCreator ¶ added in v1.23.0
func (s *StandardStream) SetEndpointCreator(creator EndpointCreator)
func (*StandardStream) SetParser ¶ added in v1.23.0
func (s *StandardStream) SetParser(parser Parser)
func (*StandardStream) SetPublicOnly ¶ added in v1.21.0
func (s *StandardStream) SetPublicOnly()
func (*StandardStream) Subscribe ¶
func (s *StandardStream) Subscribe(channel Channel, symbol string, options SubscribeOptions)
type StandardStreamEmitter ¶ added in v1.35.0
type StandardStreamEmitter interface { Stream EmitStart() EmitConnect() EmitDisconnect() EmitTradeUpdate(Trade) EmitOrderUpdate(Order) EmitBalanceSnapshot(BalanceMap) EmitBalanceUpdate(BalanceMap) EmitKLineClosed(KLine) EmitKLine(KLine) EmitBookUpdate(SliceOrderBook) EmitBookTickerUpdate(BookTicker) EmitBookSnapshot(SliceOrderBook) EmitMarketTrade(Trade) EmitAggTrade(Trade) EmitFuturesPositionUpdate(FuturesPositionMap) EmitFuturesPositionSnapshot(FuturesPositionMap) }
type StandardStreamEventHub ¶
type StandardStreamEventHub interface { OnStart(cb func()) OnConnect(cb func()) OnDisconnect(cb func()) OnTradeUpdate(cb func(trade Trade)) OnOrderUpdate(cb func(order Order)) OnBalanceSnapshot(cb func(balances BalanceMap)) OnBalanceUpdate(cb func(balances BalanceMap)) OnKLineClosed(cb func(kline KLine)) OnKLine(cb func(kline KLine)) OnBookUpdate(cb func(book SliceOrderBook)) OnBookTickerUpdate(cb func(bookTicker BookTicker)) OnBookSnapshot(cb func(book SliceOrderBook)) OnMarketTrade(cb func(trade Trade)) OnAggTrade(cb func(trade Trade)) OnFuturesPositionUpdate(cb func(futuresPositions FuturesPositionMap)) OnFuturesPositionSnapshot(cb func(futuresPositions FuturesPositionMap)) }
type StrategyStatus ¶ added in v1.29.0
type StrategyStatus string
StrategyStatus define strategy status
const ( StrategyStatusRunning StrategyStatus = "RUNNING" StrategyStatusStopped StrategyStatus = "STOPPED" StrategyStatusUnknown StrategyStatus = "UNKNOWN" )
type Stream ¶
type Stream interface { StandardStreamEventHub Subscribe(channel Channel, symbol string, options SubscribeOptions) GetSubscriptions() []Subscription SetPublicOnly() GetPublicOnly() bool Connect(ctx context.Context) error Close() error }
type StreamOrderBook ¶
type StreamOrderBook struct { *MutexOrderBook C sigchan.Chan // contains filtered or unexported fields }
StreamOrderBook receives streaming data from websocket connection and update the order book with mutex lock, so you can safely access it.
func NewStreamBook ¶
func NewStreamBook(symbol string) *StreamOrderBook
func (*StreamOrderBook) BindStream ¶
func (sb *StreamOrderBook) BindStream(stream Stream)
func (*StreamOrderBook) EmitSnapshot ¶ added in v1.39.0
func (sb *StreamOrderBook) EmitSnapshot(snapshot SliceOrderBook)
func (*StreamOrderBook) EmitUpdate ¶ added in v1.39.0
func (sb *StreamOrderBook) EmitUpdate(update SliceOrderBook)
func (*StreamOrderBook) OnSnapshot ¶ added in v1.39.0
func (sb *StreamOrderBook) OnSnapshot(cb func(snapshot SliceOrderBook))
func (*StreamOrderBook) OnUpdate ¶ added in v1.39.0
func (sb *StreamOrderBook) OnUpdate(cb func(update SliceOrderBook))
type SubmitOrder ¶
type SubmitOrder struct { ClientOrderID string `json:"clientOrderID" db:"client_order_id"` Symbol string `json:"symbol" db:"symbol"` Side SideType `json:"side" db:"side"` Type OrderType `json:"orderType" db:"order_type"` Quantity fixedpoint.Value `json:"quantity" db:"quantity"` Price fixedpoint.Value `json:"price" db:"price"` // AveragePrice is only used in back-test currently AveragePrice fixedpoint.Value `json:"averagePrice"` StopPrice fixedpoint.Value `json:"stopPrice,omitempty" db:"stop_price"` Market Market `json:"-" db:"-"` TimeInForce TimeInForce `json:"timeInForce,omitempty" db:"time_in_force"` // GTC, IOC, FOK GroupID uint32 `json:"groupID,omitempty"` MarginSideEffect MarginOrderSideEffectType `json:"marginSideEffect,omitempty"` // AUTO_REPAY = repay, MARGIN_BUY = borrow, defaults to NO_SIDE_EFFECT ReduceOnly bool `json:"reduceOnly" db:"reduce_only"` ClosePosition bool `json:"closePosition" db:"close_position"` Tag string `json:"tag" db:"-"` }
func (*SubmitOrder) In ¶ added in v1.39.0
func (o *SubmitOrder) In() (fixedpoint.Value, string)
func (*SubmitOrder) Out ¶ added in v1.39.0
func (o *SubmitOrder) Out() (fixedpoint.Value, string)
func (*SubmitOrder) PlainText ¶ added in v1.4.0
func (o *SubmitOrder) PlainText() string
func (*SubmitOrder) SlackAttachment ¶
func (o *SubmitOrder) SlackAttachment() slack.Attachment
func (*SubmitOrder) String ¶
func (o *SubmitOrder) String() string
type SubscribeOptions ¶
type SubscribeOptions struct { // TODO: change to Interval type later Interval Interval `json:"interval,omitempty"` Depth Depth `json:"depth,omitempty"` Speed Speed `json:"speed,omitempty"` }
SubscribeOptions provides the standard stream options
func (SubscribeOptions) String ¶
func (o SubscribeOptions) String() string
type Subscription ¶
type Subscription struct { Symbol string `json:"symbol"` Channel Channel `json:"channel"` Options SubscribeOptions `json:"options"` }
type SyncOrderMap ¶
func NewSyncOrderMap ¶
func NewSyncOrderMap() *SyncOrderMap
func (*SyncOrderMap) Add ¶
func (m *SyncOrderMap) Add(o Order)
func (*SyncOrderMap) AnyFilled ¶
func (m *SyncOrderMap) AnyFilled() (order Order, ok bool)
AnyFilled find any order is filled and stop iterating the order map
func (*SyncOrderMap) Backup ¶ added in v1.14.0
func (m *SyncOrderMap) Backup() (orders []SubmitOrder)
func (*SyncOrderMap) Canceled ¶
func (m *SyncOrderMap) Canceled() OrderSlice
func (*SyncOrderMap) Exists ¶
func (m *SyncOrderMap) Exists(orderID uint64) (exists bool)
func (*SyncOrderMap) Filled ¶
func (m *SyncOrderMap) Filled() OrderSlice
func (*SyncOrderMap) FindByStatus ¶
func (m *SyncOrderMap) FindByStatus(status OrderStatus) OrderSlice
func (*SyncOrderMap) IDs ¶
func (m *SyncOrderMap) IDs() (ids []uint64)
func (*SyncOrderMap) Len ¶
func (m *SyncOrderMap) Len() int
func (*SyncOrderMap) Lookup ¶ added in v1.43.0
func (m *SyncOrderMap) Lookup(f func(o Order) bool) *Order
func (*SyncOrderMap) Orders ¶
func (m *SyncOrderMap) Orders() (slice OrderSlice)
func (*SyncOrderMap) Remove ¶ added in v1.1.0
func (m *SyncOrderMap) Remove(orderID uint64) (exists bool)
func (*SyncOrderMap) Update ¶
func (m *SyncOrderMap) Update(o Order)
type Ticker ¶ added in v1.11.0
type Ticker struct { Time time.Time Volume fixedpoint.Value // `volume` from Max & binance Last fixedpoint.Value // `last` from Max, `lastPrice` from binance Open fixedpoint.Value // `open` from Max, `openPrice` from binance High fixedpoint.Value // `high` from Max, `highPrice` from binance Low fixedpoint.Value // `low` from Max, `lowPrice` from binance Buy fixedpoint.Value // `buy` from Max, `bidPrice` from binance Sell fixedpoint.Value // `sell` from Max, `askPrice` from binance }
type Time ¶ added in v1.17.0
Time type implements the driver value for sqlite
func NewTimeFromUnix ¶ added in v1.21.0
func (Time) MarshalJSON ¶ added in v1.17.0
func (*Time) UnmarshalJSON ¶ added in v1.17.0
type TimeInForce ¶ added in v1.28.0
type TimeInForce string
var ( TimeInForceGTC TimeInForce = "GTC" TimeInForceIOC TimeInForce = "IOC" TimeInForceFOK TimeInForce = "FOK" )
type Timestamp ¶ added in v1.31.0
Timestamp is used for parsing unix timestamp (seconds)
func (Timestamp) MarshalJSON ¶ added in v1.31.0
func (*Timestamp) UnmarshalJSON ¶ added in v1.31.0
type Trade ¶
type Trade struct { // GID is the global ID GID int64 `json:"gid" db:"gid"` // ID is the source trade ID ID uint64 `json:"id" db:"id"` OrderID uint64 `json:"orderID" db:"order_id"` Exchange ExchangeName `json:"exchange" db:"exchange"` Price fixedpoint.Value `json:"price" db:"price"` Quantity fixedpoint.Value `json:"quantity" db:"quantity"` QuoteQuantity fixedpoint.Value `json:"quoteQuantity" db:"quote_quantity"` Symbol string `json:"symbol" db:"symbol"` Side SideType `json:"side" db:"side"` IsBuyer bool `json:"isBuyer" db:"is_buyer"` IsMaker bool `json:"isMaker" db:"is_maker"` Time Time `json:"tradedAt" db:"traded_at"` Fee fixedpoint.Value `json:"fee" db:"fee"` FeeCurrency string `json:"feeCurrency" db:"fee_currency"` IsMargin bool `json:"isMargin" db:"is_margin"` IsFutures bool `json:"isFutures" db:"is_futures"` IsIsolated bool `json:"isIsolated" db:"is_isolated"` // StrategyID is the strategy that execute this trade StrategyID sql.NullString `json:"strategyID" db:"strategy"` // PnL is the profit and loss value of the executed trade PnL sql.NullFloat64 `json:"pnl" db:"pnl"` }
func SortTradesAscending ¶ added in v1.30.1
func (Trade) CsvRecords ¶ added in v1.33.0
func (Trade) PositionChange ¶ added in v1.21.0
func (trade Trade) PositionChange() fixedpoint.Value
func (Trade) SlackAttachment ¶
func (trade Trade) SlackAttachment() slack.Attachment
type TradeKey ¶ added in v1.11.1
type TradeKey struct { Exchange ExchangeName ID uint64 Side SideType }
type TradeQueryOptions ¶
type TradeSlice ¶ added in v1.11.0
type TradeSlice struct { Trades []Trade // contains filtered or unexported fields }
func (*TradeSlice) Append ¶ added in v1.11.0
func (s *TradeSlice) Append(t Trade)
func (*TradeSlice) Copy ¶ added in v1.11.0
func (s *TradeSlice) Copy() []Trade
func (*TradeSlice) Reverse ¶ added in v1.13.0
func (s *TradeSlice) Reverse()
type TradeStats ¶ added in v1.36.0
type TradeStats struct { Symbol string `json:"symbol,omitempty"` WinningRatio fixedpoint.Value `json:"winningRatio" yaml:"winningRatio"` NumOfLossTrade int `json:"numOfLossTrade" yaml:"numOfLossTrade"` NumOfProfitTrade int `json:"numOfProfitTrade" yaml:"numOfProfitTrade"` GrossProfit fixedpoint.Value `json:"grossProfit" yaml:"grossProfit"` GrossLoss fixedpoint.Value `json:"grossLoss" yaml:"grossLoss"` Profits []fixedpoint.Value `json:"profits,omitempty" yaml:"profits,omitempty"` Losses []fixedpoint.Value `json:"losses,omitempty" yaml:"losses,omitempty"` LargestProfitTrade fixedpoint.Value `json:"largestProfitTrade,omitempty" yaml:"largestProfitTrade"` LargestLossTrade fixedpoint.Value `json:"largestLossTrade,omitempty" yaml:"largestLossTrade"` AverageProfitTrade fixedpoint.Value `json:"averageProfitTrade" yaml:"averageProfitTrade"` AverageLossTrade fixedpoint.Value `json:"averageLossTrade" yaml:"averageLossTrade"` ProfitFactor fixedpoint.Value `json:"profitFactor" yaml:"profitFactor"` TotalNetProfit fixedpoint.Value `json:"totalNetProfit" yaml:"totalNetProfit"` IntervalProfits map[Interval]*IntervalProfitCollector `json:"intervalProfits,omitempty" yaml:"intervalProfits,omitempty"` // MaximumConsecutiveWins - (counter) the longest series of winning trades MaximumConsecutiveWins int `json:"maximumConsecutiveWins" yaml:"maximumConsecutiveWins"` // MaximumConsecutiveLosses - (counter) the longest series of losing trades MaximumConsecutiveLosses int `json:"maximumConsecutiveLosses" yaml:"maximumConsecutiveLosses"` // MaximumConsecutiveProfit - ($) the longest series of winning trades and their total profit; MaximumConsecutiveProfit fixedpoint.Value `json:"maximumConsecutiveProfit" yaml:"maximumConsecutiveProfit"` // MaximumConsecutiveLoss - ($) the longest series of losing trades and their total loss; MaximumConsecutiveLoss fixedpoint.Value `json:"maximumConsecutiveLoss" yaml:"maximumConsecutiveLoss"` // contains filtered or unexported fields }
TODO: Add more stats from the reference: See https://www.metatrader5.com/en/terminal/help/algotrading/testing_report
func NewTradeStats ¶ added in v1.36.0
func NewTradeStats(symbol string) *TradeStats
func (*TradeStats) Add ¶ added in v1.36.0
func (s *TradeStats) Add(profit *Profit)
func (*TradeStats) BriefString ¶ added in v1.38.0
func (s *TradeStats) BriefString() string
Output TradeStats without Profits and Losses
func (*TradeStats) CsvHeader ¶ added in v1.40.0
func (s *TradeStats) CsvHeader() []string
func (*TradeStats) CsvRecords ¶ added in v1.40.0
func (s *TradeStats) CsvRecords() [][]string
func (*TradeStats) Recalculate ¶ added in v1.40.3
func (s *TradeStats) Recalculate()
Recalculate the trade stats fields from the orderProfits this is for live-trading, one order may have many trades, and we need to merge them.
func (*TradeStats) SetIntervalProfitCollector ¶ added in v1.38.0
func (s *TradeStats) SetIntervalProfitCollector(c *IntervalProfitCollector)
Set IntervalProfitCollector explicitly to enable the sharpe ratio calculation
func (*TradeStats) String ¶ added in v1.36.0
func (s *TradeStats) String() string
type UpdatableSeries ¶ added in v1.35.0
type UpdatableSeriesExtend ¶ added in v1.36.0
type UpdatableSeriesExtend interface { SeriesExtend Update(float64) }
func Clone ¶ added in v1.38.0
func Clone(u UpdatableSeriesExtend) UpdatableSeriesExtend
func TestUpdate ¶ added in v1.38.0
func TestUpdate(u UpdatableSeriesExtend, input float64) UpdatableSeriesExtend
type ValueMap ¶ added in v1.35.0
type ValueMap map[string]fixedpoint.Value
func (ValueMap) AddScalar ¶ added in v1.35.0
func (m ValueMap) AddScalar(x fixedpoint.Value) ValueMap
func (ValueMap) DivScalar ¶ added in v1.35.0
func (m ValueMap) DivScalar(x fixedpoint.Value) ValueMap
func (ValueMap) MulScalar ¶ added in v1.35.0
func (m ValueMap) MulScalar(x fixedpoint.Value) ValueMap
func (ValueMap) SubScalar ¶ added in v1.35.0
func (m ValueMap) SubScalar(x fixedpoint.Value) ValueMap
func (ValueMap) Sum ¶ added in v1.35.0
func (m ValueMap) Sum() fixedpoint.Value
type Withdraw ¶
type Withdraw struct { GID int64 `json:"gid" db:"gid"` Exchange ExchangeName `json:"exchange" db:"exchange"` Asset string `json:"asset" db:"asset"` Amount fixedpoint.Value `json:"amount" db:"amount"` Address string `json:"address" db:"address"` AddressTag string `json:"addressTag"` Status string `json:"status"` TransactionID string `json:"transactionID" db:"txn_id"` TransactionFee fixedpoint.Value `json:"transactionFee" db:"txn_fee"` TransactionFeeCurrency string `json:"transactionFeeCurrency" db:"txn_fee_currency"` WithdrawOrderID string `json:"withdrawOrderId"` ApplyTime Time `json:"applyTime" db:"time"` Network string `json:"network" db:"network"` }
func (Withdraw) EffectiveTime ¶
type WithdrawalOptions ¶ added in v1.17.0
type ZeroAssetError ¶ added in v1.42.0
type ZeroAssetError struct {
// contains filtered or unexported fields
}
func NewZeroAssetError ¶ added in v1.42.0
func NewZeroAssetError(e error) ZeroAssetError
Source Files ¶
- account.go
- asset.go
- backtest_stream.go
- balance.go
- bollinger.go
- bookticker.go
- channel.go
- csv.go
- currencies.go
- deposit.go
- error.go
- exchange.go
- exchange_icon.go
- filter.go
- float_map.go
- fundingrate.go
- heikinashi_stream.go
- indicator.go
- instance.go
- interval.go
- json.go
- kline.go
- margin.go
- market.go
- omega.go
- order.go
- orderbook.go
- ordermap.go
- pca.go
- plaintext.go
- position.go
- premiumindex.go
- price_volume_heartbeat.go
- price_volume_slice.go
- profit.go
- rbtorderbook.go
- rbtorderbook_callbacks.go
- rbtree.go
- rbtree_node.go
- reward.go
- seriesbase_imp.go
- sharpe.go
- side.go
- sliceorderbook.go
- sliceorderbook_callbacks.go
- sort.go
- sortino.go
- standardstream_callbacks.go
- strategy_status.go
- stream.go
- streamorderbook_callbacks.go
- ticker.go
- time.go
- trade.go
- trade_stats.go
- value_map.go
- withdraw.go