function run()
{
set (TICKS);
set (PLOTNOW);
set (LOGFILE);
set (TESTNOW);
BarPeriod = 60;
BarOffset = (ET+17)*60;
LookBack = 100;
StartDate = 20110101;
EndDate = 20110120;
Hedge = 2;
vars op = series(priceOpen());
vars cl = series(priceClose());
vars hi = series(priceHigh());
vars lo = series(priceLow());
vars wt = series((hi[0]+lo[0]+cl[0]+cl[0])/4);
Stoch(14,3,MAType_EMA,3,MAType_EMA);
vars sto5K = series(rSlowK);
vars sto5D = series(rSlowD);
vars signal = series(0);
Stop = 40*PIP;
TakeProfit = 20*PIP;
EntryTime = 10;
if ((sto5K[0] < 30) and (sto5K[0] > sto5K[1]))
{
signal[0] = 1;
printf("\nStoch Signal Fired");
}
if (NumOpenLong < 1) // if open trade do not set pending
{
printf("\nNo Trade Open");
// Set new pending trade if signal fires
if (NumPendingLong < 1)
{
printf("\nNo Pending Trade");
if (signal[0] > 0)
{
enterLong(0,hi[0]);
plotGraph("Entry",0,hi[0]+5*PIP,MAIN|TRIANGLE4,PURPLE);
printf("\nNo Pending Trade, Signal = %1.1f, placing new pending at %1.4f",signal[0],hi[0]);
}
}
// If pending not hit check if signal valid
else
{
printf("\nPending Trade not Hit hi[1] = %1.4f; hi[0] = %1.4f",hi[1],hi[0]);
if (signal[0] > 0)
{
exitLong();
enterLong(0,hi[0]);
plotGraph("Entry2",0,hi[0]+5*PIP,MAIN|TRIANGLE4,GREEN);
printf("\nSignal = %1.1f, exiting old trade placing new pending at %1.4f",signal[0],hi[0]);
}
else
{
if (hi[0] < hi[1])
{
exitLong();
enterLong(0,hi[0]);
plotGraph("Entry3",0,hi[0]+5*PIP,MAIN|TRIANGLE4,YELLOW);
printf("\nSignal = %1.1f, exiting old trade placing new pending at %1.4f",signal[0],hi[0]);
}
}
}
}
else printf("\nTrade Open");
if (is(EXITRUN))
{
exitLong();
exitShort();
}
plot("Sto 5,2,2 K",sto5K[0],NEW,RED);
plot("Sto 5,2,2 D",sto5D[0],0,BLUE);
plot("30",30,0,GREY);
plot("70",70,0,GREY);
PlotWidth = 2400;
PlotHeight1 = 800;
}