function run()
{
set(PARAMETERS|LOGFILE);
BarPeriod = 1440;
StartDate = 2010;
LookBack = 100;
Verbose = 7;
assetList("AssetsZ9.csv");
asset("AGG");
int Max_Long_Assets = optimize(2,1,4,1); //global optimization parameter
for(listed_assets) {
asset(Asset);
vars Prices = series(price());
var sma5 = ROC(Prices,5);
var signal1 = SMA(Prices,5);
var signal2 = SMA(Prices,30);
var Threshold1 = optimize(0.05,0.0,0.1,0.01); // local optimization parameter
var Threshold2 = optimize(0.05,0.0,0.1,0.01); // local optimization parameter
int RR = signal1 - signal2 < Threshold1;
int TT = signal1 - signal2 > Threshold2;
// printf("\n%.3f",signal1 - signal2);
int In = (sma5<0 && RR==1) || (sma5>0 && TT==1);
int Out= (sma5>0 && RR=1) || (sma5<0 && TT==1);
int NewShares = Balance/priceClose(0)/Max_Long_Assets-LotsPool;
if(In && NumLongTotal < Max_Long_Assets)
enterLong(NewShares);
else if (Out)
exitLong();
}
}