A couple of ways to see if it is really referencing the future:
1. Performance that looks like the holy grail and quite robust to
parameter changes.
2. While watching real time buy/sell/short/cover signals (Bar Replay)
-- it sometimes takes back the last signal.
Some formulas look into the future to get patterns, but do not trade
on the future data.
Some formulas can reference the future in indirect ways that are hard
to spot, but if 2. is happening, just trace the code when it takes
back a trade to find the culprit.
Best regards,
Dennis
On Sep 24, 2008, at 11:08 PM, ozzyapeman wrote:
I clicked on "Code Check & Profile" in the AFL editor and it gives
me the warning that my code references future quotes, "40 past and
ALL future quotes are needed to calculate the formula correctly."
Hoping anyone can chime in here with reasons why that might be
happening.
Is there any other way to test if I have a "Future Leak" other than
relying on the Code Check tool?
I have gone through my FOREX trading system with a fine tooth comb
and can't find any place where it references the future. It makes
use of several moving averages that only reference the current
Close, and back through the lasts 40 Closes. I test my current Close
against the MAs, as well as against static profit and stop targets.
I am wondering if my backtester settings are somehow setting off the
Code Check warning. Would any of the following backtester settings
set off a false warning of this sort? What else might trigger the
'Future Leak' alarm? I don't use any fancy functio ns like ZIG, just
plan old MAs...
SetOption("AccountMargin", 100); //
Account margin, 100 = no margin
SetOption("ActivateStopsImmediately", False); // Intraday stops ?
SetOption("AllowPositionShrinking", False); // Take
partial trades if equity available ?
SetOption("AllowSameBarExit", True); // Allow
same bar exit for profit stops
SetOption("CommissionAmount", 3.00); // Commission
amount
SetOption("CommissionMode", 3); // 3 =
$ per share/contract
SetOption("FuturesMode",
1); // = use MarginDeposit and
PointValue in calculations
SetOption("InitialEquity", 100000); //
Initial equity $
SetOption("InterestRate",0); &nbs
p; // Set interest rate earned for free
cash, zero to evaluate system
SetOption("MaxOpenPositions", maxPairsTraded * maxContractsPerPair);
SetOption("MinPosValue", 0); //
Min position Value to make trade worthwhile, 0 = no limit
SetOption("MinShares",
1); // Min number shares
SetOption("PriceBoundChecking", False ); // Price to
stay in bar range ?
SetOption("ReverseSignalForcesExit", False);
SetOption("UsePrevBarEquityForPosSizing",
True ); // Use last known bar for
position sizing ?
SetTradeDelays(tradeDelay, tradeDelay, tradeDelay, tradeDelay);
SetPositionSize(1, spsShares);
quoteCurrency = StrRight(Name(), 3); // eg. EURJPY
gives JPY.
if (maxContractsPerPair > 1)
SetBacktestMode(backtestRegularRawMulti);
tradedelay = 0;
// Make sure backtester only starts computing at the start of our
testing date range, not the start of the symbol database
if(Status("action")>2) start = Max( tradeDelay,
LastValue( ValueWhen( Status("firstbarinrange"), BarIndex() ) ) );
else start = tradedelay;
// Barcount Loop
for (start = 1; i < BarCount; i++)
{
// Trade system using MAs goes here.