Skip to content

Commit

Permalink
fix stochastic line classes
Browse files Browse the repository at this point in the history
  • Loading branch information
briancappello committed Oct 8, 2016
1 parent fd143e8 commit 878e676
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 56 deletions.
12 changes: 2 additions & 10 deletions src/accessor/stochastic.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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();
};
};
17 changes: 5 additions & 12 deletions src/indicator/stochastic.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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; });
}

Expand All @@ -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 = _;
Expand All @@ -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 };
}
21 changes: 10 additions & 11 deletions src/plot/stochastic.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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);
}
35 changes: 17 additions & 18 deletions test/spec/bundle/_fixtures/data/stochastic.js
Original file line number Diff line number Diff line change
@@ -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},
Expand Down Expand Up @@ -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}
]
};
10 changes: 5 additions & 5 deletions test/spec/bundle/plot/stochasticSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,18 @@ techanModule('plot/stochastic', function(specBuilder) {
.toEqual('<path class="oversold" d="M 0.17105263157894737 20 L 0.8289473684210527 20"></path>');
});

it('Then contains a stochastic up', function() {
it('Then contains a stochastic %K', function() {
expect(childElements[2].outerHTML)
.toEqual('<path class="stochastic up" d="M0.17105263157894737,21.294498381877336C0.2807017543859649,12.682132911869058,0.39035087719298245,4.069767441860778,0.5,4.069767441860778C0.6096491228070176,4.069767441860778,0.7192982456140351,6.601093766592526,0.8289473684210527,9.132420091324274"></path>');
.toEqual('<path class="stochastic k" d="M0.17105263157894737,21.294498381877336C0.2807017543859649,12.682132911869058,0.39035087719298245,4.069767441860778,0.5,4.069767441860778C0.6096491228070176,4.069767441860778,0.7192982456140351,6.601093766592526,0.8289473684210527,9.132420091324274"></path>');
});

it('Then contains a stochastic down', function() {
it('Then contains a stochastic %D', function() {
expect(childElements[3].outerHTML)
.toEqual('<path class="stochastic down" d="M0.17105263157894737,16.88836565330361C0.2807017543859649,12.980963726739544,0.39035087719298245,9.073561800175478,0.5,9.073561800175478C0.6096491228070176,9.073561800175478,0.7192982456140351,10.286228552598136,0.8289473684210527,11.498895305020795"></path>');
.toEqual('<path class="stochastic d" d="M0.17105263157894737,16.88836565330361C0.2807017543859649,12.980963726739544,0.39035087719298245,9.073561800175478,0.5,9.073561800175478C0.6096491228070176,9.073561800175478,0.7192982456140351,10.286228552598136,0.8289473684210527,11.498895305020795"></path>');
});
});
}
});
});
});
});
});

0 comments on commit 878e676

Please sign in to comment.