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

[amibroker] Re: scrolling through a watchlist



PureBytes Links

Trading Reference Links

Hi,

Sorry, it was not clear that you were wanting to act on both symbols. 
I thought you were trying to buy from the first list only, based on 
signals/confirmation from the second list.

As you've now discovered, the Foreign functionality allows access to 
foreign data, but it does not allow you to generate signals for that 
foreign symbol. To act on the symbol, it must appear in the watchlist 
and be processed in turn.

Tomasz has answered your question, which is the route that you were 
originally heading down. But, he did not address the hard coded names 
that you were trying to avoid.

To avoid the hard coded names of Tomasz's answer, Dingo gave you the 
answer, which is also what I used in my earlier sample. Specifically; 
use StrExtract from the watchlist.

Putting it all togeather...

Again the symbols will be evaluated in alphabetical order, but 
CategoryGetSymbols will give the ordering as they appear in the 
watchlist (i.e. not necessarily alphabetized). So, if it matters, 
populate your list such that the symbol you want to to be treated as 
first actually appears first in the watchlist, even though the second 
may get run through the script before the first one.

Buy = Sell = Short = Cover = 0;

list = CategoryGetSymbols(categoryWatchlist, 1);
first = StrExtract(list, 0);
opposite = StrExtract(list, 1);

_TRACE(first + " and " + opposite);

if (Name() == first) {
  SetForeign(opposite);
  // Read whatever you want from opposite data
  RestorePriceArrays();

  Buy = ... enter long for first symbol
  Sell = ... exit long for first symbol;
}
 
if (Name() == opposite) {
  SetForeign(first);
  // Read whatever you want from first data
  RestorePriceArrays();

  Buy = ... enter long for opposite symbol
  Sell = ... exit long for opposite symbol;
}

Mike

