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

Re: [amibroker] Re: Visit each symbol, like a slide show



PureBytes Links

Trading Reference Links

Hello,

As Dan wrote there is a space between < and %
added by prettify. Please remove it so it reads
<%
%>

Prettify inserts the space in the middle of these markers
and that causes problem.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "J. Biran" <jbiran@xxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Tuesday, July 15, 2008 4:59 PM
Subject: RE: [amibroker] Re: Visit each symbol, like a slide show


> 
> It was AFL code checker that flagged this error. Can you
> check on your computer if it passes there?
> Joseph Biran
> ____________________________________________
> 
> -----Original Message-----
> From: amibroker@xxxxxxxxxxxxxxx
> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of liberte721
> Sent: Tuesday, July 15, 2008 3:34 AM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: Visit each symbol, like a slide
> show
> 
> Hmm, thanks.  I also see "< %".  These should of course be:
> 
> <%
> ... // jscript block
> %>
> 
> Please fix those manually, since I can't attach the original
> script
> from this computer.
> 
> I suspect it was the prettify operation I applied on a copy
> of the
> file that added the spaces.   That would be a bug, TJ.
> 
> dan
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "J. Biran" <jbiran@xxx>
> wrote:
>>
>> There seems to be an error at
>> 
>> % >
>> 
>>  
>> 
>> You can always attach a file to your mail/
>> 
>>  
>> 
>> Joseph Biran
>> ____________________________________________
>> 
>>  
>> 
>> From: amibroker@xxxxxxxxxxxxxxx
>> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Daniel
>> LaLiberte
>> Sent: Monday, July 14, 2008 9:29 PM
>> To: amibroker@xxxxxxxxxxxxxxx
>> Subject: [amibroker] Visit each symbol, like a slide show
>> 
>>  
>> 
>> Here is my script for stepping through each symbol in the
>> list of all symbols.  It could be modified in several
>> different ways, and I would like to hear your suggestions.
>> (email directly if you like).
>> 
>>  
>> 
>> By the way, posting afl code to this yahoo group is
>> difficult.  I think it would work OK using Outlook (and
>> maybe some other email programs), and maybe if I select
>> "Copy as HTML" in the AmiBroker Editor Preferences.  But I
>> am forced to use gmail or yahoo's awful interface, and
> there
>> doesn't appear to be any option to preserve the
> indentation,
>> coloring, and without adding redundant new lines.  I hope
>> the following is at least indented correctly, as it
> appears
>> to me now.
>> 
>>  
>> 
>> dan
>> 
>>  
>> 
>>  
>> 
>> // VisitEachSymbol.afl
>> 
>>  
>> 
>> // Visit each symbol in the list of All symbols.
>> 
>> // You can use this like a slide show.
>> 
>>  
>> 
>> // Written by Daniel LaLiberte (daniel.laliberte@xxx),
>> July 2008.
>> 
>> // You are free to use this however you want.
>> 
>>  
>> 
>>  
>> 
>> // Instructions for use:
>> 
>> // Select a symbol in your list of all symbols.
>> 
>> // Use the "Start" trigger parameter to begin stepping at
>> the current symbol.
>> 
>> // It will stop automatically at the end of the list, or
> you
>> can "Stop" at any time,
>> 
>> // and "Start" again to continue (not restart).
>> 
>> // If you start in a watchlist, or switch charts while
>> stepping, interesting things will happen.
>> 
>>  
>> 
>> if ( ParamTrigger( "Start Stepping", "Step" ) )
>> 
>> {
>> 
>>     StaticVarSetText( "gotoSymbol", "" );
>> 
>>     StaticVarSetText( "stepping", "yes" );
>> 
>> }
>> 
>>  
>> 
>> if ( ParamTrigger( "Stop Stepping", "Stop" ) )
>> 
>> {
>> 
>>     StaticVarSetText( "gotoSymbol", "" );
>> 
>>     StaticVarSetText( "stepping", "" );
>> 
>> }
>> 
>>  
>> 
>> // Number of seconds to delay between each step.
>> 
>> delaySeconds = 5;
>> 
>>  
>> 
>>  
>> 
>>  
>> 
>> // Implementation note:
>> 
>> // You can't use a loop over all symbols like the
> following
>> within one script.
>> 
>> // It would cause an infinite loop because the chart
> updates
>> as a result of changing the symbol,
>> 
>> // thus executing this script again and restarting the
> loop.
>> 
>> /*
>> 
>> for (i=0; i<numTickers; i++)
>> 
>> {
>> 
>>        ticker = tickers.getKey(i);
>> 
>>        JS.setTicker(ticker);
>> 
>> }
>> 
>> */
>> 
>>  
>> 
>> // Instead of a simple loop, we must use static vars,
>> stepping to the next symbol
>> 
>> // each time the script is executed.   We add a delay
> using
>> a refresh loop.
>> 
>> // Jscript is used to get the list of all symbols, and to
> go
>> to the next symbol.
>> 
>>  
>> 
>>  
>> 
>>  
>> 
>> AB = CreateStaticObject( "Broker.Application" );
>> 
>>  
>> 
>> EnableScript( "jscript" );
>> 
>>  
>> 
>> < %
>> 
>>  
>> 
>> var AB =  AFL( "AB" );
>> 
>> function setTicker( ticker )
>> 
>> {
>> 
>>     AB.ActiveDocument.Name = ticker;
>> 
>> }
>> 
>>  
>> 
>> function KeyList ( keys )
>> 
>> {
>> 
>>     this.keys = keys; // ordered list of the keys
>> 
>>     this.keyIndex = {}; // map from key to index.
>> 
>>  
>> 
>>     for ( var i = 0; i < keys.length; i++ )
>> 
>>         this.keyIndex[keys[i]] = i;
>> 
>> }
>> 
>>  
>> 
>> KeyList.prototype.getIndex = function( key )
>> 
>>  
>> 
>> {
>> 
>>     return this.keyIndex[ key ];
>> 
>> }
>> 
>>  
>> 
>> KeyList.prototype.getKey = function( index )
>> 
>> {
>> 
>>     return this.keys[ index ];
>> 
>> }
>> 
>>  
>> 
>> KeyList.prototype.getLength = function ()
>> 
>> {
>> 
>>     return this.keys.length;
>> 
>> }
>> 
>>  
>> 
>> function getAllTickers ()
>> 
>> {
>> 
>>     var stocks = AB.stocks;
>> 
>>     var tickerList = stocks.getTickerList( 0 ); // 0 for
>> list of All symbols?
>> 
>>     var tickers = tickerList.split( ',' );
>> 
>>  
>> 
>>     if ( !tickers[tickers.length - 1] )
>> 
>>         delete tickers[tickers.length - 1]; // Last
> element
>> is empty due to extra comma.
>> 
>>  
>> 
>>     var tickerKeyList = new KeyList( tickers );
>> 
>>  
>> 
>>     return tickerKeyList;
>> 
>> }
>> 
>>  
>> 
>> % >
>> 
>> JS = GetScriptObject();
>> 
>>  
>> 
>>  
>> 
>> function doneWithSymbol ()
>> 
>> {
>> 
>>     // In this test, simply check if the symbol we were
>> supposed to go to is what we see now.
>> 
>>     // Special case: no gotoSymbol is OK.
>> 
>>     gotoSymbol = StaticVarGetText( "gotoSymbol" );
>> 
>>     atSymbol = ( gotoSymbol == "" ) OR ( gotoSymbol ==
>> Name() );
>> 
>>  
>> 
>>     // Now delay for some period of time.
>> 
>>     // One way to cause a delay is to use the IBController
>> Sleep function, as in the following.
>> 
>>     // But this disrupts normal processing in other
> windows,
>> not completely, but enough to destroy interactivity.
>> 
>>     /*
>> 
>>     ibc = GetTradingInterface( "IB" );
>> 
>>     ibc.sleep(5000);
>> 
>>     */
>> 
>>  
>> 
>>     // Another slightly simpler way is to call
>> RequestTimedRefresh( ) with the desired sleep time.
>> 
>>     // The time will be rounded to the nearest whole
>> multiple, so it is not exactly a delay time.
>> 
>>     RequestTimedRefresh( delaySeconds );
>> 
>>     // But setting the symbol also causes an immediate
>> refresh, which we want to ignore.
>> 
>>     refreshed = Status( "redrawaction" ) == 1;
>> 
>>     //_Trace("doneWithSymbol refreshed: " + refreshed);
>> 
>>  
>> 
>>     done = atSymbol AND refreshed;
>> 
>>     return done;
>> 
>> }
>> 
>>  
>> 
>> function gotoNextSymbol ()
>> 
>> {
>> 
>>     // Reconstruct the list of all symbols (aka tickers).
>> Yes, every time.
>> 
>>     tickerKeyList = JS.getAllTickers();
>> 
>>  
>> 
>>     // Get the index of the next symbol.
>> 
>>     nextIndex = 1 + tickerKeyList.getIndex( Name() );
>> 
>>  
>> 
>>     if ( tickerKeyList.getLength() - 1 > nextIndex ) // Is
>> the index in range?
>> 
>>     {
>> 
>>         // OK, so get the next symbol and go to it.
>> 
>>         nextSymbol = tickerKeyList.getKey( nextIndex );
>> 
>>         StaticVarSetText( "gotoSymbol", nextSymbol );
>> 
>>         JS.setTicker( nextSymbol );
>> 
>>     }
>> 
>>     else
>> 
>>     {
>> 
>>         // No more symbols, so stop stepping.
>> 
>>         stepping = "";
>> 
>>         StaticVarSetText( "stepping", stepping );
>> 
>>         // RequestTimedRefresh(0); // this is not the way
> to
>> stop the refresh loop.
>> 
>>     }
>> 
>> }
>> 
>>  
>> 
>> stepping =  ( "yes" == StaticVarGetText( "stepping" ) );
>> 
>>  
>> 
>> if ( stepping  )
>> 
>> {
>> 
>>     // If done with this symbol, go to next symbol.
>> 
>>     if ( doneWithSymbol() )
>> 
>>     {
>> 
>>         gotoNextSymbol();
>> 
>>     }
>> 
>> }
>> 
>>  
>> 
>>  
>> 
>> Plot( Close, "Close", colorBlack, styleCandle );
>> 
>>  
>> 
>>  
>> 
>> 
>> -- 
>> Daniel LaLiberte
>> liberte@xxx
>> daniel.laliberte@xxx
>>
> 
> 
> 
> ------------------------------------
> 
> Please note that this group is for discussion between users
> only.
> 
> To get 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
> 
> 
> 
> 
> ------------------------------------
> 
> Please note that this group is for discussion between users only.
> 
> To get 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
> 
> 
> 

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

Please note that this group is for discussion between users only.

To get 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/