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

[amibroker] Re: scrolling through a watchlist



PureBytes Links

Trading Reference Links

Hi, TJ

For pairs trading, if I need to use only the entry/exit conditon 
defined in the first symbol to indicate the time of trade for both 
symbols , then how to let symbol No. 2 get the time of the trade.  

I ask this question because two symbols in my pair are listed in two 
exchanges and do not trade simultaneously all the time. Therefore the 
indicators in the chart of symbol No. one and symbole No. 2 do not 
show  the same value all the time. So I have to specify the time of 
entry/exit in just one chart.

Thanks/ Huanyan



--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> 
wrote:
>
> Hello,
> 
> Pair trading should be implemented as follows:
> 
> 1. Setup a watch list of 2 instruments
> 2. Code the system using if( Name() =.... )
> 
> Buy = Sell = 0; 
> 
> if( Name() == "FIRSTSYMBOLINPAIR" )
> {
>  Buy = ... enter long for first symbol
>  Sell = ... exit long for first symbol;
> }
> 
> if( Name() == "SECONDSYMBOLINPAIR" )
> {
>  Buy = ... enter second for first symbol
>  Sell = ... exit second for first symbol;
> }
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
>   ----- Original Message ----- 
>   From: jim fenster 
>   To: amibroker@xxxxxxxxxxxxxxx 
>   Sent: Tuesday, December 16, 2008 12:43 AM
>   Subject: Re: [amibroker] Re: scrolling through a watchlist
> 
> 
>         Im running a pairs code and trying it the way Mike was 
saying. Make two watchlists and then run the code on the first one 
and then it would pick out the opposites of each. It does it 
beautifully for the indicators but it won't buy that security in the 
second watchlist if Im running it on the first only. even if I 
setforeign etc. Is there no way to do this?
> 
>         --- On Mon, 12/15/08, Steve Davis <_sdavis@xxx> wrote:
> 
>           From: Steve Davis <_sdavis@xxx>
>           Subject: [amibroker] Re: scrolling through a watchlist
>           To: amibroker@xxxxxxxxxxxxxxx
>           Date: Monday, December 15, 2008, 6:30 PM
> 
> 
>           When you perform a portfolio backtest, AmiBroker 
automatically loops
>           over each symbol in the watchlist, giving your AFL a 
chance to
>           generate buy/sell signals for each symbol. The Buy and 
Sell signals
>           always refer to the current symbol, Name(). You could 
place both
>           symbols in the same watchlist, or perform two separate 
backtests on
>           different watchlists.
> 
>           -Steve
> 
>           --- In amibroker@xxxxxxxxx ps.com, jim fenster 
<normanjade@ ...> wrote:
>           >
>           > What Im trying to say is, if I have 2 watchlists. I run 
the code on
>           watchlist1. But in the code I setforeign to a symbol in 
watchlist2 and
>           do buys and sells. It won't buy the foreign. Is it 
possible to buy the
>           foreign if its not in the first watchlist that I am 
running the code on?
>           > 
>           > --- On Mon, 12/15/08, jim fenster <normanjade@ ...> 
wrote:
>           > From: jim fenster <normanjade@ ...>
>           > Subject: Re: [amibroker] Re: scrolling through a 
watchlist
>           > To: amibroker@xxxxxxxxx ps.com
>           > Date: Monday, December 15, 2008, 4:48 PM
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 
>           > 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@ yahoo. com> 
wrote:
>           > From: Mike <sfclimbers@ yahoo. com>
>           > Subject: [amibroker] Re: scrolling through a watchlist
>           > To: amibroker@xxxxxxxxx ps.com
>           > 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/