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

Re: [amibroker] Re: if (Buy[i] >= 0) not behaving as expected



PureBytes Links

Trading Reference Links

These two pages from manual contain answers to your problems:

http://www.amibroker.com/guide/h_understandafl.html

http://www.amibroker.com/guide/a_mistakes.html

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "gmorlosky" <gmorlosky@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Friday, May 08, 2009 11:08 PM
Subject: [amibroker] Re: if (Buy[i] >= 0) not behaving as expected


>I spoke a little too soon. It does work well with anything associated with the last bar (i.e. close, open, etc.), BUT what I need 
>is reference to something like RSI(14) > 50, which it isn't working (error 6, error 4, etc.) no matter how I try to code it. Any 
>thoughts ???
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "tuzo_wilson" <j.tuzo.wilson@xxx> wrote:
>>
>> --- In amibroker@xxxxxxxxxxxxxxx, "gmorlosky" <gmorlosky@> wrote:
>> >
>> > Thanks Tuzo (and Mike), but I can't get it to work yet. I used fc >= 500; as my logic to represent the ShouldPlot. I get all 
>> > plots, even though each stock is under $500. I tried various combination of price to get a partial group of plots, but it's 
>> > always all of them.
>> >
>> > Any other ideas on how to make each "foreign" the "active" for each plotting ???
>>
>> ShouldPlot is hardcoded to return true right now.  Change it to only return true when your condition is true.
>>
>> In this case it will only display the symbol if the closing price of the first bar visible is greater than 500. Note that you 
>> will also have to also change the call to ShouldPlot to pass in the first visible bar i.e. if (ShouldPlot(fc,fvb))
>>
>> function ShouldPlot(price, fvb)
>> {
>> return (fc[fvb] >= 30);
>> }
>>
>>
>> Tuzo
>>
>> > _SECTION_BEGIN("RelativePerformance");
>> > fc = "";
>> > function ShouldPlot(price, fvb)
>> > {
>> > return (fc[fvb] >= 30);
>> > }
>> > function GetWatchListSymbols(watchListName)
>> > {
>> >    wlNumber = CategoryFind(watchListName, categoryWatchlist );
>> >    return CategoryGetSymbols(categoryWatchlist, wlNumber );
>> > }
>> > SetChartOptions(0,chartShowArrows|chartShowDates);
>> > WatchListName = ParamStr("Watch List Name","RelStrength"); // replace with a valid watchlist
>> > SymbolList = GetWatchListSymbols(WatchListName);
>> > fvb = Status("firstvisiblebar");
>> > ColorCode = colorBrown;
>> > for( i = 0; ( sym = StrExtract( SymbolList, i ) ) != ""; i++ )
>> > {
>> >    fc = Foreign(sym, "Close");
>> >    if (ShouldPlot(fc,fvb))
>> >    {
>> >        ColorCode++;
>> >        // wrap color codes if too many
>> >        if (ColorCode == colorTan)
>> >        {
>> >           ColorCode = colorBrown;
>> >        }
>> >         Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], sym, ColorCode, styleLine);
>> >    }
>> > }
>> > _N( Title = "{{NAME}} {{DATE}} - Relative Performance [%]: {{VALUES}}" );
>> > _SECTION_END();
>> >
>> >
>> >
>> > --- In amibroker@xxxxxxxxxxxxxxx, "tuzo_wilson" <j.tuzo.wilson@> wrote:
>> > >
>> > >
>> > > --- In amibroker@xxxxxxxxxxxxxxx, "gmorlosky" <gmorlosky@> wrote:
>> > > >
>> > > > Okay - I have gone over the array info and I think I'm doing this
>> > > right, But here it is step by step;
>> > >
>> > > That's a bit more organized.  :)
>> > >
>> > > The only question I have is around step 4.  How do you know if a ticker
>> > > is a "Buy".  Is it if it meets some conditions for the visible bars or
>> > > is it for all time or some other date/time range or something else?  If
>> > > it is on visible bars, the behavior might be a bit odd because as you
>> > > scroll symbols could be appearing and disappearing.
>> > >
>> > > Here's something that will take a watch list as a parameter and plot the
>> > > relative performance of all symbols in the watch list if it meets a
>> > > criteria.  Just modify ShouldPlot to return true or false depending on
>> > > your specific logic.
>> > >
>> > >
>> > >
>> > > _SECTION_BEGIN("RelativePerformance");
>> > >
>> > >
>> > >
>> > > function ShouldPlot(price)
>> > >
>> > > {
>> > >
>> > >     //TODO: Implement logic
>> > >
>> > >     return True;
>> > >
>> > > }
>> > >
>> > >
>> > >
>> > > function GetWatchListSymbols(watchListName)
>> > >
>> > > {
>> > >
>> > >     wlNumber = CategoryFind(watchListName, categoryWatchlist );
>> > >
>> > >     return CategoryGetSymbols(categoryWatchlist, wlNumber );
>> > >
>> > > }
>> > >
>> > >
>> > >
>> > > SetChartOptions(0,chartShowArrows|chartShowDates);
>> > >
>> > >
>> > >
>> > > WatchListName = ParamStr("Watch List Name","RelStrength");
>> > >
>> > >
>> > >
>> > > SymbolList = GetWatchListSymbols(WatchListName);
>> > >
>> > >
>> > >
>> > > fvb = Status("firstvisiblebar");
>> > >
>> > >
>> > >
>> > > ColorCode = colorBrown;
>> > >
>> > >
>> > >
>> > > for( i = 0; ( sym = StrExtract( SymbolList, i ) ) != ""; i++ )
>> > >
>> > > {
>> > >
>> > >     fc = Foreign(sym, "Close");
>> > >
>> > >
>> > >
>> > >     if (ShouldPlot(fc))
>> > >
>> > >     {
>> > >
>> > >         ColorCode++;
>> > >
>> > >
>> > >
>> > >         // wrap color codes if too many
>> > >
>> > >         if (ColorCode == colorTan)
>> > >
>> > >         {
>> > >
>> > >            ColorCode = colorBrown;
>> > >
>> > >         }
>> > >
>> > >
>> > >
>> > >         Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], sym, ColorCode,
>> > > styleLine);
>> > >
>> > >     }
>> > >
>> > > }
>> > >
>> > >
>> > >
>> > > _N( Title = "{{NAME}} {{DATE}} - Relative Performance [%]: {{VALUES}}"
>> > > );
>> > >
>> > >
>> > >
>> > > _SECTION_END();
>> > >
>> > >
>> > > Tuzo
>> > >
>> > > > 1. Deteremine BUY based on criteria and assign value of 1 else 0.
>> > > (works fine)
>> > > > 2. Determeine SELL based on criteria and assign value of -1 else
>> > > 0.(works fine - these values are now stored in the array)
>> > > > 3. From a given list (example: IndustryID() == 4) (the StrExtract
>> > > works fine).
>> > > > 4. PLOT only those tickers that meet BUY. (I get all or none)
>> > > > 5. Plot each ticker in a different color, in the same pane, hence the
>> > > inner loop. (the colors plot fine)
>> > > >
>> > > > Basically it is the Relative Performance indicator, with a BUY
>> > > criteria and StrExtract from any given list (sector, Industry, watch,
>> > > etc.), because of the multiple plots, Foreign is used.
>> > > >
>> > > >
>> > > >
>> > > > --- In amibroker@xxxxxxxxxxxxxxx, dingo waledingo@ wrote:
>> > > > >
>> > > > > write it out step by step in English.  I'm not uderstanding what you
>> > > want to
>> > > > > do.
>> > > > >
>> > > > > d
>> > > > >
>> > > > > On Thu, May 7, 2009 at 4:37 PM, gmorlosky gmorlosky@ wrote:
>> > > > >
>> > > > > > Thanks - clearly I got something backwards - while I study arrays,
>> > > do you
>> > > > > > have an example of code similar to this that works, to help me
>> > > understand ?
>> > > > > > I just want to loop through certain tickers that pass some formula
>> > > first.
>> > > > > > Basically a loop inside a loop.
>> > > > > >
>> > > > > >
>> > > > > > --- In amibroker@xxxxxxxxxxxxxxx, dingo <waledingo@> wrote:
>> > > > > > >
>> > > > > > > You've got a basic misunderstanding of loops and arrays.  In AFL
>> > > You
>> > > > > > > shouldn't have arrary operators like IIF inside a loop.
>> > > > > > >
>> > > > > > > You need to go back an reread the help file on arrays.
>> > > > > > >
>> > > > > > > d
>> > > > > > >
>> > > > > > >
>> > > > > >  > On Thu, May 7, 2009 at 3:32 PM, gmorlosky <gmorlosky@> wrote:
>> > > > > > >
>> > > > > > > > Seriously - it works nicely, except for that one line of code.
>> > > > > > > >
>> > > > > > > > Any other thoughts
>> > > > > > > >
>> > > > > > > > --- In amibroker@xxxxxxxxxxxxxxx, Aron <aron.groups@> wrote:
>> > > > > > > > >
>> > > > > > > > > everything..
>> > > > > > > > >
>> > > > > > > > > gmorlosky wrote:
>> > > > > > > > > > In the line ~9 "if(Buy[i] >= 0", if I change that to 1,
>> > > which is
>> > > > > > equal
>> > > > > > > > to a Buy, I get no Plots, even though the Explore shows 1s for
>> > > half the
>> > > > > > > > tickers, else with 0, I get all plots. What is wrong ?
>> > > > > > > > > >
>> > > > > > > > > > NumBars = 20;
>> > > > > > > > > > fvb = Status("firstvisiblebar");
>> > > > > > > > > > for( i = 0; ( symbol = StrExtract( TickerList, i ) ) !=
>> > > ""; i++ )
>> > > > > > > > > > {
>> > > > > > > > > > Buy = IIf(ROCt > ROCc AND RSIt > RSIc, 1,0);
>> > > > > > > > > > Sell = IIf(ROCt < ROCc AND RSIt < RSIc, -1,0);
>> > > > > > > > > >
>> > > > > > > > > > fc = Foreign( symbol, "C" );
>> > > > > > > > > > if (Buy[i] >= 0) // something not right here ???
>> > > > > > > > > >  {
>> > > > > > > > > >   if( ! IsNull( fc[ 0 ] ) )
>> > > > > > > > > >   {
>> > > > > > > > > >     Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], symbol,
>> > > > > > colorLightOrange
>> > > > > > > > + ( (2*i) % 15 ), styleLine );
>> > > > > > > > > >   }
>> > > > > > > > > >  }
>> > > > > > > > > > }
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > > ------------------------------------
>> > > > > > > > > >
>> > > > > > > > > > **** IMPORTANT PLEASE READ ****
>> > > > > > > > > > This group is for the discussion between users only.
>> > > > > > > > > > This is *NOT* technical support channel.
>> > > > > > > > > >
>> > > > > > > > > > TO GET TECHNICAL SUPPORT send an e-mail directly to
>> > > > > > > > > > SUPPORT {at} amibroker.com
>> > > > > > > > > >
>> > > > > > > > > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>> > > > > > > > > > http://www.amibroker.com/feedback/
>> > > > > > > > > > (submissions sent via other channels won't be considered)
>> > > > > > > > > >
>> > > > > > > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check
>> > > DEVLOG:
>> > > > > > > > > > http://www.amibroker.com/devlog/
>> > > > > > > > > >
>> > > > > > > > > > Yahoo! Groups Links
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > > > ------------------------------------
>> > > > > > > >
>> > > > > > > > **** IMPORTANT PLEASE READ ****
>> > > > > > > > This group is for the discussion between users only.
>> > > > > > > > This is *NOT* technical support channel.
>> > > > > > > >
>> > > > > > > > TO GET TECHNICAL SUPPORT send an e-mail directly to
>> > > > > > > > SUPPORT {at} amibroker.com
>> > > > > > > >
>> > > > > > > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>> > > > > > > > http://www.amibroker.com/feedback/
>> > > > > > > > (submissions sent via other channels won't be considered)
>> > > > > > > >
>> > > > > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check
>> > > DEVLOG:
>> > > > > > > > http://www.amibroker.com/devlog/
>> > > > > > > >
>> > > > > > > > Yahoo! Groups Links
>> > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > > ------------------------------------
>> > > > > >
>> > > > > > **** IMPORTANT PLEASE READ ****
>> > > > > > This group is for the discussion between users only.
>> > > > > > This is *NOT* technical support channel.
>> > > > > >
>> > > > > > TO GET TECHNICAL SUPPORT send an e-mail directly to
>> > > > > > SUPPORT {at} amibroker.com
>> > > > > >
>> > > > > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>> > > > > > http://www.amibroker.com/feedback/
>> > > > > > (submissions sent via other channels won't be considered)
>> > > > > >
>> > > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>> > > > > > http://www.amibroker.com/devlog/
>> > > > > >
>> > > > > > Yahoo! Groups Links
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>
>
>
> ------------------------------------
>
> **** IMPORTANT PLEASE READ ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
>
> TO GET TECHNICAL SUPPORT send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> http://www.amibroker.com/feedback/
> (submissions sent via other channels won't be considered)
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> Yahoo! Groups Links
>
>
>



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

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

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

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/