Versions in this module Expand all Collapse all v1 v1.0.0 Jul 18, 2021 Changes in this version + var ErrActionNotValid = errors.New("action not valid") + var ErrAlreadyClosed = errors.New("already closed") + var ErrSendResultTimeout = errors.New("send result timeout") + var ErrUnknownAction = errors.New("unknown action") + type Actions <-chan interface + type Broker interface + ChangeConditionalOrder func(ctx context.Context, action ChangeConditionalOrderAction) (Position, error) + ClosePosition func(ctx context.Context, action ClosePositionAction) (Position, error) + OpenPosition func(ctx context.Context, action OpenPositionAction) (Position, PositionClosed, error) + type ChangeConditionalOrderAction struct + PositionID PositionID + StopLoss float64 + TakeProfit float64 + func NewChangeConditionalOrderAction(positionID PositionID, stopLoss, takeProfit float64) ChangeConditionalOrderAction + func (a *ChangeConditionalOrderAction) Result(ctx context.Context) (ChangeConditionalOrderActionResult, error) + type ChangeConditionalOrderActionResult struct + Position Position + type ClosePositionAction struct + PositionID PositionID + func NewClosePositionAction(positionID PositionID) ClosePositionAction + func (a *ClosePositionAction) Result(ctx context.Context) (ClosePositionActionResult, error) + type ClosePositionActionResult struct + Position Position + type Engine struct + func New(strategy Strategy, broker Broker) *Engine + func (e *Engine) OnConditionalOrderChanged(f func(position Position)) *Engine + func (e *Engine) OnPositionClosed(f func(position Position)) *Engine + func (e *Engine) OnPositionOpened(f func(position Position)) *Engine + func (e *Engine) Run(ctx context.Context) (err error) + type MockBroker struct + func (_m *MockBroker) ChangeConditionalOrder(ctx context.Context, action ChangeConditionalOrderAction) (Position, error) + func (_m *MockBroker) ClosePosition(ctx context.Context, action ClosePositionAction) (Position, error) + func (_m *MockBroker) OpenPosition(ctx context.Context, action OpenPositionAction) (Position, PositionClosed, error) + type MockStrategy struct + func (_m *MockStrategy) Actions() Actions + func (_m *MockStrategy) Errors() <-chan error + func (_m *MockStrategy) Run(ctx context.Context) + type OpenPositionAction struct + StopLossIndent float64 + TakeProfitIndent float64 + Type PositionType + func NewOpenPositionAction(positionType PositionType, stopLossIndent, takeProfitIndent float64) OpenPositionAction + func (a *OpenPositionAction) IsValid() bool + func (a *OpenPositionAction) Result(ctx context.Context) (OpenPositionActionResult, error) + type OpenPositionActionResult struct + Closed PositionClosed + Position Position + type Position struct + ClosePrice float64 + CloseTime time.Time + ID PositionID + OpenPrice float64 + OpenTime time.Time + StopLoss float64 + TakeProfit float64 + Type PositionType + func NewPosition(action OpenPositionAction, openTime time.Time, openPrice float64) (*Position, error) + func (p *Position) Close(closeTime time.Time, closePrice float64) (err error) + func (p *Position) Closed() <-chan struct{} + func (p *Position) Duration() time.Duration + func (p *Position) Extra(key interface{}) interface{} + func (p *Position) IsLong() bool + func (p *Position) IsShort() bool + func (p *Position) Profit() float64 + func (p *Position) ProfitByPrice(price float64) float64 + func (p *Position) RangeExtra(f func(key interface{}, val interface{})) + func (p *Position) SetExtra(key interface{}, val interface{}) *Position + type PositionClosed <-chan Position + type PositionID int64 + type PositionType int + const Long + const Short + func (t PositionType) Multiplier() float64 + type Strategy interface + Actions func() Actions + Errors func() <-chan error + Run func(ctx context.Context) Other modules containing this package github.com/evsamsonov/trengin/v2