;ruttr.ini (revised)

[Expression]

;RUTTRFT.ini...FredT...9/29 and 30, 2004
;RUTMC2X.sig added 3/11/05..dab
;Vector version option added 3/06  >>>>>>>>>    LINES 81 and 87+88

PtChg = -10

;; rut-i = Edit(Shift(rut-i, -1), 12/31/06, Last(rut-i) + PtChg)

                 ;; rut-i = Edit(rut-i, 11/8/05

; PARAMETERS

ROCMin   = 1.1 ;1.08 ;1.0  ;1.1     ;1.08 to 1.11

StoLen1  = 65   ;22
StoLen2  = 75   ;1
StoLen3  = 13   ;27
StoMinS  = 87   ;83

MACDLen1 = 15 ;20 ;<<<<<<<<<<< dab..chg   ;1
MACDLen2 = 30                             ;71
MACDLen3 = 40                             ;50

RSILen   = 40   ;61
RSILB    = 4    ;54

StretchDays =  18     ;mkt days   best 18 (rocmin = 1.1), 12 (rocmin = 1.0)
                 
; STOCHASTIC

; Fast K
FastK    = 100 * (RUT-i - Min(RUT-i, StoLen1)) /
                 (Max(RUT-i, StoLen1) - Min(RUT-i, StoLen1))

; Fast D
FastD    = Ema(FastK, StoLen2)

; Slow D
SlowD    = Ema(FastD, StoLen3)

StoSig.Buy  = Signal(FastD - SlowD)
StoSig      = Edit(StoSig, 9/1/88, Buy)
StoSig.Sell = Signal(FastD - SlowD) And Signal(SlowD - StoMinS)
   
; MACD
; MACDLen1 = 20
; MACDLen2 = 30
; MACDLen3 = 40
MACD     = Ema(RUT-i, MACDLen1) - Ema(RUT-i, MACDLen2)
MACDema  = Ema(MACD, MACDLen3)
MACDSig  = Signal(MACD - MACDema)

Print(FastD - SlowD, "FastD-SlowD",
      FastD-SlowD - Shift(FastD-SlowD, 1), "1d PtChg\n",
      MACD - MACDema, "MACD-MACDema",
      MACD - MACDema - Shift(MACD - MACDema, 1), "1d PtChg\n\n") 

; RSI
; RSILen   = 40 
; RSILB    =  4
RSIx     = Rsi(RUT-i, RSILen)
SRSI     = 100 * (RSIx - Min(RSIx, RSILen)) / (Max(RSIx, RSILen) - Min(RSIx, RSILen))
SRSISig  = Signal(SRSI - Shift(SRSI, RSILB))

; ROCx
;;ROCMin   = 1.1       ;-1
ROCx     = 100 * Roc(RUT-i, 1)        ;1d chg
ROCSig   = Signal(ROCx + ROCMin)      ;1d chg + 1
;ROCSig   = Signal(100*Roc(rut-i, 1) + 1.1)   ;or 1.0

;;Print(100*Roc(rut-i, 1) + 1, "ROCSig\n", 6)

; RUTTR
;;RUTTR.Buy  = StoSig And MACDSig And SRSISig

;BELOW is Vector Version
 ruttr.Buy  = Signal(Vector(stosig) And Vector(macdsig) And Vector(srsisig))


;;RUTTR.Sell = StoSig And MACDSig And SRSISig And ROCSig

;BELOW is Vector Version
ruttr.Sell = Not Signal(Not Vector(stosig) And Not Vector(macdsig) And
             Not Vector(srsisig) And Not Vector(rocsig))

;RUTTR.Sell = RUTTR And Signal(Rsi(RUT-i, RsiDays) - NoSell)  ;nosell    > 60
RUTTR      = Stretch(RUTTR, StretchDays)  ;18  


;stoploss based on decline from peak
;fund = rut-i
;stoploss = 7.5  
;days = Shift(Days(ruttr) + 1, 0)   ;Days(ruttr) + 1
;peak = Max(fund, days)
;cdd = 100 * (peak - fund) / peak
;;ruttr = Signal(Vector(ruttr))                     ;;;suggested by brucer
;;ruttr.Buy = ruttr
;;ruttr.Sell = ruttr Or Signal(stoploss - cdd)

;stoploss based on decline from Buy price
fund     = rut-i
stoploss = 7.5   ;same to 7.3
days     = 18  ;same 13 to 23
cdd = 100*(Max(fund, days) - fund) / Max(fund, days)
Print(-cdd, "18d CDD\n\n")
;;ruttr = Signal(Vector(ruttr))                   ;;;;suggested by by brucer
ruttr.Buy = ruttr
ruttr.Sell = ruttr Or Signal(stoploss - cdd)


WriteFile(RUTTR, RUTTRFT, "RUTTRFT")
WriteFile(Signal(Shift(Vector(ruttrft), -1)), RUTTRFT0)
Print(ruttrft, "RUTTRFT Signal")
;Print(peak, "RUT Peak this Signal\n",  
;      -cdd, "RUT Current %DD\nStopLoss = -7.5%\n",
;       (1 - .075)*peak - rut-i, "RUT Pts Reqd to StopLoss\n\n")

Print(-.0108*fund, "-1.08% of RUT")
Print(Max(fund, 18), "RUT 18d Peak\n",
      -cdd, "RUT Current 18d %DD\nStopLoss = -7.5%\n",
      (1 - .075)*Max(fund, 18) - fund, "RUT Pts Reqd to StopLoss\n\n")

Print(Days(ruttrft), "Days this Signal\nHoldMin = 18 mdays")

Print(StoSig,  " StoSig",
      MACDSig, "MACDSig",
      SRSISig, "SRSISig",
      ROCSig,  " ROCSig")


Print("\n")
combo.Buy =  Ruttrft0  And MicroC2x     ;ruttrft ok
combo.Sell = Ruttrft0 Or MicroC2x      ;ruttrft ok
WriteFile(combo, RUTMC2X, "RuttrFT+MicroC2x")

;combo.Buy = Ruttrft0 And IndxInt
;combo.Sell = Ruttrft0 Or IndxInt
;WriteFile(combo, IdxInRUT)

Print("           RUTMC2X Buys when Both RuttrFT(d=0) And MicroC2X(d=1) Buy\n
           RUTMC2X Sells when Either RuttrFt(d=0) Or MicroC2X(d=1) Sell")

[SignalPairTrade]
Delay     = 0
StartDate = 12/21/88  ;Iterate(9/1/88..12/31/88)  ;11/30/88   12/21
Fund      = DFSCX ;SVPIC ;rut-i ;hrtvx ;dfscx  
Index     = FDRXX ;ptldx
HoldMinDays =   1  ;Iterate(1..60) ; 3 to 7 or 27   
Signal    = RUTTRFT  ;use d=0
FnuFile   = RU01

[SignalPairTrade]
Signal = ruttrft
Fund = RU01
Index = RU01
StartDate = 12/30/05
HistoryDays = 0
FnuFile = RU02
[Expression]
Print(-100*(Max(RU01,Sum(RU01/RU01)) - RU01) / Max(RU01, Sum(RU01/RU01)), "Current %DD\n",
RU01/10 - 100, "YTD %Chg\n",
100*Roc(RU01,1), "1d %Chg",
100*Roc(RU01,5), "5d %Chg",
100*Roc(RU01,21), "1mo %Chg",
100*Roc(RU01,63), "3mo %Chg",
100*Roc(RU01,126), "6mo %Chg",
100*Roc(RU01,189), "9mo %Chg",
100*Roc(RU01,252), "1yr Ann",
100*(Pow((Roc(RU01,1260) + 1), 1/5) - 1), "5yr Ann",
100*(Pow((Roc(RU01,2268) + 1), 1/9) - 1), "9yr Ann", 
100*(Pow((Roc(RU01,2520) + 1), 1/10) - 1), "10yr Ann",
100*(Pow((Roc(RU01,4158) + 1), 1/16.5) - 1), "16.5yr Ann") 




[SignalPairTrade]
Delay   = 1
Signal  = RUTMC2X
;Signal = RUTTRFT0
;Signal = MicroC2X
;;Signal = RutVol
Fund    = DFSCX        
;Fund = FKASX
;Fund = GEGAX
;Fund = SCOVX
;Fund = BRSVX
;Fund = RYVPX
Index   = FDRXX
StartDate = 12/21/88
;StartDate = 11/12/96 ;last 8.3 yrs s/y = 2.2
HoldMinDays = 6  ;Iterate(1..30)  
FnuFile = RU03

[SignalPairTrade]
Signal = RUTMC2X
Fund   = RU03
Index  = RU03
StartDate = 12/30/05
HistoryDays = 0
FnuFile = RU04

[Expression]
Print(-100*(Max(RU04, Sum(RU04/RU04)) - RU04)/Max(RU04, Sum(RU04/RU04)), "Current %DD\n",
RU04/10 - 100, "YTD %Chg\n",
100*Roc(RU04,1), "1d %Chg",
100*Roc(RU04,5), "5d %Chg",
100*Roc(RU04,21), "1mo %Chg",
100*Roc(RU04,63), "3mo %Chg",
100*Roc(RU04,126), "6mo %Chg",
100*Roc(RU04,189), "9mo %Chg",
100*Roc(RU04,252), "1yr Ann",
100*(Pow((Roc(RU04,504) + 1), 1/2) - 1), "2yr Ann",
100*(Pow((Roc(RU04,756) + 1), 1/3) - 1), "3yr Ann",
100*(Pow((Roc(RU04,1008) + 1), 1/4) - 1), "4yr Ann",
100*(Pow((Roc(RU04,1260) + 1), 1/5) - 1), "5yr Ann",
100*(Pow((Roc(RU04,4284) + 1), 1/17) - 1), "17yr Ann\n")




Print(ruttrft, " RUTTRFT Signal",
     microc2x, "MicroC2X Signal")