function run()
{
StartDate = 20021021;
EndDate = 20080704;
set(LOGFILE|PLOTNOW); // log all trades
//Try and replicate best given graph
Slippage = 0;
Spread = 0;
BarPeriod = 30;
var longPeriod = 30;//optimize(30, 10, 60, 5);
var shortPeriod = 10;//optimize(10, 1, min(longPeriod, 20), 1);
vars Price = series(priceClose());
vars slowMA = series(SMA(Price, longPeriod));
vars fastMA = series(SMA(Price, shortPeriod));
static bool debug = true;
static double buyStopLevel = 0;
static double sellStopLevel = 0;
bool goLong = false;
bool goShort = false;
LookBack = longPeriod;
if (fastMA[0] > slowMA[0])
{
goLong = true;
}
if (fastMA[0] < slowMA[0])
{
goShort = true;
}
if(crossOver(fastMA, slowMA) == true)
{
//Just reset stop level of trade suggested by MA distance sign
buyStopLevel = priceHigh(0) + PIP;
}
else if(crossUnder(fastMA, slowMA) == true)
{
sellStopLevel = priceLow(0) - PIP;
}
if ((goLong == true) && (NumOpenLong == 0))
{
enterLong(0, buyStopLevel);
}
else if ((goShort == true) && (NumOpenShort == 0))
{
enterShort(0, sellStopLevel);
}
if( (debug) && (is(LOOKBACK) == false) )
{
debug = msg("Lookback = %i, Low = %.5f, High = %.5f, BuyStopLevel = %.5f, SellStopLevel = %.5f, FastMA = %.5f, SlowMA = %.5f, GoShort = %i, GoLong = %i, CrossOver = %i, CrossUnder = %i, LongPos = %i, ShortPos = %i ",
is(LOOKBACK), priceLow(0), priceHigh(0), buyStopLevel, sellStopLevel, fastMA[0],slowMA[0], goShort, goLong, crossOver(fastMA, slowMA), crossUnder(fastMA, slowMA), NumOpenLong, NumOpenShort);
}
}