import "github.com/cinar/indicator/v2/strategy/volume"
Package volume contains the volume strategy functions.
This package belongs to the Indicator project. Indicator is a Golang module that supplies a variety of technical indicators, strategies, and a backtesting framework for analysis.
Copyright (c) 2021-2024 Onur Cinar.
The source code is provided under GNU AGPLv3 License.
https://github.com/cinar/indicator
The information provided on this project is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security.
- Constants
- func AllStrategies() []strategy.Strategy
- type ChaikinMoneyFlowStrategy
- func NewChaikinMoneyFlowStrategy() *ChaikinMoneyFlowStrategy
- func NewChaikinMoneyFlowStrategyWith(period int) *ChaikinMoneyFlowStrategy
- func (c *ChaikinMoneyFlowStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
- func (c *ChaikinMoneyFlowStrategy) Name() string
- func (c *ChaikinMoneyFlowStrategy) Report(snapshots <-chan *asset.Snapshot) *helper.Report
- type EaseOfMovementStrategy
- func NewEaseOfMovementStrategy() *EaseOfMovementStrategy
- func NewEaseOfMovementStrategyWith(period int) *EaseOfMovementStrategy
- func (e *EaseOfMovementStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
- func (e *EaseOfMovementStrategy) Name() string
- func (e *EaseOfMovementStrategy) Report(snapshots <-chan *asset.Snapshot) *helper.Report
- type ForceIndexStrategy
- func NewForceIndexStrategy() *ForceIndexStrategy
- func NewForceIndexStrategyWith(period int) *ForceIndexStrategy
- func (f *ForceIndexStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
- func (f *ForceIndexStrategy) Name() string
- func (f *ForceIndexStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
- type MoneyFlowIndexStrategy
- func NewMoneyFlowIndexStrategy() *MoneyFlowIndexStrategy
- func NewMoneyFlowIndexStrategyWith(sellAt, buyAt float64) *MoneyFlowIndexStrategy
- func (m *MoneyFlowIndexStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
- func (m *MoneyFlowIndexStrategy) Name() string
- func (m *MoneyFlowIndexStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
- type NegativeVolumeIndexStrategy
- func NewNegativeVolumeIndexStrategy() *NegativeVolumeIndexStrategy
- func NewNegativeVolumeIndexStrategyWith(emaPeriod int) *NegativeVolumeIndexStrategy
- func (n *NegativeVolumeIndexStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
- func (n *NegativeVolumeIndexStrategy) Name() string
- func (n *NegativeVolumeIndexStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
- type VolumeWeightedAveragePriceStrategy
- func NewVolumeWeightedAveragePriceStrategy() *VolumeWeightedAveragePriceStrategy
- func NewVolumeWeightedAveragePriceStrategyWith(period int) *VolumeWeightedAveragePriceStrategy
- func (v *VolumeWeightedAveragePriceStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
- func (v *VolumeWeightedAveragePriceStrategy) Name() string
- func (v *VolumeWeightedAveragePriceStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
const (
// DefaultMoneyFlowIndexStrategySellAt is the default sell at of 80.
DefaultMoneyFlowIndexStrategySellAt = 80
// DefaultMoneyFlowIndexStrategyBuyAt is the default buy at of 20.
DefaultMoneyFlowIndexStrategyBuyAt = 20
)
const (
// DefaultNegativeVolumeIndexStrategyEmaPeriod is the default EMA period of 255.
DefaultNegativeVolumeIndexStrategyEmaPeriod = 255
)
func AllStrategies
func AllStrategies() []strategy.Strategy
AllStrategies returns a slice containing references to all available volume strategies.
ChaikinMoneyFlowStrategy represents the configuration parameters for calculating the Chaikin Money Flow strategy. Recommends a Buy action when it crosses above 0, and recommends a Sell action when it crosses below 0.
type ChaikinMoneyFlowStrategy struct {
// ChaikinMoneyFlow is the Chaikin Money Flow indicator instance.
ChaikinMoneyFlow *volume.Cmf[float64]
}
func NewChaikinMoneyFlowStrategy() *ChaikinMoneyFlowStrategy
NewChaikinMoneyFlowStrategy function initializes a new Chaikin Money Flow strategy instance with the default parameters.
func NewChaikinMoneyFlowStrategyWith(period int) *ChaikinMoneyFlowStrategy
NewChaikinMoneyFlowStrategyWith function initializes a new Chaikin Money Flow strategy instance with the given parameters.
func (*ChaikinMoneyFlowStrategy) Compute
func (c *ChaikinMoneyFlowStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
Compute function processes the provided asset snapshots and generates a stream of actionable recommendations.
func (*ChaikinMoneyFlowStrategy) Name
func (c *ChaikinMoneyFlowStrategy) Name() string
Name function returns the name of the strategy.
func (*ChaikinMoneyFlowStrategy) Report
func (c *ChaikinMoneyFlowStrategy) Report(snapshots <-chan *asset.Snapshot) *helper.Report
Report function processes the provided asset snapshots and generates a report annotated with the recommended actions.
EaseOfMovementStrategy represents the configuration parameters for calculating the Ease of Movement strategy. Recommends a Buy action when it crosses above 0, and recommends a Sell action when it crosses below 0.
type EaseOfMovementStrategy struct {
// EaseOfMovement is the Ease of Movement indicator instance.
EaseOfMovement *volume.Emv[float64]
}
func NewEaseOfMovementStrategy() *EaseOfMovementStrategy
NewEaseOfMovementStrategy function initializes a new Ease of Movement strategy instance with the default parameters.
func NewEaseOfMovementStrategyWith(period int) *EaseOfMovementStrategy
NewEaseOfMovementStrategyWith function initializes a new Ease of Movement strategy instance with the given parameters.
func (*EaseOfMovementStrategy) Compute
func (e *EaseOfMovementStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
Compute function processes the provided asset snapshots and generates a stream of actionable recommendations.
func (*EaseOfMovementStrategy) Name
func (e *EaseOfMovementStrategy) Name() string
Name function returns the name of the strategy.
func (*EaseOfMovementStrategy) Report
func (e *EaseOfMovementStrategy) Report(snapshots <-chan *asset.Snapshot) *helper.Report
Report function processes the provided asset snapshots and generates a report annotated with the recommended actions.
type ForceIndexStrategy
ForceIndexStrategy represents the configuration parameters for calculating the Force Index strategy. It recommends a Buy action when it crosses above zero, and a Sell action when it crosses below zero.
type ForceIndexStrategy struct {
// ForceIndex is the Force Index instance.
ForceIndex *volume.Fi[float64]
}
func NewForceIndexStrategy() *ForceIndexStrategy
NewForceIndexStrategy function initializes a new Force Index strategy instance with the default parameters.
func NewForceIndexStrategyWith(period int) *ForceIndexStrategy
NewForceIndexStrategyWith function initializes a new Force Index strategy instance with the given parameters.
func (*ForceIndexStrategy) Compute
func (f *ForceIndexStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
Compute processes the provided asset snapshots and generates a stream of actionable recommendations.
func (*ForceIndexStrategy) Name
func (f *ForceIndexStrategy) Name() string
Name returns the name of the strategy.
func (*ForceIndexStrategy) Report
func (f *ForceIndexStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
Report processes the provided asset snapshots and generates a report annotated with the recommended actions.
MoneyFlowIndexStrategy represents the configuration parameters for calculating the Money Flow Index strategy. Recommends a Sell action when it crosses over 80, and recommends a Buy action when it crosses below 20.
type MoneyFlowIndexStrategy struct {
// MoneyFlowIndex is the Money Flow Index indicator instance.
MoneyFlowIndex *volume.Mfi[float64]
// SellAt is the sell at value.
SellAt float64
// BuyAt is the buy at value.
BuyAt float64
}
func NewMoneyFlowIndexStrategy() *MoneyFlowIndexStrategy
NewMoneyFlowIndexStrategy function initializes a new Money Flow Index strategy instance with the default parameters.
func NewMoneyFlowIndexStrategyWith(sellAt, buyAt float64) *MoneyFlowIndexStrategy
NewMoneyFlowIndexStrategyWith function initializes a new Money Flow Index strategy instance with the given parameters.
func (*MoneyFlowIndexStrategy) Compute
func (m *MoneyFlowIndexStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
Compute processes the provided asset snapshots and generates a stream of actionable recommendations.
func (*MoneyFlowIndexStrategy) Name
func (m *MoneyFlowIndexStrategy) Name() string
Name returns the name of the strategy.
func (*MoneyFlowIndexStrategy) Report
func (m *MoneyFlowIndexStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
Report processes the provided asset snapshots and generates a report annotated with the recommended actions.
NegativeVolumeIndexStrategy represents the configuration parameters for calculating the Negative Volume Index strategy. Recommends a Buy action when it crosses below its EMA, recommends a Sell action when it crosses above its EMA, and recommends a Hold action otherwise.
type NegativeVolumeIndexStrategy struct {
// NegativeVolumeIndex is the Negative Volume Index indicator instance.
NegativeVolumeIndex *volume.Nvi[float64]
// NegativeVolumeIndexEma is the Negative Volume Index EMA instance.
NegativeVolumeIndexEma *trend.Ema[float64]
}
func NewNegativeVolumeIndexStrategy() *NegativeVolumeIndexStrategy
NewNegativeVolumeIndexStrategy function initializes a new Negative Volume Index strategy instance with the default parameters.
func NewNegativeVolumeIndexStrategyWith(emaPeriod int) *NegativeVolumeIndexStrategy
NewNegativeVolumeIndexStrategyWith function initializes a new Negative Volume Index strategy instance with the given parameters.
func (*NegativeVolumeIndexStrategy) Compute
func (n *NegativeVolumeIndexStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
Compute processes the provided asset snapshots and generates a stream of actionable recommendations.
func (*NegativeVolumeIndexStrategy) Name
func (n *NegativeVolumeIndexStrategy) Name() string
Name returns the name of the strategy.
func (*NegativeVolumeIndexStrategy) Report
func (n *NegativeVolumeIndexStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
Report processes the provided asset snapshots and generates a report annotated with the recommended actions.
VolumeWeightedAveragePriceStrategy represents the configuration parameters for calculating the Volume Weighted Average Price strategy. Recommends a Buy action when the closing crosses below the VWAP, recommends a Sell action when the closing crosses above the VWAP, and recommends a Hold action otherwise.
type VolumeWeightedAveragePriceStrategy struct {
// VolumeWeightedAveragePrice is the Volume Weighted Average Price indicator instance.
VolumeWeightedAveragePrice *volume.Vwap[float64]
}
func NewVolumeWeightedAveragePriceStrategy() *VolumeWeightedAveragePriceStrategy
NewVolumeWeightedAveragePriceStrategy function initializes a new Volume Weighted Average Price strategy instance with the default parameters.
func NewVolumeWeightedAveragePriceStrategyWith(period int) *VolumeWeightedAveragePriceStrategy
NewVolumeWeightedAveragePriceStrategyWith function initializes a new Volume Weighted Average Price strategy instance with the given parameters.
func (*VolumeWeightedAveragePriceStrategy) Compute
func (v *VolumeWeightedAveragePriceStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy.Action
Compute processes the provided asset snapshots and generates a stream of actionable recommendations.
func (*VolumeWeightedAveragePriceStrategy) Name
func (v *VolumeWeightedAveragePriceStrategy) Name() string
Name returns the name of the strategy.
func (*VolumeWeightedAveragePriceStrategy) Report
func (v *VolumeWeightedAveragePriceStrategy) Report(c <-chan *asset.Snapshot) *helper.Report
Report processes the provided asset snapshots and generates a report annotated with the recommended actions.
Generated by gomarkdoc