From 878e6765bd55c3ee0b04a2254d4336a0da73986b Mon Sep 17 00:00:00 2001 From: Brian Cappello Date: Sat, 8 Oct 2016 18:09:33 -0400 Subject: [PATCH] fix stochastic line classes --- src/accessor/stochastic.js | 12 ++----- src/indicator/stochastic.js | 17 +++------ src/plot/stochastic.js | 21 ++++++----- test/spec/bundle/_fixtures/data/stochastic.js | 35 +++++++++---------- test/spec/bundle/plot/stochasticSpec.js | 10 +++--- 5 files changed, 39 insertions(+), 56 deletions(-) diff --git a/src/accessor/stochastic.js b/src/accessor/stochastic.js index 36cecc0a..a0721801 100644 --- a/src/accessor/stochastic.js +++ b/src/accessor/stochastic.js @@ -5,8 +5,7 @@ module.exports = function() { stochasticK = function(d) { return d.stochasticK; }, stochasticD = function(d) { return d.stochasticD; }, overbought = function(d) { return d.overbought; }, - oversold = function(d) { return d.oversold; }, - middle = function(d) { return d.middle; }; + oversold = function(d) { return d.oversold; }; function accessor(d) { return accessor.r(d); @@ -41,22 +40,15 @@ module.exports = function() { return bind(); }; - accessor.middle = function(_) { - if (!arguments.length) return middle; - middle = _; - return bind(); - }; - function bind() { accessor.d = date; accessor.k = stochasticK; accessor.sd = stochasticD; accessor.ob = overbought; accessor.os = oversold; - accessor.m = middle; return accessor; } return bind(); -}; \ No newline at end of file +}; diff --git a/src/indicator/stochastic.js b/src/indicator/stochastic.js index 7f7f6b88..11302de9 100644 --- a/src/indicator/stochastic.js +++ b/src/indicator/stochastic.js @@ -5,7 +5,6 @@ module.exports = function(indicatorMixin, accessor_ohlc) { // Injected dependen var p = {}, // Container for private, direct access mixed in variables periodD = 3, overbought = 80, - middle = 50, oversold = 20; function indicator(data) { @@ -40,9 +39,9 @@ module.exports = function(indicatorMixin, accessor_ohlc) { // Injected dependen } var stochasticK =stochasticKBuffer[0];// ((d.close-min)/(max-min))*100; stochasticD /= periodD; - return datum(p.accessor.d(d), stochasticK,stochasticD, middle, overbought, oversold); + return datum(p.accessor.d(d), stochasticK,stochasticD, overbought, oversold); } - else return datum(p.accessor.d(d), null, null, middle,overbought,oversold); + else return datum(p.accessor.d(d), null, null, overbought, oversold); }).filter(function(d) { return d.stochasticK; }); } @@ -58,12 +57,6 @@ module.exports = function(indicatorMixin, accessor_ohlc) { // Injected dependen return indicator; }; - indicator.middle = function(_) { - if (!arguments.length) return middle; - middle = _; - return indicator; - }; - indicator.oversold = function(_) { if (!arguments.length) return oversold; oversold = _; @@ -80,7 +73,7 @@ module.exports = function(indicatorMixin, accessor_ohlc) { // Injected dependen }; }; -function datum(date, stochasticK,stochasticD, middle, overbought, oversold) { - if(stochasticK) return { date: date, stochasticK: stochasticK,stochasticD:stochasticD, middle: middle, overbought: overbought, oversold: oversold }; - else return { date: date, stochasticK: null,stochasticD:null, middle: middle, overbought: overbought, oversold: oversold }; +function datum(date, stochasticK, stochasticD, overbought, oversold) { + if(stochasticK) return { date: date, stochasticK: stochasticK, stochasticD: stochasticD, overbought: overbought, oversold: oversold }; + else return { date: date, stochasticK: null, stochasticD: null, overbought: overbought, oversold: oversold }; } diff --git a/src/plot/stochastic.js b/src/plot/stochastic.js index 452c7526..9614216a 100644 --- a/src/plot/stochastic.js +++ b/src/plot/stochastic.js @@ -3,27 +3,26 @@ module.exports = function(accessor_stochastic, plot, plotMixin) { // Injected dependencies return function() { // Closure function var p = {}, // Container for private, direct access mixed in variables - stochUpLine = plot.pathLine(), - stochDownLine = plot.pathLine(); + kLine = plot.pathLine(), + dLine = plot.pathLine(); function stochastic(g) { var group = p.dataSelector(g); group.entry.append('path').attr('class', 'overbought'); group.entry.append('path').attr('class', 'oversold'); - group.entry.append('path').attr('class', 'stochastic up'); - group.entry.append('path').attr('class', 'stochastic down'); + group.entry.append('path').attr('class', 'stochastic k'); + group.entry.append('path').attr('class', 'stochastic d'); stochastic.refresh(g); } stochastic.refresh = function(g) { - refresh(p.dataSelector.select(g), p.accessor, p.xScale, p.yScale, plot, stochUpLine, - stochDownLine); + refresh(p.dataSelector.select(g), p.accessor, p.xScale, p.yScale, plot, kLine, dLine); }; function binder() { - stochUpLine.init(p.accessor.d, p.xScale, p.accessor.k, p.yScale); - stochDownLine.init(p.accessor.d, p.xScale, p.accessor.sd, p.yScale); + kLine.init(p.accessor.d, p.xScale, p.accessor.k, p.yScale); + dLine.init(p.accessor.d, p.xScale, p.accessor.sd, p.yScale); } // Mixin 'superclass' methods and variables @@ -34,9 +33,9 @@ module.exports = function(accessor_stochastic, plot, plotMixin) { // Injected d }; }; -function refresh(selection, accessor, x, y, plot, stochUpLine, stochDownLine) { +function refresh(selection, accessor, x, y, plot, kLine, dLine) { selection.select('path.overbought').attr('d', plot.horizontalPathLine(accessor.d, x, accessor.ob, y)); selection.select('path.oversold').attr('d', plot.horizontalPathLine(accessor.d, x, accessor.os, y)); - selection.select('path.stochastic.up').attr('d', stochUpLine); - selection.select('path.stochastic.down').attr('d', stochDownLine); + selection.select('path.stochastic.k').attr('d', kLine); + selection.select('path.stochastic.d').attr('d', dLine); } diff --git a/test/spec/bundle/_fixtures/data/stochastic.js b/test/spec/bundle/_fixtures/data/stochastic.js index 55f6a1b7..38441a01 100644 --- a/test/spec/bundle/_fixtures/data/stochastic.js +++ b/test/spec/bundle/_fixtures/data/stochastic.js @@ -1,8 +1,8 @@ module.exports = { plot: [ - { date: new Date(2014, 03, 05), stochasticK: 21.294498381877336, stochasticD:16.88836565330361, middle:50, overbought:80 , oversold:20}, - { date: new Date(2014, 03, 06), stochasticK: 4.069767441860778, stochasticD:9.073561800175478, middle:50, overbought:80 , oversold:20}, - { date: new Date(2014, 03, 07), stochasticK: 9.132420091324274, stochasticD:11.498895305020795, middle:50, overbought:80 , oversold:20} + { date: new Date(2014, 03, 05), stochasticK: 21.294498381877336, stochasticD:16.88836565330361, overbought:80 , oversold:20}, + { date: new Date(2014, 03, 06), stochasticK: 4.069767441860778, stochasticD:9.073561800175478, overbought:80 , oversold:20}, + { date: new Date(2014, 03, 07), stochasticK: 9.132420091324274, stochasticD:11.498895305020795, overbought:80 , oversold:20} ], input: [ { date: new Date(1), high: 1.329675, low:1.32207, close:1.3248}, @@ -44,20 +44,19 @@ module.exports = { { date: new Date(37), high: 1.2672, low:1.25007, close:1.252} ], expected: [ - { date: new Date(24), stochasticK: 21.294498381877336, stochasticD:16.88836565330361, middle:50, overbought:80 , oversold:20}, - { date: new Date(25), stochasticK: 4.069767441860778, stochasticD:9.073561800175478, middle:50, overbought:80 , oversold:20}, - { date: new Date(26), stochasticK: 9.132420091324274, stochasticD:11.498895305020795, middle:50, overbought:80 , oversold:20}, - { date: new Date(27), stochasticK: 15.174095650995856, stochasticD:9.458761061393636, middle:50, overbought:80 , oversold:20}, - { date: new Date(28), stochasticK: 15.716027638531358, stochasticD:13.340847793617163, middle:50, overbought:80 , oversold:20}, - { date: new Date(29), stochasticK: 1.0361352156455277, stochasticD:10.642086168390913, middle:50, overbought:80 , oversold:20}, - { date: new Date(30), stochasticK: 11.671345281796315, stochasticD:9.474502711991066, middle:50, overbought:80 , oversold:20}, - { date: new Date(31), stochasticK: 2.7250812283824755, stochasticD:5.144187241941439, middle:50, overbought:80 , oversold:20}, - { date: new Date(32), stochasticK: 1.572079861656806, stochasticD:5.322835457278532, middle:50, overbought:80 , oversold:20}, - { date: new Date(33), stochasticK: 8.211320754716517, stochasticD:4.169493948251933, middle:50, overbought:80 , oversold:20}, - { date: new Date(34), stochasticK: 14.385096097158407, stochasticD:8.056165571177244, middle:50, overbought:80 , oversold:20}, - { date: new Date(35), stochasticK: 11.083598632236642, stochasticD:11.226671828037189, middle:50, overbought:80 , oversold:20}, - { date: new Date(36), stochasticK: 24.28958849192318, stochasticD:16.586094407106074, middle:50, overbought:80 , oversold:20}, - { date: new Date(37), stochasticK: 3.904116516637992, stochasticD:13.092434546932603, middle:50, overbought:80 , oversold:20} - + { date: new Date(24), stochasticK: 21.294498381877336, stochasticD:16.88836565330361, overbought:80 , oversold:20}, + { date: new Date(25), stochasticK: 4.069767441860778, stochasticD:9.073561800175478, overbought:80 , oversold:20}, + { date: new Date(26), stochasticK: 9.132420091324274, stochasticD:11.498895305020795, overbought:80 , oversold:20}, + { date: new Date(27), stochasticK: 15.174095650995856, stochasticD:9.458761061393636, overbought:80 , oversold:20}, + { date: new Date(28), stochasticK: 15.716027638531358, stochasticD:13.340847793617163, overbought:80 , oversold:20}, + { date: new Date(29), stochasticK: 1.0361352156455277, stochasticD:10.642086168390913, overbought:80 , oversold:20}, + { date: new Date(30), stochasticK: 11.671345281796315, stochasticD:9.474502711991066, overbought:80 , oversold:20}, + { date: new Date(31), stochasticK: 2.7250812283824755, stochasticD:5.144187241941439, overbought:80 , oversold:20}, + { date: new Date(32), stochasticK: 1.572079861656806, stochasticD:5.322835457278532, overbought:80 , oversold:20}, + { date: new Date(33), stochasticK: 8.211320754716517, stochasticD:4.169493948251933, overbought:80 , oversold:20}, + { date: new Date(34), stochasticK: 14.385096097158407, stochasticD:8.056165571177244, overbought:80 , oversold:20}, + { date: new Date(35), stochasticK: 11.083598632236642, stochasticD:11.226671828037189, overbought:80 , oversold:20}, + { date: new Date(36), stochasticK: 24.28958849192318, stochasticD:16.586094407106074, overbought:80 , oversold:20}, + { date: new Date(37), stochasticK: 3.904116516637992, stochasticD:13.092434546932603, overbought:80 , oversold:20} ] }; diff --git a/test/spec/bundle/plot/stochasticSpec.js b/test/spec/bundle/plot/stochasticSpec.js index c8c7515b..1daf2e3d 100644 --- a/test/spec/bundle/plot/stochasticSpec.js +++ b/test/spec/bundle/plot/stochasticSpec.js @@ -33,18 +33,18 @@ techanModule('plot/stochastic', function(specBuilder) { .toEqual(''); }); - it('Then contains a stochastic up', function() { + it('Then contains a stochastic %K', function() { expect(childElements[2].outerHTML) - .toEqual(''); + .toEqual(''); }); - it('Then contains a stochastic down', function() { + it('Then contains a stochastic %D', function() { expect(childElements[3].outerHTML) - .toEqual(''); + .toEqual(''); }); }); } }); }); }); -}); \ No newline at end of file +});