Non-price indicators

artz

New Member
#1
Hi,

I ran across an interesting paper the other day describing improvements to trading profit and lower drawdowns by incorporating non-price data in the system logic.

The PDF which describes the methodology may be found at this link:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CC0QFjAB&url=http%3A%2F%2Fwww.finanzaonline.com%2Fforum%2Fattachments%2Fanalisi-tecnica-t-s-e-psicologia-del-trading%2F1736241d1366475655-trend-following-way-good-life-not-lucky-monkey-amy-code.pdf&ei=2TMiU9SeMMfgoASPpIBg&usg=AFQjCNHRXpOWVEvLlCZiamoIRfj6u-rd1A&bvm=bv.62922401,d.cGU

Also, below is the code for optimizing the EMA parameters, though not the final trading system.

Code:
//----------------------------------------------------------------------------------
// *** IO Directives - Parsed As Comments
// To Disable a Directive, Mark As
//xIO
// UseDefault and SaveCancelled allows seeding a run with a previous solution
//----------------------------------------------------------------------------------
//Standard IO Setup
// *** IO Fitness Directives page 18 - 20
//IO: Fitness: CAR * UPI
// ***Goal Directives page 21
//IO: Goal: CAR: >: 20: Bonus: 1.1
//IO: Goal: MDD: <: 10: Bonus: 1.1
// *** IO General Directives page 22 - 23
// *** IO Sensitivity Directives page 24 - 25
//IO: SenOptRanges: 3
//IO: SenOptRangeWt: 2
//IO: SenOptGoal%: 100
// *** IO In & Out of Sample Directives page 26 - 29
//xIO: BegISDate: 01/02/98
//xIO: EndISDate: 12/31/02
//xIO: BegOSReal: 01/02/03
//xIO: EndOSReal: 12/31/06
//xIO: WFAuto: Rolling: 3Months
// *** IO Expert Paramenters
// *** IO Options page 30 - 33
//IO: UseDefault: Y
//IO: SaveCancelled: Y
//----------------------------------------------------------------------------------

function MyEma(Ticker, Period)
{
res = AMA(Ticker, 2 / (Period + 1));
return res;
}
//----------------------------------------------------------------------------------
//www.fasttrack.net for non-price data
fund= Foreign("rut-i", "Close");// Russell 2000 Index
RUTS = Optimize("RUTS", 34, 13, 233, 1);
RUTL = Optimize("RUTL", 377, 89, 610, 1);
rutb = Cross(MyEma(fund, RUTS), MyEma(fund,RUTL));
ruts = Cross(MyEma(fund,RUTL), MyEma(fund,RUTS));

fund= Foreign("spy", "Close");// S&P 500 Index
SPS = Optimize("SPS", 34, 13, 233, 1);
SPL = Optimize("SPL", 377, 89, 610, 1);
spb = Cross(MyEma(fund, SPS), MyEma(fund,SPL));
sps = Cross(MyEma(fund,SPL), MyEma(fund,SPS));


fund= Foreign("$nynl", "Close");// NYSE New Lows
NYLS = Optimize("NSLS", 8, 3, 89, 1);
NYLL = Optimize("NSLL", 144, 13, 610, 1);
nynlb = Cross(MyEma(fund, NYLL), MyEma(fund,NYLS));
nynls = Cross(MyEma(fund,NYLS), MyEma(fund,NYLL));

fund= Foreign("$nynh", "Close");// NYSE New Highs
NYHS = Optimize("NYHS", 8, 3, 89, 1);
NYHL = Optimize("NYHL", 144, 13, 610, 1);
nynhb = Cross(MyEma(fund, NYHS), MyEma(fund,NYHL));
nynhs = Cross(MyEma(fund,NYHL), MyEma(fund,NYHS));

fund= Foreign("$dvol", "Close");// NYSE Down Volume
NYDVS = Optimize("NYDVS", 34, 3, 89, 1);
NYDVL = Optimize("NYDVL", 144, 34, 610, 1);
nydvolb = Cross(MyEma(fund, NYDVL), MyEma(fund,NYDVS));
nydvols = Cross(MyEma(fund,NYDVS), MyEma(fund,NYDVL));

fund= Foreign("$uvol", "Close");// NYSE Up Volume
NYUVS = Optimize("NYUVS", 34, 3, 89, 2);
NYUVL = Optimize("NYUVL", 144, 34, 610, 1);
nyuvolb = Cross(MyEma(fund, NYUVS), MyEma(fund,NYUVL));
nyuvols = Cross(MyEma(fund,NYUVL), MyEma(fund,NYUVS));