--- In amibroker@xxxxxxxxxxxxxxx, jim fenster <normanjade@xxx> wrote:
>
> Thanks so much. I tried it this way and I almost got it. Im running 
it on the first watchlist and then using the setforeign(opposite); 
function. But Im having a problem. There are variables I declared 
early in the code. Then I say setforeign(opposite); Then put in buy 
conditions based on those variables but I get no buys or sells in 
this foreign ticker. Only buys and sells in the first watchlist. How 
come?
> 
> --- On Sun, 12/14/08, Mike <sfclimbers@xxx> wrote:
> From: Mike <sfclimbers@xxx>
> Subject: [amibroker] Re: scrolling through a watchlist
> To: amibroker@xxxxxxxxxxxxxxx
> Date: Sunday, December 14, 2008, 2:31 AM
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>     
>             If you want to go down that route, you might consider 
just two lists, 
> 
> each with one side of the pair for each pair, rather than separate 
> 
> lists per pair.
> 
> 
> 
> e.g.
> 
> instead of:
> 
> watchList1 = A,X
> 
> watchList2 = M,Y
> 
> watchList3 = I,Z
> 
> 
> 
> do:
> 
> watchList1 = A,I,M
> 
> watchList2 = X,Z,Y
> 
> 
> 
> Then you can run your script on watchList1, making indexed 
reference 
> 
> to the symbols in watchList2 as shown below.
> 
> 
> 
> Note, however, that I rearanged watchList1 to be in alphabetical 
> 
> order before adding the indexed opposite symbols in watchList2.
> 
> 
> 
> It appears that AmiBroker iterates through the active watchList in 
> 
> alphabetical order (regardless of the order that the symbols were 
> 
> added to the list). So, you must ensure that the indexed opposites 
in 
> 
> watchList2 will match their partner based on the assumption that 
the 
> 
> partners were sorted before being processed by your script.
> 
> 
> 
> If your lists are expected to be relatively unchanging, this may be 
> 
> an acceptable bit of book keeping.
> 
> 
> 
> Buy = Sell = Short = Cover = 0;
> 
> 
> 
> // Get opposites from second list, ordered as originally entered.
> 
> list = CategoryGetSymbols( categoryWatchlis t, 2);
> 
> 
> 
> // Get alphabetized index of current symbol from first list.
> 
> index = status("stocknum" );
> 
> 
> 
> // Extract opposite for the current symbol.
> 
> opposite = StrExtract(list, index);
> 
> 
> 
> _TRACE(Name( ) + " and " + opposite);
> 
> 
> 
> SetForeign(opposite );
> 
>   // Do whatever you want with foreign opposite
> 
> RestorePriceArrays( );
> 
> 
> 
> Mike
> 
> 
> 
> --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> 
wrote:
> 
> >
> 
> > thanks yes Im looking for something like this. In the end I have 
a 
> 
> code that at the beginning designates two symbols. ticker1=ibm , 
> 
> ticker2=ge for example. Then I run the code. 
> 
> > The thing is, I have a few of them and I dont want to manually 
> 
> enter them. Instead I was thinking of putting a couple of tickers 
per 
> 
> watchlist. Then trying to call upon them by saying take each 
> 
> watchlist and make first symbol in watchlist = ticker1 and then 2nd 
= 
> 
> ticker2.
> 
> > Then run code. Then take watchlist 2 and do the same thing and 
run 
> 
> code.
> 
> > Is it possible to do that? How would I code that?
> 
> > 
> 
> > --- On Wed, 12/10/08, Barry Scarborough <razzbarry@ ..> wrote:
> 
> > From: Barry Scarborough <razzbarry@ ..>
> 
> > Subject: [amibroker] Re: scrolling through a watchlist
> 
> > To: amibroker@xxxxxxxxx ps.com
> 
> > Date: Wednesday, December 10, 2008, 11:32 PM
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> >     
> 
> >             I an not sure what you are looking for. This program 
> 
> runs through a 
> 
> > 
> 
> > watch list and processes the the symbols individually. You can do 
> 
> all 
> 
> > 
> 
> > sorts of things within SetForeign() and RestorePriceArrays( );
> 
> > 
> 
> > 
> 
> > 
> 
> > Barry
> 
> > 
> 
> > 
> 
> > 
> 
> > _SECTION_BEGIN( "Using SetForeign") ;  
> 
> > 
> 
> > SetChartOptions( 0, chartShowArrows | chartShowDates ); 
> 
> > 
> 
> > Filename = StrLeft(_DEFAULT_ NAME(),StrLen( _DEFAULT_ NAME())-2) ;
> 
> > 
> 
> > _N(Title = filename + StrFormat(" - {{DATE}} {{VALUES}} "));
> 
> > 
> 
> > 
> 
> > 
> 
> > // parameters
> 
> > 
> 
> > 
> 
> > 
> 
> > Watchlist = 10; 
> 
> > 
> 
> > 
> 
> > 
> 
> > // create comma separated list of symbols in the watch list 
> 
> > 
> 
> > list = CategoryGetSymbols( categoryWatchlist, watchlist ); 
> 
> > 
> 
> > 
> 
> > 
> 
> > /*
> 
> > 
> 
> > this gets the symbol name and the for loop will process every one 
> 
> in 
> 
> > 
> 
> > the watch list for each bar. In an auto trading program it will 
run 
> 
> > 
> 
> > every time a tick is received
> 
> > 
> 
> > */
> 
> > 
> 
> > 
> 
> > 
> 
> > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) 
> 
> > 
> 
> > { 
> 
> > 
> 
> > 	SetForeign(sym) ; // switches to the symbol array, OHLCVOi
> 
> > 
> 
> > /* 
> 
> > 
> 
> > put your code here. You can create an include that will define 
the 
> 
> > 
> 
> > parameters for each symbol you have optimized and dynamically 
> 
> switch 
> 
> > 
> 
> > the parameters for the indicators. You can also dynamically 
switch 
> 
> to 
> 
> > 
> 
> > a different system for some symbols. Your imagination is the 
limit.
> 
> > 
> 
> > */
> 
> > 
> 
> > 	RestorePriceArrays( ); 
> 
> > 
> 
> > } 
> 
> > 
> 
> > _SECTION_END( );
> 
> > 
> 
> > 
> 
> > 
> 
> > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> 
> 
> wrote:
> 
> > 
> 
> > >
> 
> > 
> 
> > > If you have a code that works on two symbols, is it possible 
call 
> 
> > 
> 
> > upon the first and second tickers in the watchlist without having 
> 
> to 
> 
> > 
> 
> > actually manually write the tickers? Like referring to them as 
1st 
> 
> > 
> 
> > and 2nd ticker in this specific watchlist. possible?
> 
> > 
> 
> > >
> 
> >
>



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

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

*********************
TO GET TECHNICAL 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/