diff --git a/strategy/and_strategy.go b/strategy/and_strategy.go index aa0b7df..133ee5f 100644 --- a/strategy/and_strategy.go +++ b/strategy/and_strategy.go @@ -64,7 +64,7 @@ func (a *AndStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan Action { } }() - return NormalizeActions(result) + return result } // Report processes the provided asset snapshots and generates a report annotated with the recommended actions. diff --git a/strategy/compound/README.md b/strategy/compound/README.md index b6d1c74..ea041d2 100644 --- a/strategy/compound/README.md +++ b/strategy/compound/README.md @@ -111,7 +111,7 @@ func (m *MacdRsiStrategy) Name() string Name returns the name of the strategy. -### func \(\*MacdRsiStrategy\) [Report]() +### func \(\*MacdRsiStrategy\) [Report]() ```go func (m *MacdRsiStrategy) Report(c <-chan *asset.Snapshot) *helper.Report diff --git a/strategy/compound/macd_rsi_strategy.go b/strategy/compound/macd_rsi_strategy.go index 4ea9de4..7f90e58 100644 --- a/strategy/compound/macd_rsi_strategy.go +++ b/strategy/compound/macd_rsi_strategy.go @@ -77,8 +77,6 @@ func (m *MacdRsiStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strat return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - return actions } diff --git a/strategy/compound/testdata/macd_rsi_strategy.csv b/strategy/compound/testdata/macd_rsi_strategy.csv index dcedd8e..2b47280 100644 --- a/strategy/compound/testdata/macd_rsi_strategy.csv +++ b/strategy/compound/testdata/macd_rsi_strategy.csv @@ -50,48 +50,48 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -105,110 +105,110 @@ Action 0 0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -230,23 +230,23 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/decorator/testdata/inverse_strategy.csv b/strategy/decorator/testdata/inverse_strategy.csv index 7c37c57..341a548 100644 --- a/strategy/decorator/testdata/inverse_strategy.csv +++ b/strategy/decorator/testdata/inverse_strategy.csv @@ -32,20 +32,20 @@ Action 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 0 0 0 @@ -62,6 +62,7 @@ Action 0 0 0 +-1 0 0 0 @@ -78,12 +79,11 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -105,8 +105,27 @@ Action 0 0 1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -121,6 +140,11 @@ Action 0 0 0 +1 +1 +1 +1 +1 0 0 0 @@ -129,7 +153,12 @@ Action 0 0 0 +1 +1 0 +1 +1 +1 0 0 0 @@ -139,12 +168,25 @@ Action 0 0 0 +1 0 0 0 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -159,54 +201,12 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 0 0 0 @@ -230,14 +230,14 @@ Action 0 0 -1 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 diff --git a/strategy/decorator/testdata/stop_loss_strategy.csv b/strategy/decorator/testdata/stop_loss_strategy.csv index d9a8acd..a965b35 100644 --- a/strategy/decorator/testdata/stop_loss_strategy.csv +++ b/strategy/decorator/testdata/stop_loss_strategy.csv @@ -32,13 +32,13 @@ Action 0 0 -1 +1 0 0 0 0 0 -0 -0 +-1 0 0 0 @@ -67,10 +67,10 @@ Action 0 0 -1 +1 0 0 -0 -0 +-1 0 0 0 @@ -119,6 +119,7 @@ Action 1 0 -1 +1 0 0 0 @@ -144,8 +145,7 @@ Action 0 0 0 -0 -0 +-1 0 0 0 @@ -228,7 +228,7 @@ Action 0 0 -1 -0 +1 0 0 0 diff --git a/strategy/majority_strategy.go b/strategy/majority_strategy.go index fdd9a3e..b583acf 100644 --- a/strategy/majority_strategy.go +++ b/strategy/majority_strategy.go @@ -63,7 +63,7 @@ func (a *MajorityStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan Acti } }() - return NormalizeActions(result) + return result } // Report processes the provided asset snapshots and generates a report annotated with the recommended actions. diff --git a/strategy/momentum/README.md b/strategy/momentum/README.md index 6383d26..abfe838 100644 --- a/strategy/momentum/README.md +++ b/strategy/momentum/README.md @@ -153,7 +153,7 @@ func (*AwesomeOscillatorStrategy) Name() string Name returns the name of the strategy. -### func \(\*AwesomeOscillatorStrategy\) [Report]() +### func \(\*AwesomeOscillatorStrategy\) [Report]() ```go func (a *AwesomeOscillatorStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -281,7 +281,7 @@ func (s *StochasticRsiStrategy) Name() string Name returns the name of the strategy. -### func \(\*StochasticRsiStrategy\) [Report]() +### func \(\*StochasticRsiStrategy\) [Report]() ```go func (s *StochasticRsiStrategy) Report(c <-chan *asset.Snapshot) *helper.Report diff --git a/strategy/momentum/awesome_oscillator_strategy.go b/strategy/momentum/awesome_oscillator_strategy.go index 30614e9..14c2563 100644 --- a/strategy/momentum/awesome_oscillator_strategy.go +++ b/strategy/momentum/awesome_oscillator_strategy.go @@ -55,8 +55,6 @@ func (a *AwesomeOscillatorStrategy) Compute(snapshots <-chan *asset.Snapshot) <- // Awesome Oscillator starts only after the idle period. actions = helper.Shift(actions, a.AwesomeOscillator.IdlePeriod(), strategy.Hold) - actions = strategy.NormalizeActions(actions) - return actions } diff --git a/strategy/momentum/stochastic_rsi_strategy.go b/strategy/momentum/stochastic_rsi_strategy.go index 940df65..82119d8 100644 --- a/strategy/momentum/stochastic_rsi_strategy.go +++ b/strategy/momentum/stochastic_rsi_strategy.go @@ -75,7 +75,6 @@ func (s *StochasticRsiStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan // Stochastic RSI starts only after the idle period. actions = helper.Shift(actions, s.StochasticRsi.IdlePeriod(), strategy.Hold) - actions = strategy.NormalizeActions(actions) return actions } diff --git a/strategy/momentum/testdata/awesome_oscillator_strategy.csv b/strategy/momentum/testdata/awesome_oscillator_strategy.csv index b1b0da0..96e1a18 100644 --- a/strategy/momentum/testdata/awesome_oscillator_strategy.csv +++ b/strategy/momentum/testdata/awesome_oscillator_strategy.csv @@ -33,220 +33,220 @@ Action 0 0 1 -0 -0 +1 +1 +-1 -1 -0 1 -0 -0 -0 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/momentum/testdata/stochastic_rsi_strategy.csv b/strategy/momentum/testdata/stochastic_rsi_strategy.csv index 0334df9..cbe9351 100644 --- a/strategy/momentum/testdata/stochastic_rsi_strategy.csv +++ b/strategy/momentum/testdata/stochastic_rsi_strategy.csv @@ -26,227 +26,227 @@ Action 0 0 0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 1 -0 -0 +1 +1 -1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 -1 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 -1 1 -1 -0 -0 -0 +-1 +-1 +-1 1 -1 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -1 1 -0 -0 -0 +1 +1 +1 +-1 -1 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -1 1 -1 -0 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 1 -1 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 1 -1 -0 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 +1 1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 1 -0 diff --git a/strategy/or_strategy.go b/strategy/or_strategy.go index 52ccd64..e1ff8c5 100644 --- a/strategy/or_strategy.go +++ b/strategy/or_strategy.go @@ -59,7 +59,7 @@ func (a *OrStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan Action { } }() - return NormalizeActions(result) + return result } // Report processes the provided asset snapshots and generates a report annotated with the recommended actions. diff --git a/strategy/split_strategy.go b/strategy/split_strategy.go index 8ba0091..d7e5c20 100644 --- a/strategy/split_strategy.go +++ b/strategy/split_strategy.go @@ -68,7 +68,7 @@ func (s *SplitStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan Action } }() - return NormalizeActions(result) + return result } // Report processes the provided asset snapshots and generates a report annotated with the recommended actions. diff --git a/strategy/testdata/and.csv b/strategy/testdata/and.csv index 229092d..4787fc5 100644 --- a/strategy/testdata/and.csv +++ b/strategy/testdata/and.csv @@ -1,252 +1,252 @@ -Action,Outcome -1,-0 -0,-0.01 -0,-0.01 -0,-0.03 -0,-0.03 -0,-0.04 -0,-0.04 -0,-0.04 -0,-0.02 -0,-0.02 -0,-0.03 -0,-0.05 -0,-0.06 -0,-0.06 -0,-0.05 -0,-0.03 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.05 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.01 -0,-0.02 -0,0 -0,-0.01 -0,-0.01 -0,0.01 -0,0 -0,-0 -0,-0.01 -0,-0.03 -0,-0.04 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.02 -0,-0.02 -0,-0.03 -0,-0.04 -0,-0.02 -0,-0.03 -0,-0.02 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.03 -0,-0.04 -0,-0.03 -0,-0.02 -0,-0.02 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.05 -0,-0.05 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.04 -0,-0.03 -0,-0.02 -0,-0.01 -0,-0.02 -0,-0.02 -0,-0.04 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.07 -0,-0.05 -0,-0.08 -0,-0.06 -0,-0.05 -0,-0.06 -0,-0.06 -0,-0.06 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.02 -0,-0.02 -0,-0.01 -0,-0 -0,0 -0,0.02 -0,0.02 -0,0.01 -0,0.02 -0,0.02 -0,0.02 -0,0.02 -0,0.01 -0,0.02 -0,0.03 -0,0.04 -0,0.02 -0,0.01 -0,0 -0,0.02 -0,0.02 -0,0.02 -0,0.01 -0,0.01 -0,0.01 -0,0.02 -0,0.02 -0,0.03 -0,0.04 -0,0.04 -0,0.03 -0,0.01 -0,0.01 -0,0 -0,0.01 -0,0.01 -0,0.01 -0,0.01 -0,0.03 -0,0.03 -0,0.05 -0,0.05 -0,0.05 -0,0.05 -0,0.05 -0,0.06 -0,0.05 -0,0.07 -0,0.06 -0,0.06 -0,0.06 -0,0.06 -0,0.05 -0,0.05 -0,0.05 -0,0.05 -0,0.06 -0,0.07 -0,0.07 -0,0.07 -0,0.07 -0,0.07 -0,0.07 -0,0.08 -0,0.08 -0,0.08 -0,0.07 -0,0.08 -0,0.08 -0,0.07 -0,0.09 -0,0.09 -0,0.1 -0,0.09 -0,0.1 -0,0.1 -0,0.1 -0,0.1 -0,0.11 -0,0.1 -0,0.11 -0,0.1 -0,0.14 -0,0.14 -0,0.12 -0,0.12 -0,0.12 -0,0.13 -0,0.11 -0,0.11 -0,0.11 -0,0.11 -0,0.11 -0,0.1 -0,0.11 -0,0.11 -0,0.12 -0,0.12 -0,0.12 -0,0.13 -0,0.13 -0,0.14 -0,0.13 -0,0.14 -0,0.14 -0,0.14 -0,0.15 -0,0.15 -0,0.15 -0,0.16 -0,0.15 -0,0.16 -0,0.16 -0,0.15 -0,0.14 -0,0.13 -0,0.14 -0,0.13 -0,0.12 -0,0.12 -0,0.1 -0,0.09 -0,0.08 -0,0.08 -0,0.08 -0,0.09 -0,0.08 -0,0.09 -0,0.09 -0,0.08 -0,0.08 -0,0.09 -0,0.08 -0,0.07 -0,0.06 -0,0.05 -0,0.06 -0,0.06 -0,0.06 -0,0.06 -0,0.04 -0,0.06 -0,0.07 -0,0.08 -0,0.1 -0,0.1 -0,0.09 -0,0.09 -0,0.09 -0,0.09 -0,0.1 -0,0.1 -0,0.11 -0,0.12 -0,0.13 -0,0.13 -0,0.13 -0,0.13 -0,0.14 -0,0.14 -0,0.13 -0,0.13 -0,0.13 +Action +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/testdata/majority.csv b/strategy/testdata/majority.csv index 9f93318..f3ad806 100644 --- a/strategy/testdata/majority.csv +++ b/strategy/testdata/majority.csv @@ -1,252 +1,252 @@ -Action,Outcome -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -0,0 -1,0 -0,-0.01 -0,-0.01 -0,-0.02 -0,-0.02 -0,-0.04 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0 -0,0.01 -0,-0.01 -0,-0.01 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.05 -0,-0.04 -0,-0.06 -0,-0.04 -0,-0.03 -0,-0.04 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.01 -0,-0.01 -0,-0.01 -0,-0 -0,-0 -0,-0 -0,0 -0,0.01 -0,0.02 -0,0.03 -0,0.03 -0,0.03 -0,0.03 -0,0.03 -0,0.04 -0,0.03 -0,0.02 -0,0.04 -0,0.05 -0,0.05 -0,0.04 -0,0.03 -0,0.02 -0,0.03 -0,0.04 -0,0.04 -0,0.03 -0,0.03 -0,0.03 -0,0.03 -0,0.03 -0,0.04 -0,0.05 -0,0.05 -0,0.05 -0,0.03 -0,0.02 -0,0.02 -0,0.02 -0,0.03 -0,0.02 -0,0.03 -0,0.05 -0,0.05 -0,0.06 -0,0.07 -0,0.07 -0,0.07 -0,0.06 -0,0.07 -0,0.07 -0,0.08 -0,0.08 -0,0.08 -0,0.08 -0,0.07 -0,0.07 -0,0.06 -0,0.07 -0,0.07 -0,0.07 -0,0.09 -0,0.09 -0,0.09 -0,0.09 -0,0.09 -0,0.09 -0,0.09 -0,0.1 -0,0.09 -0,0.09 -0,0.1 -0,0.1 -0,0.09 -0,0.1 -0,0.1 -0,0.11 -0,0.11 -0,0.11 -0,0.11 -0,0.11 -0,0.12 -0,0.12 -0,0.12 -0,0.13 -0,0.12 -0,0.16 -0,0.16 -0,0.14 -0,0.14 -0,0.14 -0,0.14 -0,0.13 -0,0.13 -0,0.13 -0,0.12 -0,0.12 -0,0.12 -0,0.13 -0,0.13 -0,0.13 -0,0.13 -0,0.14 -0,0.15 -0,0.15 -0,0.16 -0,0.15 -0,0.15 -0,0.15 -0,0.16 -0,0.17 -0,0.17 -0,0.17 -0,0.18 -0,0.17 -0,0.18 -0,0.18 -0,0.17 -0,0.16 -0,0.15 -0,0.15 -0,0.15 -0,0.14 -0,0.14 -0,0.12 -0,0.11 -0,0.09 -0,0.1 -0,0.1 -0,0.1 -0,0.1 -0,0.11 -0,0.11 -0,0.1 -0,0.1 -0,0.1 -0,0.1 -0,0.09 -0,0.08 -0,0.07 -0,0.07 -0,0.08 -0,0.07 -0,0.07 -0,0.06 -0,0.08 -0,0.09 -0,0.1 -0,0.11 -0,0.12 -0,0.1 -0,0.1 -0,0.1 -0,0.11 -0,0.12 -0,0.12 -0,0.13 -0,0.14 -0,0.15 -0,0.14 -0,0.15 -0,0.15 -0,0.15 -0,0.16 -0,0.15 -0,0.15 -0,0.14 +Action +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/testdata/or.csv b/strategy/testdata/or.csv index 229092d..1a674b4 100644 --- a/strategy/testdata/or.csv +++ b/strategy/testdata/or.csv @@ -1,252 +1,252 @@ -Action,Outcome -1,-0 -0,-0.01 -0,-0.01 -0,-0.03 -0,-0.03 -0,-0.04 -0,-0.04 -0,-0.04 -0,-0.02 -0,-0.02 -0,-0.03 -0,-0.05 -0,-0.06 -0,-0.06 -0,-0.05 -0,-0.03 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.05 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.01 -0,-0.02 -0,0 -0,-0.01 -0,-0.01 -0,0.01 -0,0 -0,-0 -0,-0.01 -0,-0.03 -0,-0.04 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.02 -0,-0.02 -0,-0.03 -0,-0.04 -0,-0.02 -0,-0.03 -0,-0.02 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.03 -0,-0.04 -0,-0.03 -0,-0.02 -0,-0.02 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.05 -0,-0.05 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.04 -0,-0.03 -0,-0.02 -0,-0.01 -0,-0.02 -0,-0.02 -0,-0.04 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.07 -0,-0.05 -0,-0.08 -0,-0.06 -0,-0.05 -0,-0.06 -0,-0.06 -0,-0.06 -0,-0.05 -0,-0.05 -0,-0.04 -0,-0.04 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.03 -0,-0.02 -0,-0.02 -0,-0.02 -0,-0.01 -0,-0 -0,0 -0,0.02 -0,0.02 -0,0.01 -0,0.02 -0,0.02 -0,0.02 -0,0.02 -0,0.01 -0,0.02 -0,0.03 -0,0.04 -0,0.02 -0,0.01 -0,0 -0,0.02 -0,0.02 -0,0.02 -0,0.01 -0,0.01 -0,0.01 -0,0.02 -0,0.02 -0,0.03 -0,0.04 -0,0.04 -0,0.03 -0,0.01 -0,0.01 -0,0 -0,0.01 -0,0.01 -0,0.01 -0,0.01 -0,0.03 -0,0.03 -0,0.05 -0,0.05 -0,0.05 -0,0.05 -0,0.05 -0,0.06 -0,0.05 -0,0.07 -0,0.06 -0,0.06 -0,0.06 -0,0.06 -0,0.05 -0,0.05 -0,0.05 -0,0.05 -0,0.06 -0,0.07 -0,0.07 -0,0.07 -0,0.07 -0,0.07 -0,0.07 -0,0.08 -0,0.08 -0,0.08 -0,0.07 -0,0.08 -0,0.08 -0,0.07 -0,0.09 -0,0.09 -0,0.1 -0,0.09 -0,0.1 -0,0.1 -0,0.1 -0,0.1 -0,0.11 -0,0.1 -0,0.11 -0,0.1 -0,0.14 -0,0.14 -0,0.12 -0,0.12 -0,0.12 -0,0.13 -0,0.11 -0,0.11 -0,0.11 -0,0.11 -0,0.11 -0,0.1 -0,0.11 -0,0.11 -0,0.12 -0,0.12 -0,0.12 -0,0.13 -0,0.13 -0,0.14 -0,0.13 -0,0.14 -0,0.14 -0,0.14 -0,0.15 -0,0.15 -0,0.15 -0,0.16 -0,0.15 -0,0.16 -0,0.16 -0,0.15 -0,0.14 -0,0.13 -0,0.14 -0,0.13 -0,0.12 -0,0.12 -0,0.1 -0,0.09 -0,0.08 -0,0.08 -0,0.08 -0,0.09 -0,0.08 -0,0.09 -0,0.09 -0,0.08 -0,0.08 -0,0.09 -0,0.08 -0,0.07 -0,0.06 -0,0.05 -0,0.06 -0,0.06 -0,0.06 -0,0.06 -0,0.04 -0,0.06 -0,0.07 -0,0.08 -0,0.1 -0,0.1 -0,0.09 -0,0.09 -0,0.09 -0,0.09 -0,0.1 -0,0.1 -0,0.11 -0,0.12 -0,0.13 -0,0.13 -0,0.13 -0,0.13 -0,0.14 -0,0.14 -0,0.13 -0,0.13 -0,0.13 +Action +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/testdata/split.csv b/strategy/testdata/split.csv index ef93f3d..2b66c42 100644 --- a/strategy/testdata/split.csv +++ b/strategy/testdata/split.csv @@ -62,6 +62,7 @@ Action 0 0 0 +1 0 0 0 @@ -78,12 +79,11 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 0 0 -1 @@ -127,6 +127,7 @@ Action 0 0 0 +-1 0 0 0 @@ -187,11 +188,10 @@ Action 0 0 0 +-1 0 0 -0 -0 -0 +-1 0 0 0 @@ -230,14 +230,14 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 -1 0 0 diff --git a/strategy/trend/README.md b/strategy/trend/README.md index fceb6d8..cfdcea5 100644 --- a/strategy/trend/README.md +++ b/strategy/trend/README.md @@ -282,7 +282,7 @@ func (*AroonStrategy) Name() string Name returns the name of the strategy. -### func \(\*AroonStrategy\) [Report]() +### func \(\*AroonStrategy\) [Report]() ```go func (a *AroonStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -383,7 +383,7 @@ func (*CciStrategy) Name() string Name returns the name of the strategy. -### func \(\*CciStrategy\) [Report]() +### func \(\*CciStrategy\) [Report]() ```go func (t *CciStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -438,7 +438,7 @@ func (*DemaStrategy) Name() string Name returns the name of the strategy. -### func \(\*DemaStrategy\) [Report]() +### func \(\*DemaStrategy\) [Report]() ```go func (d *DemaStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -498,7 +498,7 @@ func (*GoldenCrossStrategy) Name() string Name returns the name of the strategy. -### func \(\*GoldenCrossStrategy\) [Report]() +### func \(\*GoldenCrossStrategy\) [Report]() ```go func (t *GoldenCrossStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -555,7 +555,7 @@ func (k *KamaStrategy) Name() string Name returns the name of the strategy. -### func \(\*KamaStrategy\) [Report]() +### func \(\*KamaStrategy\) [Report]() ```go func (k *KamaStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -605,7 +605,7 @@ func (*KdjStrategy) Name() string Name returns the name of the strategy. -### func \(\*KdjStrategy\) [Report]() +### func \(\*KdjStrategy\) [Report]() ```go func (kdj *KdjStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -665,7 +665,7 @@ func (m *MacdStrategy) Name() string Name returns the name of the strategy. -### func \(\*MacdStrategy\) [Report]() +### func \(\*MacdStrategy\) [Report]() ```go func (m *MacdStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -770,7 +770,7 @@ func (*TrimaStrategy) Name() string Name returns the name of the strategy. -### func \(\*TrimaStrategy\) [Report]() +### func \(\*TrimaStrategy\) [Report]() ```go func (t *TrimaStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -833,7 +833,7 @@ func (*TripleMovingAverageCrossoverStrategy) Name() string Name returns the name of the strategy. -### func \(\*TripleMovingAverageCrossoverStrategy\) [Report]() +### func \(\*TripleMovingAverageCrossoverStrategy\) [Report]() ```go func (t *TripleMovingAverageCrossoverStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -940,7 +940,7 @@ func (t *TsiStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy. Compute processes the provided asset snapshots and generates a stream of actionable recommendations. -### func \(\*TsiStrategy\) [IdlePeriod]() +### func \(\*TsiStrategy\) [IdlePeriod]() ```go func (t *TsiStrategy) IdlePeriod() int @@ -958,7 +958,7 @@ func (t *TsiStrategy) Name() string Name returns the name of the strategy. -### func \(\*TsiStrategy\) [Report]() +### func \(\*TsiStrategy\) [Report]() ```go func (t *TsiStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -1011,7 +1011,7 @@ func (*VwmaStrategy) Name() string Name returns the name of the strategy. -### func \(\*VwmaStrategy\) [Report]() +### func \(\*VwmaStrategy\) [Report]() ```go func (v *VwmaStrategy) Report(c <-chan *asset.Snapshot) *helper.Report diff --git a/strategy/trend/aroon_strategy.go b/strategy/trend/aroon_strategy.go index f8b6692..e8ffeda 100644 --- a/strategy/trend/aroon_strategy.go +++ b/strategy/trend/aroon_strategy.go @@ -59,8 +59,6 @@ func (a *AroonStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // Aroon starts only after the a full period. actions = helper.Shift(actions, a.Aroon.Period-1, strategy.Hold) diff --git a/strategy/trend/bop_strategy.go b/strategy/trend/bop_strategy.go index 27bf080..7dbfc5d 100644 --- a/strategy/trend/bop_strategy.go +++ b/strategy/trend/bop_strategy.go @@ -47,7 +47,7 @@ func (b *BopStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action { bops := b.Bop.Compute(openings, highs, lows, closings) - return strategy.NormalizeActions(helper.Map(bops, func(bop float64) strategy.Action { + return helper.Map(bops, func(bop float64) strategy.Action { if bop > 0 { return strategy.Buy } @@ -57,7 +57,7 @@ func (b *BopStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action { } return strategy.Hold - })) + }) } // Report processes the provided asset snapshots and generates a diff --git a/strategy/trend/cci_strategy.go b/strategy/trend/cci_strategy.go index 1f50993..93344d4 100644 --- a/strategy/trend/cci_strategy.go +++ b/strategy/trend/cci_strategy.go @@ -54,8 +54,6 @@ func (t *CciStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action { return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // CCI starts only after a full period. actions = helper.Shift(actions, t.Cci.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/dema_strategy.go b/strategy/trend/dema_strategy.go index b1bf984..32e1a87 100644 --- a/strategy/trend/dema_strategy.go +++ b/strategy/trend/dema_strategy.go @@ -81,8 +81,6 @@ func (d *DemaStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // DEMA starts only after the a full periods for each EMA used. actions = helper.Skip(actions, d.Dema2.IdlePeriod()) actions = helper.Shift(actions, d.Dema2.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/golden_cross_strategy.go b/strategy/trend/golden_cross_strategy.go index 5d56d4e..11cb5db 100644 --- a/strategy/trend/golden_cross_strategy.go +++ b/strategy/trend/golden_cross_strategy.go @@ -72,9 +72,6 @@ func (t *GoldenCrossStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy. return strategy.Hold }) - // Normalize actions - actions = strategy.NormalizeActions(actions) - // Generate a Hold signal during the idle period. actions = helper.Shift(actions, t.SlowEma.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/kama_strategy.go b/strategy/trend/kama_strategy.go index f7ad66c..86349d3 100644 --- a/strategy/trend/kama_strategy.go +++ b/strategy/trend/kama_strategy.go @@ -67,8 +67,6 @@ func (k *KamaStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy // KAMA starts only after a full period. actions = helper.Shift(actions, k.Kama.IdlePeriod(), strategy.Hold) - actions = strategy.NormalizeActions(actions) - return actions } diff --git a/strategy/trend/kdj_strategy.go b/strategy/trend/kdj_strategy.go index 4deb209..c94e922 100644 --- a/strategy/trend/kdj_strategy.go +++ b/strategy/trend/kdj_strategy.go @@ -61,8 +61,6 @@ func (kdj *KdjStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // KDJ starts only after a full period. actions = helper.Shift(actions, kdj.Kdj.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/macd_strategy.go b/strategy/trend/macd_strategy.go index 34daabd..b2fa85e 100644 --- a/strategy/trend/macd_strategy.go +++ b/strategy/trend/macd_strategy.go @@ -78,8 +78,6 @@ func (m *MacdStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy // MACD starts only after a full period. actions = helper.Shift(actions, m.Macd.IdlePeriod(), strategy.Hold) - actions = strategy.NormalizeActions(actions) - return actions } diff --git a/strategy/trend/testdata/aroon_strategy.csv b/strategy/trend/testdata/aroon_strategy.csv index 8ba71eb..de8348d 100644 --- a/strategy/trend/testdata/aroon_strategy.csv +++ b/strategy/trend/testdata/aroon_strategy.csv @@ -25,228 +25,228 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -1 1 0 -1 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 1 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 -1 0 +-1 +-1 0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 0 0 0 0 0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 1 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 1 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/trend/testdata/bop_strategy.csv b/strategy/trend/testdata/bop_strategy.csv index ca70a45..0dfdd93 100644 --- a/strategy/trend/testdata/bop_strategy.csv +++ b/strategy/trend/testdata/bop_strategy.csv @@ -3,159 +3,159 @@ Action -1 1 -1 -0 -0 -0 +-1 +-1 +-1 +1 1 -0 -1 -0 -0 +-1 +-1 1 -1 1 -0 +1 -1 1 -1 -0 +-1 +1 1 -0 -1 1 -1 1 -1 1 -0 +1 -1 1 -1 -0 -0 +-1 +-1 +1 +1 +1 1 -0 -0 -0 -1 -0 -0 +-1 +-1 +1 1 -0 -1 -0 +-1 +1 1 -0 -1 -0 +-1 +1 1 -0 -1 -0 +-1 +1 1 -0 -1 -0 -0 +-1 +-1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -1 1 -1 1 -0 +1 +-1 -1 -0 1 -1 1 -1 -0 -0 +-1 +-1 +1 +1 +1 1 -0 -0 -0 -1 1 -0 +1 -1 1 -0 -0 -0 +1 +1 +1 -1 1 -0 -0 +1 +1 +-1 -1 -0 1 -0 -0 +1 +1 +-1 -1 -0 1 -0 -0 +1 +1 +-1 +-1 -1 -0 -0 1 -1 0 -0 +-1 1 -1 1 -0 -0 -0 +1 +1 +1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 1 -0 +1 -1 1 -0 +1 -1 1 -0 -0 +1 +1 +-1 -1 -0 1 -1 1 -1 1 -0 +1 -1 1 -1 1 -1 1 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +-1 -1 -0 1 -0 +1 -1 1 -1 @@ -163,90 +163,90 @@ Action -1 1 -1 -0 +-1 +1 1 -0 -1 1 -1 1 -0 +1 +-1 -1 -0 1 -0 +1 +-1 +-1 -1 -0 -0 1 -1 -0 +-1 1 -1 1 -1 1 -0 +1 -1 1 -1 1 -0 -0 -0 -0 +1 +1 +1 +1 +-1 +-1 -1 -0 -0 1 -1 -0 -0 -0 +-1 +-1 +-1 1 -1 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 1 -0 -1 -0 -0 +-1 +-1 +1 +1 +1 +1 1 -0 -0 -0 -0 -1 -0 -0 +-1 +-1 +1 1 -0 -1 1 -0 -0 +1 +1 -1 1 -0 -0 -0 +1 +1 +1 +-1 +-1 -1 -0 -0 diff --git a/strategy/trend/testdata/cci_strategy.csv b/strategy/trend/testdata/cci_strategy.csv index 5d758c4..1bbb28a 100644 --- a/strategy/trend/testdata/cci_strategy.csv +++ b/strategy/trend/testdata/cci_strategy.csv @@ -53,18 +53,18 @@ Action 0 0 0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 0 0 0 0 0 1 -0 +1 0 0 0 @@ -72,12 +72,12 @@ Action 0 -1 0 +-1 0 0 0 0 -0 -0 +-1 0 0 0 @@ -87,15 +87,15 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -128,8 +128,14 @@ Action 0 0 1 +1 +1 +1 0 0 +1 +1 +1 0 0 0 @@ -153,6 +159,7 @@ Action 0 0 0 +1 0 0 0 @@ -162,6 +169,9 @@ Action 0 0 0 +1 +1 +1 0 0 0 @@ -179,27 +189,17 @@ Action 0 0 0 +1 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -209,11 +209,11 @@ Action 0 0 -1 +-1 +-1 +-1 0 -0 -0 -0 -0 +-1 0 0 0 @@ -240,11 +240,11 @@ Action 0 0 1 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 0 0 0 diff --git a/strategy/trend/testdata/dema_strategy.csv b/strategy/trend/testdata/dema_strategy.csv index cb0dfa4..fd9f340 100644 --- a/strategy/trend/testdata/dema_strategy.csv +++ b/strategy/trend/testdata/dema_strategy.csv @@ -67,186 +67,186 @@ Action 0 0 0 -0 -0 -0 -0 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -0 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 diff --git a/strategy/trend/testdata/golden_cross_strategy.csv b/strategy/trend/testdata/golden_cross_strategy.csv index eae74db..7e54601 100644 --- a/strategy/trend/testdata/golden_cross_strategy.csv +++ b/strategy/trend/testdata/golden_cross_strategy.csv @@ -18,235 +18,235 @@ Action 0 0 0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/trend/testdata/kama_strategy.csv b/strategy/trend/testdata/kama_strategy.csv index 2055589..732e0e6 100644 --- a/strategy/trend/testdata/kama_strategy.csv +++ b/strategy/trend/testdata/kama_strategy.csv @@ -9,244 +9,244 @@ Action 0 0 0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 1 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 1 -1 -0 +-1 1 -1 -0 -0 +-1 +-1 1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 1 -0 -0 -0 +1 +1 +1 +-1 +-1 -1 -0 -0 1 -0 +1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 1 -0 -0 -0 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 -1 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 -1 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 diff --git a/strategy/trend/testdata/kdj_strategy.csv b/strategy/trend/testdata/kdj_strategy.csv index 8ed8c00..9e04d49 100644 --- a/strategy/trend/testdata/kdj_strategy.csv +++ b/strategy/trend/testdata/kdj_strategy.csv @@ -11,242 +11,242 @@ Action 0 0 0 -0 -0 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 1 -1 -0 +-1 +1 +1 1 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 1 -0 -0 -0 -1 -0 +-1 +1 +1 1 -0 -0 -1 -0 -0 +-1 +-1 1 -1 -0 +-1 +1 +1 1 -0 -0 -1 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +1 1 -0 -1 1 -0 -0 -0 +1 +1 +1 -1 1 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +-1 -1 -0 1 -1 -0 -0 +-1 +-1 +1 +1 1 -0 -0 -1 -0 -0 +-1 +-1 1 -1 -0 -0 +-1 +-1 +1 1 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 1 -0 -0 -1 -0 +-1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 1 -1 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 1 -0 -0 -0 -0 -1 -0 -0 +-1 +-1 1 -1 -0 -0 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 1 -0 -0 -1 -0 +-1 1 -1 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 1 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +1 +1 1 -0 -0 -1 1 -0 -0 -0 -0 +1 +1 +1 +1 +-1 +-1 +-1 -1 -0 -0 -0 1 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +-1 +-1 -1 -0 -0 1 -1 -0 -0 +-1 +-1 diff --git a/strategy/trend/testdata/macd_strategy.csv b/strategy/trend/testdata/macd_strategy.csv index dcedd8e..b14c8ad 100644 --- a/strategy/trend/testdata/macd_strategy.csv +++ b/strategy/trend/testdata/macd_strategy.csv @@ -32,20 +32,20 @@ Action 0 0 0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 0 0 0 @@ -62,6 +62,7 @@ Action 0 0 0 +1 0 0 0 @@ -78,12 +79,11 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 0 0 0 @@ -105,8 +105,27 @@ Action 0 0 -1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -121,6 +140,11 @@ Action 0 0 0 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -129,7 +153,12 @@ Action 0 0 0 +-1 +-1 0 +-1 +-1 +-1 0 0 0 @@ -139,12 +168,25 @@ Action 0 0 0 +-1 0 0 0 0 0 0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -159,54 +201,12 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -230,14 +230,14 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 diff --git a/strategy/trend/testdata/trima_strategy.csv b/strategy/trend/testdata/trima_strategy.csv index 66a2f79..719d289 100644 --- a/strategy/trend/testdata/trima_strategy.csv +++ b/strategy/trend/testdata/trima_strategy.csv @@ -48,205 +48,205 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 diff --git a/strategy/trend/testdata/triple_moving_average_crossover_strategy.csv b/strategy/trend/testdata/triple_moving_average_crossover_strategy.csv index a021a3d..1ee6603 100644 --- a/strategy/trend/testdata/triple_moving_average_crossover_strategy.csv +++ b/strategy/trend/testdata/triple_moving_average_crossover_strategy.csv @@ -18,235 +18,235 @@ Action 0 0 0 -0 +-1 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 -1 +-1 +-1 +-1 0 0 0 -0 -0 -0 -0 -0 +-1 +-1 0 0 1 -1 -0 +-1 1 -1 -0 -0 +-1 +-1 +1 1 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 0 1 -0 -0 -0 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 0 0 1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 +1 +1 +1 +1 0 0 0 +1 +1 0 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 0 -1 -0 -0 -0 -0 +-1 +-1 +-1 +-1 0 1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 +1 +1 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 0 0 0 -1 -0 -0 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 0 0 -1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 diff --git a/strategy/trend/testdata/trix_strategy.csv b/strategy/trend/testdata/trix_strategy.csv index c24adc3..9bc77cb 100644 --- a/strategy/trend/testdata/trix_strategy.csv +++ b/strategy/trend/testdata/trix_strategy.csv @@ -43,210 +43,210 @@ Action 0 0 1 -0 -0 -0 -0 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/trend/testdata/tsi_strategy.csv b/strategy/trend/testdata/tsi_strategy.csv index 28e7727..74a844d 100644 --- a/strategy/trend/testdata/tsi_strategy.csv +++ b/strategy/trend/testdata/tsi_strategy.csv @@ -47,44 +47,64 @@ Action 0 0 0 +-1 +-1 +-1 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 1 -0 +1 0 0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 0 0 1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -97,6 +117,7 @@ Action 0 0 0 +1 0 0 0 @@ -106,13 +127,52 @@ Action 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -127,108 +187,48 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 0 0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -239,14 +239,14 @@ Action 0 0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/strategy/trend/testdata/vwma_strategy.csv b/strategy/trend/testdata/vwma_strategy.csv index 2f68167..3bfb98d 100644 --- a/strategy/trend/testdata/vwma_strategy.csv +++ b/strategy/trend/testdata/vwma_strategy.csv @@ -20,233 +20,233 @@ Action 0 1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -1 1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 1 -0 -0 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 1 -0 -1 1 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 +-1 1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -1 1 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 +1 +1 +1 -1 1 -1 -0 -0 -0 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 +-1 +-1 +1 1 -0 -1 1 -0 -0 -0 +1 +1 +1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 diff --git a/strategy/trend/trima_strategy.go b/strategy/trend/trima_strategy.go index 1fa87e7..59b1ee7 100644 --- a/strategy/trend/trima_strategy.go +++ b/strategy/trend/trima_strategy.go @@ -73,8 +73,6 @@ func (t *TrimaStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // TRIMA starts only after the a full periods for each EMA used. actions = helper.Shift(actions, t.Long.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/triple_moving_average_crossover_strategy.go b/strategy/trend/triple_moving_average_crossover_strategy.go index c05c9bd..da0aaed 100644 --- a/strategy/trend/triple_moving_average_crossover_strategy.go +++ b/strategy/trend/triple_moving_average_crossover_strategy.go @@ -81,9 +81,6 @@ func (t *TripleMovingAverageCrossoverStrategy) Compute(c <-chan *asset.Snapshot) return strategy.Hold }) - // Normalize actions - actions = strategy.NormalizeActions(actions) - // Generate a Hold signal during the idle period. actions = helper.Shift(actions, t.SlowEma.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/trix_strategy.go b/strategy/trend/trix_strategy.go index 5df1ea2..bcc6566 100644 --- a/strategy/trend/trix_strategy.go +++ b/strategy/trend/trix_strategy.go @@ -39,7 +39,7 @@ func (t *TrixStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy trixs := t.Trix.Compute(closings) - actions := strategy.NormalizeActions(helper.Map(trixs, func(trix float64) strategy.Action { + actions := helper.Map(trixs, func(trix float64) strategy.Action { if trix > 0 { return strategy.Buy } @@ -49,7 +49,7 @@ func (t *TrixStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy } return strategy.Hold - })) + }) // TRIX starts only after a full period. actions = helper.Shift(actions, t.Trix.IdlePeriod(), strategy.Hold) diff --git a/strategy/trend/tsi_strategy.go b/strategy/trend/tsi_strategy.go index 202d08d..8e6b773 100644 --- a/strategy/trend/tsi_strategy.go +++ b/strategy/trend/tsi_strategy.go @@ -87,7 +87,6 @@ func (t *TsiStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan strategy. // TSI and signal line start only after a full period. actions = helper.Shift(actions, t.IdlePeriod(), strategy.Hold) - actions = strategy.NormalizeActions(actions) return actions } diff --git a/strategy/trend/vwma_strategy.go b/strategy/trend/vwma_strategy.go index 9ae556d..d2b5377 100644 --- a/strategy/trend/vwma_strategy.go +++ b/strategy/trend/vwma_strategy.go @@ -63,8 +63,6 @@ func (v *VwmaStrategy) Compute(c <-chan *asset.Snapshot) <-chan strategy.Action return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // VWMA starts only after the a full period. actions = helper.Shift(actions, v.Vwma.Period-1, strategy.Hold) diff --git a/strategy/volatility/README.md b/strategy/volatility/README.md index 3623cb2..1483e38 100644 --- a/strategy/volatility/README.md +++ b/strategy/volatility/README.md @@ -89,7 +89,7 @@ func (*BollingerBandsStrategy) Name() string Name returns the name of the strategy. -### func \(\*BollingerBandsStrategy\) [Report]() +### func \(\*BollingerBandsStrategy\) [Report]() ```go func (b *BollingerBandsStrategy) Report(c <-chan *asset.Snapshot) *helper.Report @@ -146,7 +146,7 @@ func (s *SuperTrendStrategy) Name() string Name returns the name of the strategy. -### func \(\*SuperTrendStrategy\) [Report]() +### func \(\*SuperTrendStrategy\) [Report]() ```go func (s *SuperTrendStrategy) Report(c <-chan *asset.Snapshot) *helper.Report diff --git a/strategy/volatility/bollinger_bands_strategy.go b/strategy/volatility/bollinger_bands_strategy.go index a471757..4ffaa0a 100644 --- a/strategy/volatility/bollinger_bands_strategy.go +++ b/strategy/volatility/bollinger_bands_strategy.go @@ -57,8 +57,6 @@ func (b *BollingerBandsStrategy) Compute(snapshots <-chan *asset.Snapshot) <-cha return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // Bollinger Bands starts only after a full period. actions = helper.Shift(actions, b.BollingerBands.IdlePeriod(), strategy.Hold) diff --git a/strategy/volatility/super_trend_strategy.go b/strategy/volatility/super_trend_strategy.go index 37cee48..198fcf9 100644 --- a/strategy/volatility/super_trend_strategy.go +++ b/strategy/volatility/super_trend_strategy.go @@ -65,8 +65,6 @@ func (s *SuperTrendStrategy) Compute(snapshots <-chan *asset.Snapshot) <-chan st return strategy.Hold }) - actions = strategy.NormalizeActions(actions) - // Super Trend starts only after a full period. actions = helper.Shift(actions, s.SuperTrend.IdlePeriod(), strategy.Hold) diff --git a/strategy/volatility/testdata/bollinger_bands_strategy.csv b/strategy/volatility/testdata/bollinger_bands_strategy.csv index a170192..2769b0d 100644 --- a/strategy/volatility/testdata/bollinger_bands_strategy.csv +++ b/strategy/volatility/testdata/bollinger_bands_strategy.csv @@ -24,7 +24,7 @@ Action 0 1 0 -0 +1 0 0 0 @@ -55,7 +55,7 @@ Action 0 0 -1 -0 +-1 0 0 0 @@ -72,7 +72,7 @@ Action 0 -1 0 -0 +-1 0 0 0 @@ -127,6 +127,8 @@ Action 0 0 0 +1 +1 0 0 0 @@ -149,6 +151,7 @@ Action 0 0 0 +1 0 0 0 @@ -166,6 +169,8 @@ Action 0 0 0 +1 +1 0 0 0 @@ -189,12 +194,7 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 +1 0 0 0 @@ -208,6 +208,9 @@ Action 0 0 -1 +-1 +-1 +-1 0 0 0 @@ -224,10 +227,7 @@ Action 0 0 0 -0 -0 -0 -0 +-1 0 0 0 diff --git a/strategy/volatility/testdata/super_trend_strategy.csv b/strategy/volatility/testdata/super_trend_strategy.csv index 3b5f6a9..3e4ed9a 100644 --- a/strategy/volatility/testdata/super_trend_strategy.csv +++ b/strategy/volatility/testdata/super_trend_strategy.csv @@ -17,69 +17,69 @@ Action 0 0 1 -0 -0 -0 -0 +1 +1 +1 +1 -1 1 -1 1 -1 -0 +-1 +1 +1 +1 1 -0 -0 -0 -1 -0 +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 +-1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -1 1 -1 -0 +-1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +1 1 -0 -1 1 -1 @@ -90,94 +90,94 @@ Action 1 -1 1 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -1 1 -0 -0 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 1 -0 +1 -1 1 -1 1 -1 -0 -0 -0 -0 -0 +-1 +-1 +-1 +-1 +-1 +1 +1 +1 +1 +1 +1 +1 +1 1 -0 -0 -0 -0 -0 -0 -0 -0 -1 1 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +-1 +-1 -1 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +-1 -1 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -1 1 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -1 @@ -186,59 +186,59 @@ Action 1 -1 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 1 -1