fund= Foreign("NSNLQ", "Close");//NASDAQ New Lows
NSLS = Optimize("NSLS", 8, 3, 89, 1);
NSLL = Optimize("NSLL", 144, 13, 610, 1);
nsnlb = Cross(MyEma(fund, NSLL), MyEma(fund,NSLS));
nsnls = Cross(MyEma(fund,NSLS), MyEma(fund,NSLL));

fund= Foreign("NSNHQ", "Close");//NASDAQ New Highs
NSHS = Optimize("NSHS", 8, 3, 89, 1);
NSHL = Optimize("NSHL", 144, 13, 610, 1);
nsnhb = Cross(MyEma(fund, NSHS), MyEma(fund,NSHL));
nsnhs = Cross(MyEma(fund,NSHL), MyEma(fund,NSHS));

fund= Foreign("DVOLQ", "Close");//NASDAQ Down Volume
DVS = Optimize("DVS", 34, 3, 89, 1);
DVL = Optimize("DVL", 144, 34, 610, 1);
dvolb = Cross(MyEma(fund, DVL), MyEma(fund,DVS));
dvols = Cross(MyEma(fund,DVS), MyEma(fund,DVL));

fund= Foreign("UVOLQ", "Close");//NASDAQ Up Volume
UVS = Optimize("UVS", 34, 3, 89, 2);
UVL = Optimize("UVL", 144, 34, 610, 1);
uvolb = Cross(MyEma(fund, UVS), MyEma(fund,UVL));
uvols = Cross(MyEma(fund,UVL), MyEma(fund,UVS));

nynlemab = Flip(nynlb, nynls);
nynlemas = NOT(nynlemab);

BuynynlState = Flip(nynlemab,nynlemas);
SellnynlState = Flip(nynlemas,nynlemab);

nynhemab = Flip(nynhb, nynhs);
nynhemas = NOT(nynhemab);

BuynynhState = Flip(nynhemab,nynhemas);
SellnynhState = Flip(nynhemas,nynhemab);

nydvolemab = Flip(nydvolb, nydvols);
nydvolemas = NOT(nydvolemab);

BuynydvState = Flip(nydvolemab,nydvolemas);
SellnydvState = Flip(nydvolemas,nydvolemab);

nyuvolemab = Flip(nyuvolb, nyuvols);
nyuvolemas = NOT(nyuvolemab);

BuynyuvState = Flip(nyuvolemab,nyuvolemas);
SellnyuvState = Flip(nyuvolemas,nyuvolemab);

Buynya = BuynynlState AND BuynydvState;
Sellnya = SellnynlState AND SellnydvState;

BuynyaState = Flip(Buynya, Sellnya);
SellnyaState = Flip(Sellnya, Buynya);

BuynyaImp = ExRem(Buynya, Sellnya);
SellnyaImp = ExRem(Sellnya,Buynya);

Buynyb = BuynynhState AND BuynyuvState;
Sellnyb = SellnynhState AND SellnyuvState;

BuynybState = Flip(Buynyb, Sellnyb);
SellnybState = Flip(Sellnyb, Buynyb);

BuynybImp = ExRem(Buynyb, Sellnyb);
SellnybImp = ExRem(Sellnyb,Buynyb);

BuyspmktState = Flip(spb,sps);
SellspmktState = Flip(sps,spb);

BuyspmktImp = ExRem(spb,sps);
SellspmktImp = ExRem(sps,spb);

Buyny = IIf(BuyspmktState,BuynyaState, BuynybState);
Sellny = IIf(BuyspmktState,SellnyaState,SellnybState);

BuynyState = Flip(Buyny, Sellny);
SellnyState = Flip(Sellny, Buyny);

BuynyImp = ExRem(Buyny, Sellny);
SellnyImp = ExRem(Sellny,Buyny);

Buyny1 = BuynyState AND BuynyaState;
Sellny1 = SellnybImp OR SellnyaImp;

Buyny1State = Flip(Buyny1, Sellny1);
Sellny1State = Flip(Sellny1, Buyny1);

Buyny1Imp = ExRem(Buyny1, Sellny1);
Sellny1Imp = ExRem(Sellny1,Buyny1);

nsnlqemab = Flip(nsnlb, nsnls);
nsnlqemas = NOT(nsnlqemab);
BuynlState = Flip(nsnlqemab,nsnlqemas);
SellnlState = Flip(nsnlqemas,nsnlqemab);

