Hi,

There's no need to do looping here. Since Change now holds a bar by 
bar ratio, you may just refer to it directly.

Also, there's no need to write to any external file. Just include the 
condition in your buy logic using the AND operator and in your sell 
logic using the OR operator.

Try something like this:

SetForeign("VGY");
Change = C/Ref(C, -5);
RestorePriceArrays();

Buy = ... AND Change >= 1.04; // Confirm buy signal with Bull
Sell = ... OR Change <= 0.96; // Regular sell or Bear

Mike

--- In [email protected], "john10987654321" 
<[EMAIL PROTECTED]> wrote:
>
> 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.
>


Reply via email to