@@ -12,108 +12,117 @@ import (
1212type PringsSpecialK [T helper.Float ] struct {
1313 Roc10 * trend.Roc [T ]
1414 Roc15 * trend.Roc [T ]
15- Roc50 * trend.Roc [T ]
15+ Roc20 * trend.Roc [T ]
16+ Roc30 * trend.Roc [T ]
17+ Roc40 * trend.Roc [T ]
1618 Roc65 * trend.Roc [T ]
1719 Roc75 * trend.Roc [T ]
1820 Roc100 * trend.Roc [T ]
19- Roc130 * trend.Roc [T ]
2021 Roc195 * trend.Roc [T ]
22+ Roc265 * trend.Roc [T ]
23+ Roc390 * trend.Roc [T ]
24+ Roc530 * trend.Roc [T ]
2125
22- Sma10 * trend.Sma [T ]
23- Sma15 * trend.Sma [T ]
24- Sma20 * trend.Sma [T ]
25- Sma30 * trend.Sma [T ]
26- Sma40 * trend.Sma [T ]
27- Sma65 * trend.Sma [T ]
28- Sma75 * trend.Sma [T ]
29- Sma100 * trend.Sma [T ]
30- Sma195 * trend.Sma [T ]
31- Sma265 * trend.Sma [T ]
32- Sma390 * trend.Sma [T ]
33- Sma530 * trend.Sma [T ]
26+ Sma10Roc10 * trend.Sma [T ]
27+ Sma10Roc15 * trend.Sma [T ]
28+ Sma10Roc20 * trend.Sma [T ]
29+ Sma15Roc30 * trend.Sma [T ]
30+ Sma50Roc40 * trend.Sma [T ]
31+ Sma65Roc65 * trend.Sma [T ]
32+ Sma75Roc75 * trend.Sma [T ]
33+ Sma100Roc100 * trend.Sma [T ]
34+ Sma130Roc195 * trend.Sma [T ]
35+ Sma130Roc265 * trend.Sma [T ]
36+ Sma130Roc390 * trend.Sma [T ]
37+ Sma195Roc530 * trend.Sma [T ]
3438}
3539
3640// NewPringsSpecialK function initializes a new Martin Pring's Special K instance.
3741func NewPringsSpecialK [T helper.Float ]() * PringsSpecialK [T ] {
3842 return & PringsSpecialK [T ]{
3943 Roc10 : trend.NewRocWithPeriod [T ](10 ),
4044 Roc15 : trend.NewRocWithPeriod [T ](15 ),
41- Roc50 : trend.NewRocWithPeriod [T ](50 ),
45+ Roc20 : trend.NewRocWithPeriod [T ](20 ),
46+ Roc30 : trend.NewRocWithPeriod [T ](30 ),
47+ Roc40 : trend.NewRocWithPeriod [T ](40 ),
4248 Roc65 : trend.NewRocWithPeriod [T ](65 ),
4349 Roc75 : trend.NewRocWithPeriod [T ](75 ),
4450 Roc100 : trend.NewRocWithPeriod [T ](100 ),
45- Roc130 : trend.NewRocWithPeriod [T ](130 ),
4651 Roc195 : trend.NewRocWithPeriod [T ](195 ),
52+ Roc265 : trend.NewRocWithPeriod [T ](265 ),
53+ Roc390 : trend.NewRocWithPeriod [T ](390 ),
54+ Roc530 : trend.NewRocWithPeriod [T ](530 ),
4755
48- Sma10 : trend.NewSmaWithPeriod [T ](10 ),
49- Sma15 : trend.NewSmaWithPeriod [T ](15 ),
50- Sma20 : trend.NewSmaWithPeriod [T ](20 ),
51- Sma30 : trend.NewSmaWithPeriod [T ](30 ),
52- Sma40 : trend.NewSmaWithPeriod [T ](40 ),
53- Sma65 : trend.NewSmaWithPeriod [T ](65 ),
54- Sma75 : trend.NewSmaWithPeriod [T ](75 ),
55- Sma100 : trend.NewSmaWithPeriod [T ](100 ),
56- Sma195 : trend.NewSmaWithPeriod [T ](195 ),
57- Sma265 : trend.NewSmaWithPeriod [T ](265 ),
58- Sma390 : trend.NewSmaWithPeriod [T ](390 ),
59- Sma530 : trend.NewSmaWithPeriod [T ](530 ),
56+ Sma10Roc10 : trend.NewSmaWithPeriod [T ](10 ),
57+ Sma10Roc15 : trend.NewSmaWithPeriod [T ](10 ),
58+ Sma10Roc20 : trend.NewSmaWithPeriod [T ](10 ),
59+ Sma15Roc30 : trend.NewSmaWithPeriod [T ](15 ),
60+ Sma50Roc40 : trend.NewSmaWithPeriod [T ](50 ),
61+ Sma65Roc65 : trend.NewSmaWithPeriod [T ](65 ),
62+ Sma75Roc75 : trend.NewSmaWithPeriod [T ](75 ),
63+ Sma100Roc100 : trend.NewSmaWithPeriod [T ](100 ),
64+ Sma130Roc195 : trend.NewSmaWithPeriod [T ](130 ),
65+ Sma130Roc265 : trend.NewSmaWithPeriod [T ](130 ),
66+ Sma130Roc390 : trend.NewSmaWithPeriod [T ](130 ),
67+ Sma195Roc530 : trend.NewSmaWithPeriod [T ](195 ),
6068 }
6169}
6270
6371func (p * PringsSpecialK [T ]) Compute (closings <- chan T ) <- chan T {
64- c := helper .Duplicate (closings , 8 )
72+ c := helper .Duplicate (closings , 12 )
6573
6674 roc10 := p .Roc10 .Compute (c [0 ])
6775 roc15 := p .Roc15 .Compute (c [1 ])
68- roc50 := p .Roc50 .Compute (c [2 ])
69- roc65 := p .Roc65 .Compute (c [3 ])
70- roc75 := p .Roc75 .Compute (c [4 ])
71- roc100 := p .Roc100 .Compute (c [5 ])
72- roc130 := p .Roc130 .Compute (c [6 ])
73- roc195 := p .Roc195 .Compute (c [7 ])
76+ roc20 := p .Roc20 .Compute (c [2 ])
77+ roc30 := p .Roc30 .Compute (c [3 ])
78+ roc40 := p .Roc40 .Compute (c [4 ])
79+ roc65 := p .Roc65 .Compute (c [5 ])
80+ roc75 := p .Roc75 .Compute (c [6 ])
81+ roc100 := p .Roc100 .Compute (c [7 ])
82+ roc195 := p .Roc195 .Compute (c [8 ])
83+ roc265 := p .Roc265 .Compute (c [9 ])
84+ roc390 := p .Roc390 .Compute (c [10 ])
85+ roc530 := p .Roc530 .Compute (c [11 ])
7486
75- roc10s := helper .Duplicate (roc10 , 3 )
76- sma10 := p .Sma10 .Compute (roc10s [0 ])
77- sma15 := p .Sma15 .Compute (roc10s [1 ])
78- sma20 := p .Sma20 .Compute (roc10s [2 ])
79- sma30 := p .Sma30 .Compute (roc15 )
80- sma40 := p .Sma40 .Compute (roc50 )
81- sma65 := p .Sma65 .Compute (roc65 )
82- sma75 := p .Sma75 .Compute (roc75 )
83- sma100 := p .Sma100 .Compute (roc100 )
84- roc130s := helper .Duplicate (roc130 , 3 )
85- sma195 := p .Sma195 .Compute (roc130s [0 ])
86- sma265 := p .Sma265 .Compute (roc130s [1 ])
87- sma390 := p .Sma390 .Compute (roc130s [2 ])
88- sma530 := p .Sma530 .Compute (roc195 )
87+ sma10Roc10 := p .Sma10Roc10 .Compute (roc10 )
88+ sma10Roc15 := p .Sma10Roc15 .Compute (roc15 )
89+ sma10Roc20 := p .Sma10Roc20 .Compute (roc20 )
90+ sma15Roc30 := p .Sma15Roc30 .Compute (roc30 )
91+ sma50Roc40 := p .Sma50Roc40 .Compute (roc40 )
92+ sma65Roc65 := p .Sma65Roc65 .Compute (roc65 )
93+ sma75Roc75 := p .Sma75Roc75 .Compute (roc75 )
94+ sma100Roc100 := p .Sma100Roc100 .Compute (roc100 )
95+ sma130Roc195 := p .Sma130Roc195 .Compute (roc195 )
96+ sma130Roc265 := p .Sma130Roc265 .Compute (roc265 )
97+ sma130Roc390 := p .Sma130Roc390 .Compute (roc390 )
98+ sma195Roc530 := p .Sma195Roc530 .Compute (roc530 )
8999
90- maxIdle := p .Sma530 .IdlePeriod () + p .Roc195 .IdlePeriod ()
100+ maxIdle := p .Sma195Roc530 .IdlePeriod () + p .Roc530 .IdlePeriod ()
91101
92- sma10 = helper .Skip (sma10 , maxIdle - p .Sma10 .IdlePeriod ()- p .Roc10 .IdlePeriod ())
93- sma15 = helper .Skip (sma15 , maxIdle - p .Sma15 .IdlePeriod ()- p .Roc10 .IdlePeriod ())
94- sma20 = helper .Skip (sma20 , maxIdle - p .Sma20 .IdlePeriod ()- p .Roc10 .IdlePeriod ())
95- sma30 = helper .Skip (sma30 , maxIdle - p .Sma30 .IdlePeriod ()- p .Roc15 .IdlePeriod ())
96- sma40 = helper .Skip (sma40 , maxIdle - p .Sma40 .IdlePeriod ()- p .Roc50 .IdlePeriod ())
97- sma65 = helper .Skip (sma65 , maxIdle - p .Sma65 .IdlePeriod ()- p .Roc65 .IdlePeriod ())
98- sma75 = helper .Skip (sma75 , maxIdle - p .Sma75 .IdlePeriod ()- p .Roc75 .IdlePeriod ())
99- sma100 = helper .Skip (sma100 , maxIdle - p .Sma100 .IdlePeriod ()- p .Roc100 .IdlePeriod ())
100- sma195 = helper .Skip (sma195 , maxIdle - p .Sma195 .IdlePeriod ()- p .Roc130 .IdlePeriod ())
101- sma265 = helper .Skip (sma265 , maxIdle - p .Sma265 .IdlePeriod ()- p .Roc130 .IdlePeriod ())
102- sma390 = helper .Skip (sma390 , maxIdle - p .Sma390 .IdlePeriod ()- p .Roc130 .IdlePeriod ())
103- //sma530 = helper.Skip(sma530, p.Sma530.IdlePeriod()-p.Sma530.IdlePeriod())
102+ sma10Roc10 = helper .Skip (sma10Roc10 , maxIdle - p .Sma10Roc10 .IdlePeriod ()- p .Roc10 .IdlePeriod ())
103+ sma10Roc15 = helper .Skip (sma10Roc15 , maxIdle - p .Sma10Roc15 .IdlePeriod ()- p .Roc15 .IdlePeriod ())
104+ sma10Roc20 = helper .Skip (sma10Roc20 , maxIdle - p .Sma10Roc20 .IdlePeriod ()- p .Roc20 .IdlePeriod ())
105+ sma15Roc30 = helper .Skip (sma15Roc30 , maxIdle - p .Sma15Roc30 .IdlePeriod ()- p .Roc30 .IdlePeriod ())
106+ sma50Roc40 = helper .Skip (sma50Roc40 , maxIdle - p .Sma50Roc40 .IdlePeriod ()- p .Roc40 .IdlePeriod ())
107+ sma65Roc65 = helper .Skip (sma65Roc65 , maxIdle - p .Sma65Roc65 .IdlePeriod ()- p .Roc65 .IdlePeriod ())
108+ sma75Roc75 = helper .Skip (sma75Roc75 , maxIdle - p .Sma75Roc75 .IdlePeriod ()- p .Roc75 .IdlePeriod ())
109+ sma100Roc100 = helper .Skip (sma100Roc100 , maxIdle - p .Sma100Roc100 .IdlePeriod ()- p .Roc100 .IdlePeriod ())
110+ sma130Roc195 = helper .Skip (sma130Roc195 , maxIdle - p .Sma130Roc195 .IdlePeriod ()- p .Roc195 .IdlePeriod ())
111+ sma130Roc265 = helper .Skip (sma130Roc265 , maxIdle - p .Sma130Roc265 .IdlePeriod ()- p .Roc265 .IdlePeriod ())
112+ sma130Roc390 = helper .Skip (sma130Roc390 , maxIdle - p .Sma130Roc390 .IdlePeriod ()- p .Roc390 .IdlePeriod ())
104113
105- p0 := helper .MultiplyBy (sma10 , 1 )
106- p1 := helper .Add (p0 , helper .MultiplyBy (sma15 , 2 ))
107- p2 := helper .Add (p1 , helper .MultiplyBy (sma20 , 3 ))
108- p3 := helper .Add (p2 , helper .MultiplyBy (sma30 , 4 ))
109- p4 := helper .Add (p3 , helper .MultiplyBy (sma40 , 1 ))
110- p5 := helper .Add (p4 , helper .MultiplyBy (sma65 , 2 ))
111- p6 := helper .Add (p5 , helper .MultiplyBy (sma75 , 3 ))
112- p7 := helper .Add (p6 , helper .MultiplyBy (sma100 , 4 ))
113- p8 := helper .Add (p7 , helper .MultiplyBy (sma195 , 1 ))
114- p9 := helper .Add (p8 , helper .MultiplyBy (sma265 , 2 ))
115- p10 := helper .Add (p9 , helper .MultiplyBy (sma390 , 3 ))
116- p11 := helper .Add (p10 , helper .MultiplyBy (sma530 , 4 ))
114+ p0 := helper .MultiplyBy (sma10Roc10 , 1 )
115+ p1 := helper .Add (p0 , helper .MultiplyBy (sma10Roc15 , 2 ))
116+ p2 := helper .Add (p1 , helper .MultiplyBy (sma10Roc20 , 3 ))
117+ p3 := helper .Add (p2 , helper .MultiplyBy (sma15Roc30 , 4 ))
118+ p4 := helper .Add (p3 , helper .MultiplyBy (sma50Roc40 , 1 ))
119+ p5 := helper .Add (p4 , helper .MultiplyBy (sma65Roc65 , 2 ))
120+ p6 := helper .Add (p5 , helper .MultiplyBy (sma75Roc75 , 3 ))
121+ p7 := helper .Add (p6 , helper .MultiplyBy (sma100Roc100 , 4 ))
122+ p8 := helper .Add (p7 , helper .MultiplyBy (sma130Roc195 , 1 ))
123+ p9 := helper .Add (p8 , helper .MultiplyBy (sma130Roc265 , 2 ))
124+ p10 := helper .Add (p9 , helper .MultiplyBy (sma130Roc390 , 3 ))
125+ p11 := helper .Add (p10 , helper .MultiplyBy (sma195Roc530 , 4 ))
117126
118127 return p11
119128}
0 commit comments