# NEOTICKER DATA BEGIN
ScriptType=Indicator
Description=TASC Distance Coefficient Ehlers Filter
Name=tasc_dcef
Language=VBScript
Links=1
MinBars=10
Plot_color=255
Plot_style=Line
Param_name_0=LookBack
Param_inuse_0=1
Param_type_0=integer.gt.0
Param_default_0=5
Param_name_1=Sum
Param_inuse_1=1
Param_type_1=integer.gt.0
Param_default_1=5
Param_inuse_2=0
Param_type_2=string
Param_inuse_3=0
Param_type_3=string
Explanation_Lines=0
# NEOTICKER DATA END

'NeoTicker Additional Indicator
'written by Kenneth Yuen, May 2001
'Copyright by TickQuest Inc.
'All right reserved

'Distance Coefficient Ehlers Filter
'Stock & Commodities Magazine. April, 2001
'Revised by Kenneth Yuen, May 2008

Function tasc_dcef()

dim AvgPrice
dim numerator, denominator

   if Param2.int < Param1.int then
      itself.success = false
      ntlib.debug("Invalid Input Cofficient Sum must be larger that Lookback")
      exit function
   end if

   if not data1.valid (0) then
      itself.success = false
      exit function
   end if

   AvgPrice = itself.makeindicator("avgp", "fml", Array("1"), Array("(h+l)/2"))
   CurrCoeff = 0
   for i = 1 to param1.int
      CurrCoeff = CurrCoeff+ntlib.power((AvgPrice.value(0)-AvgPrice.value(i)),2)
   next
   CurrCMA = CurrCoeff*AvgPrice.value(0)

   itself.setseries "ds_coeff", CurrCoeff, true
   itself.setseries "ds_cma",   CurrCMA,   true

   denominator = itself.makeindicator ("sum_coeff", "summation", _
                                     Array("$ds_coeff"), Array(Param2.str))
   numerator = itself.makeindicator ("sum_cma", "summation", _
                                     Array("$ds_cma"), Array(param2.str))

   if (denominator.value (0) = 0) or not denominator.valid (0) then
      itself.success = false
   else
      itself.plot (1) = numerator.value(0)/denominator.value(0)
   end if

End Function

