Since advanced code is basically straight C#, you can do anything you want in there including using the for loops to look back at some candle or indicator values. In general, that's the most efficient way to do things, but may not be the simplest or the most concise method. To aid those who would want to make it simpler, while sacrificing a little bit of efficiency, here are some helper functions we included:
Note: in the functions below, Candle Range is one or two ints. One int means check that many candles starting from current candle and back. Two  int start, int end  means check starting at start candles back and ending at end  inclusive.
Expression is any combination of variables, numbers, and Indexed Variables. At least one Indexed Variable has to be referenced.
All(Candle Range, Boolean Expression) 
Returns true if all the candles in the range satisfy the Expression condition, false otherwise 
Any(Candle Range, Boolean Expression) 
Returns true if any of the candles in the range satisfy the Expression condition, false otherwise 
Count(Candle Range, Boolean Expression) 
Returns the number of candles in the range that satisfy the Expression condition 
Min(Candle Range, Numeric Expression) 
Returns the minimum value for the expression for one of the candles in the range 
Max(Candle Range, Numeric Expression) 
Returns the minimum value for the expression for one of the candles in the range 
Sum(Candle Range, Numeric Expression) 
Returns the sum of all the numeric values that expression returns for all candles in the range 
Examples:
if (All(0, 2, Close > Open)) SetScanResult("Last 3 candles up");
if (Count(0, 9, Open > Close[1] && Close > Open && Close[1] > Open[1]) >= 2) SetScanResult("2 or more up gaps in last 10 candles");
if (Max(3, Close) == Close)
if (Count(1, 10, PBarShape == PBShape.Diamong) >= 2)

Note: the functions described above are preprocessed by Medved Trader before compiling into C# to convert them to the proper C# syntax delegateprocessing functions that the indexed properties class has.
For example,
Count(0, 9, Open > Close[1] && Close > Open && Close[1] > Open[1]) >= 2);
is converted before compiling into:
Open.Count(0, 9, (i, x) => {return Open[i] > Close[i+1] && Close[i] > Open[i] && Close[i+1] > Open[i]) >= 2; } );
Of course, those indexed properties' class functions can be used directly as well, and the code in the delegate function can be arbitrarily complex.