Time Range Moving Averages (Simple-Exponential-Weighted): TRSMA – TREMA – TRWMA

Category: Indicators By: robertogozzi Created: May 22, 2019, 4:40 PM
May 22, 2019, 4:40 PM
Indicators
7 Comments

Following a request by user discovery2005 (https://www.prorealcode.com/topic/media-mobile-a-tempo/) on the italiam forum, I coded these 3 MA’s to limit calculations to the desired time range, without being affected by data outside that same range.

// TRSMA
//
// Time Range Simple Moving Average
//
DEFPARAM CalculateOnLastBars = 200
//Periods    = 20
//StartTime  = 090000
//EndTime    = 180000
Periods      = max(2,min(999,Periods))
StartTime    = max(0,min(240000,StartTime))
EndTime      = max(0,min(240000,EndTime))
//
i     = 0
TRSMA = 0
FOR j = 0 TO 3000
   IF opentime[j] >= StartTime AND opentime[j] <= EndTime THEN
      TRSMA = TRSMA + close[j]
      i = i + 1
      IF i = Periods THEN
         BREAK
      ENDIF
   ENDIF
NEXT
TRSMA = (TRSMA / Periods)
IF TRSMA = 0 THEN
   TRSMA = close
ENDIF
Return TRSMA AS "TRSMA"
// TREMA
//
// Time Range Exponential Moving Average
//
DEFPARAM CalculateOnLastBars = 200
//Periods    = 20
//StartTime  = 090000
//EndTime    = 175000
Periods      = max(2,min(999,Periods))
StartTime    = max(0,min(240000,StartTime))
EndTime      = max(0,min(240000,EndTime))
//
Alpha = 2 / (Periods + 1)
i     = 0
TREMA = close
FOR j = 0 TO 3000
   IF opentime[j] >= StartTime AND opentime[j] <= EndTime THEN
      i = i + 1
      TREMA = ((close[j] - TREMA) * Alpha) + TREMA
      IF i = Periods THEN
         BREAK
      ENDIF
   ENDIF
NEXT
IF TREMA = 0 THEN
   TREMA = close
ENDIF
Return TREMA AS "TREMA"
// TRWMA
//
// Time Range Weighted Moving Average
//
DEFPARAM CalculateOnLastBars = 200
//Periods    = 20
//StartTime  = 090000
//EndTime    = 175000
Periods      = max(2,min(999,Periods))
StartTime    = max(0,min(240000,StartTime))
EndTime      = max(0,min(240000,EndTime))
//
i     = 0
Pond  = 0
TRWMA = 0
FOR j = 0 TO 3000
   IF opentime[j] >= StartTime AND opentime[j] <= EndTime THEN
      i = i + 1
      TRWMA  = TRWMA + (close[j] * i)
      Pond = Pond + i
      IF i = Periods THEN
         BREAK
      ENDIF
   ENDIF
NEXT
TRWMA = (TRWMA / Pond)
IF TRWMA = 0 THEN
   TRWMA = close
ENDIF
Return TRWMA AS "TRWMA"

Download
Filename: TREMA-Time-Range-EMA-1.itf
Downloads: 61
Download
Filename: TRSMA-Time-Range-SMA-1.itf
Downloads: 52
Download
Filename: TRWMA-Time-Range-WMA-1.itf
Downloads: 51
Download
Filename: TR-Moving-Averages.jpg
Downloads: 39
robertogozzi Master
Roberto https://www.ots-onlinetradingsoftware.com
Author’s Profile

Comments

Logo Logo
Loading...