[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 >