nsnhqemab = Flip(nsnhb, nsnhs);
nsnhqemas = NOT(nsnhqemab);
BuynhState = Flip(nsnhqemab,nsnhqemas);
SellnhState = Flip(nsnhqemas,nsnhqemab);

dvolqemab = Flip(dvolb, dvols);
dvolqemas = NOT(dvolqemab);
BuydvState = Flip(dvolqemab,dvolqemas);
SelldvState = Flip(dvolqemas,dvolqemab);

uvolqemab = Flip(uvolb, uvols);
uvolqemas = NOT(uvolqemab);
BuyuvState = Flip(uvolqemab,uvolqemas);
SelluvState = Flip(uvolqemas,uvolqemab);

rutmktb = Flip(rutb, ruts);
rutmkts = NOT(rutmktb);
BuyrutmktState = Flip(rutmktb,rutmkts);
SellrutmktState = Flip(rutmkts,rutmktb);

BuyrutmktImp = ExRem(rutmktb, rutmkts);
SellrutmktImp = ExRem(rutmkts, rutmktb);

Buynsa = (BuynlState AND BuydvState);
Sellnsa = (SellnlState AND SelldvState);

BuynsaState = Flip(Buynsa, Sellnsa);
SellnsaState = Flip(Sellnsa, Buynsa);

BuynsaImp = ExRem(Buynsa, Sellnsa);
SellnsaImp = ExRem(Sellnsa,Buynsa);

Buynsb = (BuynhState AND BuyuvState);
Sellnsb = (SellnhState AND SelluvState);

BuynsbState = Flip(Buynsb, Sellnsb);
SellnsbState = Flip(Sellnsb, Buynsb);

BuynsbImp = ExRem(Buynsb, Sellnsb);
SellnsbImp = ExRem(Sellnsb,Buynsb);

Buyns1 = IIf(BuyrutmktState,BuynsaState, BuynsbState);
Sellns1 = IIf(BuyrutmktState,SellnsaState,SellnsbState);

Buyns1State = Flip(Buyns1, Sellns1);
Sellns1State = Flip(Sellns1, Buyns1);

Buyns1Imp = ExRem(Buyns1, Sellns1);
Sellns1Imp = ExRem(Sellns1,Buyns1);

Buyns2 = Buyns1State AND BuynsaState;
Sellns2 = SellnsbImp OR SellnsaImp;

Buyns2State = Flip(Buyns2, Sellns2);
Sellns2State = Flip(Sellns2, Buyns2);

Buyns2Imp = ExRem(Buyns2, Sellns2);
Sellns2Imp = ExRem(Sellns2,Buyns2);

Buynsspy = Buyns2Imp OR Buyny1Imp;
Sellnsspy = Sellns2State AND Sellny1State;

BuynsspyState = Flip(Buynsspy,Sellnsspy);
SellnsspyState = Flip(Sellnsspy,Buynsspy);

BuynsspyImp = ExRem(Buynsspy,Sellnsspy);
SellnsspyImp = ExRem(Sellnsspy,Buynsspy);

fund= Foreign("spy", "Close");

S2 = Optimize("S2", 34, 34, 89, 1);
L2 = Optimize("L2", 233, 144, 377, 1);
emab2 = Cross(MyEma(fund, S2), MyEma(fund,L2));
emas2 = Cross(MyEma(fund,L2), MyEma(fund,S2));

emabuy2 = Flip(emab2, emas2);
emasell2 = NOT(emabuy2);

Buyema2State = Flip(emabuy2, emasell2);
Sellema2State = Flip(emasell2, emabuy2);

Buyema2Imp = ExRem(emabuy2, emasell2);
Sellema2Imp = ExRem(emasell2,emabuy2);

Buyspysig = BuynsspyState AND Buyema2State;
Sellspysig = SellnsspyImp OR Sellema2Imp;

BuyspysigState = Flip(Buyspysig,Sellspysig);
SellspysigState = Flip(Sellspysig,Buyspysig);

Buy = Flip(BuyspysigState,SellspysigState);
Sell = Flip(SellspysigState,BuyspysigState);

Plot( Buy, "AB Signal spysig: Buy ", colorGreen, styleHistogram);
Plot( -Sell, "Sell ", colorRed, styleHistogram);

OptimizerSetEngine("spso");
OptimizerSetOption("Runs",2);
OptimizerSetOption("MaxEval",1000);
Bars = LastValue(Cum(Status("barinrange")));
Barsreq = bars + 512;
SetBarsRequired(barsreq,0);
I am interested to know if anyone has seen this system and taken the step to optimize the parameters?

Thanks,

Art