;RUTOsc.ini..RUT Price Ocillator ..7/27/03..dab

[Expression]

;This is an optimized signal that buys when RUT Price Oscillator
;rises to 1.4% or 1.69% and sells when it falls below 4.4% or below 1.69%
;or 1.4%.

;out-of-sample signals from 1979 to 1988 are listed at the bottom
;of this file.

;manual iterations

pointchg = 4.1                ;sell@ 1.68 to  1.72

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

;rut-i = Edit(Shift(rut-i, -1), 07/25/03, 473.83)

;create the RUT Price Oscillator which measures the percent
;19d Ema - 39d Ema is above the 39d Ema.

f = rut-i  

R2Osc = 100*(Ema(f, 19) - Ema(f, 39)) / Ema(f, 39)   

;create a signal that buys at 1.69% up and sells at 4.4% or 1.69% down.

X = 1.4;1.69  ;OK  1.68 to 1.72          ;1.4, 3days  best with BTCombo

oscsig.Buy =  Signal(r2osc - X)

oscsig.Sell = Signal(r2osc - 4.4) Or Signal(r2osc - X)   ;4.36 to 4.44

oscsig = Stretch(oscsig, 1) ;to 3  

WriteFile(oscsig, R2OscSg, "R2Osc Sig")
Print(r2oscsg, "R2Oscg Signal")

f = rut-i
ptchg = 19*Ema(f,39) - 18*Ema(f,19)+ .2* X *Ema(f,39) - f

Print(Days(r2oscsg), "Days this Signal\nHoldMin = 1 mktday\n",  ;was 9
     rut-i, "RUT Price",
     rut-i - Shift(rut-i, 1), "RUT 1d PtChg",
     100*Roc(rut-i, 1), "RUT 1d PcntChg\n",
     r2osc, "RUT PrOsc\nBuy: 1.4up\nSell: 4.4 or 1.4\n",
     r2osc - Shift(r2osc, 1), "RUTOsc 1d PtChg\n",
     ptchg, "RUT Pts to reach 1.4")

[SignalPairTrade]
Delay = 0
;Fund = DFSCX
Signal = R2OscSg
;Fund =   PRSVX
Fund =  HRTVX
;Fund =  RUT-i
Index =  PTLDX
StartDate = 9/1/88
HoldMinDays =  1  ;Iterate(1..50)  ;15   7
HistoryDays = 500
FnuFile = R01

[Expression]
F = R01
Print(-100*(Max(f,Sum(f/f)) - f)/Max(f,Sum(f/f)), "Current %DD",
100*Roc(f,1), "1d %Chg",
100*Roc(f,5), "5d %Chg",
100*Roc(f,21), "1mo %Chg",
100*Roc(f,63), "3mo %Chg",
100*Roc(f,126), "6mo %Chg",
100*Roc(f,189), "9mo %Chg",
100*Roc(f,252), "1yr Ann",
100*(Pow((Roc(f,504) + 1), 1/2) - 1), "2yr Ann",
100*(Pow((Roc(f,756) + 1), 1/3) - 1), "3yr Ann",
100*(Pow((Roc(f,1260) + 1), 1/5) - 1), "5yr Ann",
100*(Pow((Roc(f,2016) + 1), 1/8) - 1), "8yr Ann",
100*(Pow((Roc(f,3775) + 1), 1/15) - 1), "15yr Ann\n\n")



;Out-of-Sample signals from 1/1/79 to 9/1/88

;Buy           Sell           RUT %Gain

;03/27/79      05/07/79       0.1%
;08/09/79      09/19/79       3.9
;12/14/79      02/28/80       7.3
;06/02/80      10/30/80      31.0
;11/20/80      12/08/80      -5.2
;03/26/81      05/05/81       0.4
;09/08/82      11/22/82      22.4
;04/18/83      07/18/83      12.8
;08/28/84      07/07/84      -0.3
;01/22/85      03/14/85       4.0
;11/27/85      01/15/86       4.9
;02/18/86      05/06/86       9.5
;01/15/87      04/03/87       8.6
;02/22/88      04/22/88       7.4

;total trades = 14 in 10 years
;winners      = 12 = 85.7%
;average gain =               7.6%
;------------------------------------------------------------------------


;create an "Or" combo signal per BruceR's Imap suggestion of 10/12/03

combo = r2oscsg
        Or nybt0
        Or nyvt0
        Or nynhts   ;ok w/o this one w/ delay = 0
        Or nsbt0    
        ;Or nsnh0
        ;Or nsvt0

;;;;;combo.Sell = combo And nyvt0  ;(from nybvt.ini)
;;;;;combo.Sell = combo And nybt0  ;(from nybt0.ini)

combo.Sell = combo And nynhts      ;(from nynht.ini)

WriteFile(combo, BTCombo, "BTCombo")
WriteFile(Signal(Shift(Vector(btcombo), - 1)), BTCombo0)

Print(btcombo, "BTCombo Signal")

Print("   BTCombo Buys when R2Oscsg Or NYBT0 Or NYVT0 Or NYNHTS Or NSBT0 Buy\n",
      "   BTCombo Sells when any one of the above Sell\n",
      "   NoSell when NYNHTS is on Buy\n")

[SignalPairTrade]
Delay = 0    ;ok w/ delay = 1
Signal = BTCombo
;;Signal = MicroCX  ;use with delay = 1
Fund =    HRTVX    
Index =   PTLDX  ;pttrx ;mucax
StartDate = 8/19/91 ;Iterate(12/31/90..8/19/01) ;8/19/91
;;StartDate = 4/19/91  ;same mdd here
HistoryDays = 255
HoldMinDays = 5  ;Iterate(1..20)  ;or 1
FnuFile = R02

[Expression]
F = R02
Print(-100*(Max(f,Sum(f/f)) - f)/Max(f,Sum(f/f)), "Current %DD",
100*Roc(f,1), "1d %Chg",
100*Roc(f,5), "5d %Chg",
100*Roc(f,21), "1mo %Chg",
100*Roc(f,63), "3mo %Chg",
100*Roc(f,126), "6mo %Chg",
100*Roc(f,189), "9mo %Chg",
100*Roc(f,210), "10mo %Chg", 
100*Roc(f,252), "1yr Ann",
100*(Pow((Roc(f,504) + 1), 1/2) - 1), "2yr Ann",
100*(Pow((Roc(f,756) + 1), 1/3) - 1), "3yr Ann",
100*(Pow((Roc(f,1008) + 1), 1/4) - 1), "4yr Ann",
100*(Pow((Roc(f,1260) + 1), 1/5) - 1), "5yr Ann",
100*(Pow((Roc(f,2520) + 1), 1/10) - 1), "10yr Ann",
100*(Pow((Roc(f,3024) + 1), 1/12) - 1), "12yr Ann\n\n")


[Expression]

Print(r2oscsg,  " *R2OscSg* Signal",
     nybt0,     "   *NYBT0* Signal",
     nyvt0,     "   *NYVT0* Signal",
     nynhts,    "  *NYNHTS* Signal",
     nsbt0,     "   *NSBT0* Signal",
     nsnh0,     "     NSNH0 Signal",
     nsvt0,     "     NSVT0 Signal")