PureBytes Links
Trading Reference Links
|
2 things are apparent from this:
1) Omega has rewritten many (or all ?) of the horribly inefficient built-in
TS2000i functions and indicators for TS/Pro to take advantage of the
numericref value passing capability.
(too bad TS2000i users !)
2) Omega has fixed the numericref bug in TS/Pro that exists in TS2000i/SP5
whereby history references to numericref variables are not permitted.
(too bad TS2000i users !)
> -----Original Message-----
> From: Jack Griffin [mailto:jack_2231@xxxxxxxxx]
> Sent: Sunday, May 27, 2001 12:18 PM
> To: omega-list@xxxxxxxxxx
> Subject: TS Pro code not compatible with TS 2000i?!
>
>
> When I try to compile the DirMovement function in
> TS2000i, I get an error. The function is the same as
> that from TS PRO. The error is, "This word cannot
> start a statement." Line 92. What obvious thing am
> I missing? I do not have a function called oADXR, so
> that is not the problem. Function type is series.
> Anyone know what is wrong? If not, anyone mind
> posting the DirMovement code that does compile in
> TS2000i?
>
> Jack
>
> The bad (TS PRO only) code follows:
>
> { Directional Movement multiple-output function }
>
> inputs:
> PriceH( numericseries ),
> PriceL( numericseries ),
> PriceC( numericseries ),
> Length( numericsimple ),
> oDMIPlus( numericref ),
> oDMIMinus( numericref ),
> oDMI( numericref ),
> oADX( numericref ),
> oADXR( numericref ),
> oVolatility( numericref ) ;
>
> variables:
> PlusDM( 0 ),
> MinusDM( 0 ),
> UpperMove( 0 ),
> LowerMove( 0 ),
> SumPlusDM( 0 ),
> SumMinusDM( 0 ),
> SumTR( 0 ),
> AvgPlusDM( 0 ),
> AvgMinusDM( 0 ),
> SF( 1 / Length ), { smoothing factor }
> Divisor( 0 ) ;
>
> if CurrentBar = 1 then
> begin
> for Value1 = 0 to Length - 1
> begin
> PlusDM = 0 ;
> MinusDM = 0 ;
> UpperMove = PriceH[Value1] - PriceH[ Value1 + 1 ] ;
> LowerMove = PriceL[ Value1 + 1 ] - PriceL[Value1] ;
> if UpperMove > LowerMove and UpperMove > 0 then
> PlusDM = UpperMove
> else if LowerMove > UpperMove and LowerMove > 0 then
> MinusDM = LowerMove ;
> SumPlusDM = SumPlusDM + PlusDM ;
> SumMinusDM = SumMinusDM + MinusDM ;
> SumTR = SumTR + TrueRangeCustom( PriceH, PriceL,
> PriceC )[Value1] ;
> end ;
> AvgPlusDM = SumPlusDM / Length ;
> AvgMinusDM = SumMinusDM / Length ;
> oVolatility = SumTR / Length ;
> end
> else
> begin
> PlusDM = 0 ;
> MinusDM = 0 ;
> UpperMove = PriceH - PriceH[1] ;
> LowerMove = PriceL[1] - PriceL ;
> if UpperMove > LowerMove and UpperMove > 0 then
> PlusDM = UpperMove
> else if LowerMove > UpperMove and LowerMove > 0 then
> MinusDM = LowerMove ;
> AvgPlusDM = AvgPlusDM[1] + SF * ( PlusDM -
> AvgPlusDM[1] ) ;
> AvgMinusDM = AvgMinusDM[1] + SF * ( MinusDM -
> AvgMinusDM[1] ) ;
> oVolatility = oVolatility[1] + SF * (
> TrueRangeCustom( PriceH, PriceL, PriceC )
> - oVolatility[1] ) ;
> end ;
>
> if oVolatility = 0 then
> begin
> oDMIPlus = 0 ;
> oDMIMinus = 0 ;
> end
> else
> begin
> oDMIPlus = 100 * AvgPlusDM / oVolatility ;
> oDMIMinus = 100 * AvgMinusDM / oVolatility ;
> end ;
>
> Divisor = oDMIPlus + oDMIMinus ;
> if Divisor <> 0 then
> oDMI = 100 * AbsValue( oDMIPlus - oDMIMinus ) /
> Divisor
> else
> oDMI = 0 ;
>
> if CurrentBar <= Length then
> begin
> oADX = Cum( oDMI ) / CurrentBar ;
> oADXR = ( oADX + oADX[ CurrentBar - 1 ] ) / 2 ;
> { these approximate "length build-up" calculations
> are used until we have enough
> data; such approximations work well for averaging
> type calculations, but not
> summation type calculations; approximations using
> "backpropagation", on the
> other hand, as in the MassIndex and Stochastic
> functions, always work well }
> end
> else
> begin
> {LINE 92 (the one with the error)} oADX = oADX[1] + SF
> * ( oDMI - oADX[1] ) ;
> oADXR = ( oADX + oADX[ Length - 1 ] ) / 2 ;
> end ;
>
> DirMovement = 1 ; { function return always 1, not
> used; only outputs used }
>
>
> { *** Copyright (c) 1991-2000 TradeStation. All rights
> reserved. *** }
>
>
>
|