[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] How to write a backtest when foreign symbol gives signal



PureBytes Links

Trading Reference Links

Hello, I have used Amibroker for a long time but am only beginning to
write complex formulas. First let me explain what I want to do, then
show you what I've done and then ask for advice on how to proceed.

In my backtest, I want to buy stocks using my long-only strategy when
the Value Line Index (symbol VGY) has given a buy signal by rising 4%
or more in the past five days. I want to sell all stocks in my
backtest when the VGY has dropped 4% or more in the past five days. I
will follow my normal sell signals with individual stocks if the VGY
is still in a buy signal.

To accomplish this, I thought I would, for each day of my backtest,
check the VGY, and if on that day, it rose 4% or more from 5 days
previous, write to a file called sig.txt "BULL". If the VGY did not
rise 4%, I would write nothing. If the VGY dropped 4% from 5 days
previous, I would write to the same sig.txt file "BEAR". So nothing
would be written if there were no signal. I was then going to figure
out a way to read from sig.txt for each day of my backtest, and follow
the most-recently written signal, BEAR or BULL.

I have partially written this code. I can get it to write to a file,
but it will only write BEAR. I thought that by setting backtest dates
in Automatic Analysis, that this would run for each day. But the
reason it is only writing BEAR today, I believe is it is only checking
for today. 

That led me to functions and for loops, etc. and I am at a point where
I am in need of direction. So far, I have been learning alot about
FOREIGN, LastValue, fopen, etc. Here's the code I've done thus far:

VgyToday = Foreign("VGY", "Close");
VgyLastWeek = Ref(Foreign("VGY","Close"),-5);
Change = (VgyToday / VgyLastWeek);

if ( LastValue(Change[0], lastmode = True )  <= .96 )
{
               fh = fopen( "c:\\tmp\\sig.txt", "w");
               if( fh )
               {
                       fputs( "BEAR", fh );
                       fclose( fh );
               }
}
else
{
       printf ("No\n");
}


if ( LastValue(Change[0], lastmode = True )  >= 1.04 )
{
               fh = fopen( "c:\\tmp\\sig.txt", "w");
               if( fh )
               {
                        fputs( "BULL", fh );
                        fclose( fh );
               }
}
else
{
       printf ("No\n");
}

Any guidance much appreciated. 




------------------------------------

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/