I updated the title of your question so that other viewers seeking this solution will be able to find it. The original title you entered was "Trying to create an alert based on timing". However the terms you used there really don't apply and they don't help others searching for a similar solution for this particular indicator. If you wanted to see examples of how we use one condition as the prerequisite for another, there are plenty of examples of that here in the forum.
Here is the code to accomplish what you have requested. There is no timing involved. The code first locates all the bars that fit the first condition, new low in the past 30 bars. We use that condition as the initialization state for the variable named trackPattern. So when a new 30 day low appears, the trackPattern variable is reset to zero. When prices rise from that low, we check each of the bars that follow that low and mark the first one where the WoodiesCCI crosses above zero.
input lookbackBarsForLow = 30;
input shortLength = 6;
input longLength = 14;
input lowerSideWinderLimit = 30.0;
input upperSideWinderLimit = 100.0;
input hideSideWinder = No;
def wCCI = WoodiesCCI(shortLength, longLength, lowerSideWinderLimit, upperSideWinderLimit, hideSideWinder).CCI;
def lowestInLookbackBars = low > 0 and low < Lowest(low[1], lookbackBarsForLow);
rec targetPattern = if lowestInLookbackBars and wCCI < 0 then 0 else if lowestInLookbackBars[1] == 0 and wCCI > 0 then 1 else targetPattern[1];
plot signal = targetPattern and !targetPattern[1];