Typo correction in the If block:

YearStr2 = NumToStr(YearNum2);

But it still does not work.


--- In [email protected], "ozzyapeman" <zoopf...@...> wrote:
>
> Thanks Steve and Herman. I have been looking at BarIndex wrt your
> suggestions, and don't seem to understand it. Maybe I'm just retarded
> (...very possible. Heh).
>
> So instead, I've gone down the string conversion/parser route. This
> route makes sense to me. The below simplified code should do the
trick.
> But of course it doesn't. It's rare that my first crack at coding
> something ever works.
>
> This is a very simple parser to roll over the month-day of "1301" to
> "0101" and increment the Year by one. I output to the interpretation
> window for debugging.
>
> For some reason, I am getting some mysterious decimal places in the
> output, despite my formatting of the string. And I think it is the
> decimals that are screwing up the parser.
>
> Anyone have any insights as to why the below code does not work
> correctly?
>
>
> BegISdate  = 1031201;
> EndISdate  = 1090201;
> StepIS     =     100;
>
>
> for ( X = BegISDate; X <= EndISdate; X = X + StepIS )
> {
>
>      Xstr     = NumToStr( round(X) );
>
>      YearStr    = StrLeft( Xstr, 3 );
>      YearNum    = StrToNum(YearStr);
>
>      MonthDayStr = StrRight( Xstr, 4 );
>
>
>      if ( MonthDayStr == "1301" )
>      {
>        YearNum2 = YearNum + 1;
>
>        YearStr2 = StrToNum(YearNum2);
>
>        Xstr   = StrReplace(Xstr,"1301", "0101");
>        Xstr   = StrReplace(Xstr,YearStr, YearStr2);
>      }
>
>    printf(Xstr+"%.0f\n");
>
> }
>
>
>
>
>
> --- In [email protected], "Steve Dugas" sjdugas@ wrote:
> >
> > I would think you could associate your dates to BarIndex() and
> increment that by 100, something like...
> >
> > BegISbar = Valuewhen(  DateNum() == BegISdate, BarIndex() );
> > EndISbar = Valuewhen(  DateNum() == EndISdate, BarIndex() );
> > ...
> > for (FromISbarNum = BegISbar; FromISbarNum <= EndISbar; FromISbarNum
=
> FromISbarNum + StepIS)
> >
> >   ----- Original Message -----
> >   From: ozzyapeman
> >   To: [email protected]
> >   Sent: Tuesday, May 12, 2009 8:18 PM
> >   Subject: [amibroker] How to increment dates in a for loop?
> >
> >
> >
> >
> >   Hello, hoping someone can point out a good method for incrementing
> dates. I am currently trying to build a basic Walk-Forward engine that
> does an Optimization on In-Sample (IS) data using one formula,
followed
> by an Optimization on Out-Of-Sample (OOS) data using a second formula.
> >
> >   This is different than AB's built-in WF engine, which performs an
> Optimization, followed by a Backtest using only one formula.
> >
> >   Anyway, I am currently stuck right at the beginning, trying to
> figure out a sensible way to increment dates. This is what I have so
> far:
> >
> >   // datenum format:   10000 * (year - 1900) + 100 * month + day,
> >   // so 2001-12-31 becomes 1011231 and 1995-12-31 becomes 951231
> >
> >   BegISdate  = 1031201;
> >   EndISdate  = 1090201;
> >   StepIS     =     100;
> >
> >   BegOOSdate = 1050101;
> >   EndOOSdate = 1090301;
> >   StepOOS    =     100;
> >
> >   Formula1   = "F:\\formula1.afl";
> >   Formula2   = "F:\\formula2.afl";
> >   Database   = "F:\\AB Databases\\MyDB";
> >   Settings   = "F:\\My Settings.ABS";
> >
> >
> >   for (FromISdateNum = BegISDate; FromISdateNum <= EndISdate;
> FromISdateNum = FromISdateNum + StepIS)
> >     {
> >
> >         AB = CreateObject("Broker.Application");
> >
> >                 // Etc. .........
> >
> >   Now the above won't exactly work because simply adding 100 to a
> datenum will not allow the datenum to correctly roll over from
December
> to January. For example, incrementing 1031201 by 100 yields 1031301
> instead of 1040101.
> >
> >   I know I can first convert the datenum to a string, then build a
> parser that splits the datenum apart and analyzes the last four
digits,
> converting 1301 to 0101, then reconstitute the string and reconvert to
a
> datenum again. But that all feels rather convoluted.
> >
> >   Is there an easier way to increment dates in AFL? I've searched
the
> help manual and can't seem to find anything. What if I first converted
> to DateTime format? Is there an easy way to step through that format
> month by month?
> >
> >   Any pointers much appreciated.
> >
> >   And when I complete the WF Opt-Opt engine, I will be happy to post
> it here, in case anyone else has a need for it.
> >
> >   Thanks!
> >
>

Reply via email to