Thank you very much. I will try this. I also want to be able to sell everything if the system's drawdown is more than, say, 10 percent. I have written a variable:
//Your Current Drawdown: Draw = (Highest(E) / E); and have included it in my sell signals: Sell= ... OR Draw <= .90; But it is not working. What am I doing wrong? Any help appreciated. --- In [email protected], "Mike" <[EMAIL PROTECTED]> wrote: > > Hi, > > I think that you are asking for something like the following: > > SetForeign("VGY"); > LastWeekClose = Ref(Close, -5); > Bull = Cross(Close, LastWeekClose * 1.04); > Bear = Cross(LastWeekClose * 0.96, Close); > BullBarsAgo = BarsSince(Bull); > BearBarsAgo = BarsSince(Bear); > RestorePriceArrays(); > > Buy = ... AND BullBarsAgo < BearBarsAgo; // No bear since last bull. > Sell = ... OR Bear; // Normal sell or start of bear. > > Mike > > --- In [email protected], "john10987654321" > <john10987654321@> wrote: > > > > Thank you for your reply. My request is a little more complicated. > > Your suggestion would presume that I want to buy if the foreign symbol > > rises 1.04 *today.* I want to buy on any day after the symbol hits > > 1.04. Say the VGY gives a buy signal today by rising 4% since 5 days > > ago. The next day it's only 1.02. That doesn't matter. I can keep > > buying stocks for days, weeks or months until I get a sell signal. I > > want to be able to buy on any day until I get a sell signal and then I > > do not want to buy on any day until I get a buy signal. That is why I > > was trying to write to a file BULL or BEAR. That file would only be > > written if I get a signal and then referred to on subsequent days > > until the signal changes. Am I making sense? > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > > > 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" > > > <john10987654321@> 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. > > > > > > > > > >
