From: Robert A. S. <ra...@ac...> - 2008-02-29 18:14:21
|
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 > |