Se devi utilizzare lo stesso indicatore su una base dati differente puoi sempre utilizzare il metodo dei database esterni e quindi la funzione Dbexp.
Cioè supponendo che MMT sia il nome dell'indicatore utente (media mobile triangolare) una cosa del tipo:
Dbexp(MMT, "MioDatabaseEsterno")
Se invece intendevi calcolare la media mobile triangolare di un indicatore allora la via più semplice è utilizzare il "Select case" come giustamente hai detto.
Ma non devi ricopiare tutto l'algoritmo. Il select case lo puoi mettere all'interno del primo ciclo For:
Function Main()
Dim PeriodoMedia as Numeric
dim i as Numeric
dim TmpMedia as Numeric = 0
PeriodoMedia = fix(Periodo / 2) + 1
TmpMedia = 0
Select case TipoDato
case 1
for i = 0 to PeriodoMedia - 1
TmpMedia = TmpMedia + Close( - i)
Next i
case 2
....
case ...
endselect
pMedia01(currentbar) = TmpMedia / PeriodoMedia
TmpMedia = 0
for i = 0 to PeriodoMedia - 1
TmpMedia = TmpMedia + pMedia01(currentbar - i)
Next i
Return TmpMedia / PeriodoMedia
Endfunction
Dove "TipoDato" è una proprietà giustamente creata.