[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [GT] DSS [fixed]
Weigert, Thomas wrote:
kw,
I looked at your DSSkw; I am not quite sure what you are trying to do
here, but I don't think the indicator does what it says in the
description.
The pod says: "The DSSkw is calculated as follows:
DSSkw (p1, p2, p3) = EMA( EMA( Close - Lowest(p1), p2), p3 ) /
EMA( EMA( Highest(p1) - Lowest(p1), p2), p3 )
But the code does
EMA(EMA( 100 * ((Close - Lowest(p1))
/ (Highest(p1) - Lowest(p1))), p2), p3)
Cheers, Th.
karsten, thomas
i looked, not very hard, but did look and found very little (in english)
on the double smoothed stochastic. i've added what i found useful below.
so a dss is an ema of an ema of a stochastic oscillator. the sto in gt
outputs 4 values, which is the oscillator?
in initialize $sto1 and $sto2 are setting up the stochastic oscillator
computation without using the module STO.pm?
sto1={I:G:Eval {I:G:MaxInPeriod 5{I:Prices CLOSE}} - {I:G:MinInPeriod 5{I:Prices CLOSE}}}
sto2={I:G:Eval {I:G:MaxInPeriod 5{I:Prices CLOSE}} - {I:G:MinInPeriod 5{I:Prices CLOSE}}}
it's all very puzzling to me.
ras
i found the following bit at http://www.wealth-lab.com/cgi-bin/WealthLab.DLL/getdoc?id=128
DSS stands for Double Smoothed Stochastic, an indicator developed by
William Blau. DSS applies 2 smoothing EMAs of different lengths to a
Stochastic Oscillator. The EMA smoothing periods are passed as the first
two function parameters, and the Stochastic period as the third.
Interpretation
DSS ranges from 0 to 100, like the standard Stochastic Oscillator. The
same rules of interpretation that you use for Stochastics can be applied
to DSS, although DSS offers a much smoother curve than Stochastics.
DSS( Bar, Period1, Period2, StochPeriod: integer ): float;
DSSSeries( Period1, Period2, StochPeriod: integer ): integer;
Example
{ Buy when DSS turns up from an oversold level }
var Bar, DSSPane: integer;
DSSPane := CreatePane( 100, true, true );
PlotSeries( DSSSeries( 10, 20, 5 ), DSSPane, 905, #Thick );
DrawLabel( 'DSS( 10, 20, 5 )', DSSPane );
for Bar := 20 to BarCount - 1 do
begin
if not LastPositionActive then
begin
if TurnUp( Bar, DSSSeries( 10, 20, 5 ) ) then
if DSS( Bar - 1, 10, 20, 5 ) < 24 then
BuyAtMarket( Bar + 1, 'DSS' );
end
else
begin
if TurnDown( Bar, DSSSeries( 10, 20, 5 ) ) then
SellAtMarket( Bar + 1, LastPosition, 'DSS' );
end;
end;
< snip >