David,

Keep in mind that if you use a local datasource, your PremiumData updates will 
not be reflected going forward. You will have to switch back to Metastock mode 
to receive the updates, as per their website:  "How can I increase the scanning 
speed of AmiBroker?" http://www.premiumdata.net/support/amibroker.php

Actually, I'm a bit surprised, I would expect that any new symbols created 
would be going into the local database kept by AmiBroker (for things such as 
composites) even when in Metastock format.

Mike

--- In [email protected], "dbwyatt_1999" <dbw...@...> wrote:
>
> I figured out how to get the symbol duplicating code to work.  Both the AFL 
> code that Mike posted and the javascript that I later posted work.  The issue 
> is database settings.  PremiumData is setup using the MetaStock plug-in and 
> for some reason setting quotes through ActiveX does not work when the 
> datasource is the MetaStock plugin.  If I set the database source to local, 
> then setting quotes through ActiveX works.
> 
> Since the AFL code for duplicating symbols that Mike posted earlier in this 
> thread is much shorter than the equivalent javascript code, there is no sense 
> in me posting the javascript code.
> 
> Regards,
> 
> David
> 
> --- In [email protected], "dbwyatt_1999" <dbw451@> wrote:
> >
> > I've been unsuccessful in filling a duplicate symbol with quotes from a
> > source symbol.  I could not make it work in AFL, so I reluctantly
> > switched to javascript and I still cannot get quote data into a new
> > symbol.  I guess I'm too close to my code because I cannot see what is
> > wrong.  Can anyone see why the code below will not update a new symbol
> > with quote data?  The new symbol is created fine, but the quotes are not
> > added.   (Note: the code below has been reduced to only write the Close
> > array to the duplicate symbol).
> > Thanks,
> > David
> > 
> > // // AmiBroker javascript OLE code to copy close data from a symbol to
> > a duplicate symbol //
> > EnableScript("jscript");
> > Buy = Sell = 0;
> > ScanActive = "FALSE";if ( Status( "action" ) == actionScan )  ScanActive
> > = "TRUE";
> > abTicker = Name(); abYear = Year();abMonth = Month();abDay = Day(); <%
> > function GetArray( abName ){   return VBArray( AFL( abName )
> > ).toArray();}
> > jsScanActive = AFL("ScanActive");
> > if (jsScanActive == "TRUE"){ jsTicker = AFL.Var("abTicker"); jsYear =
> > GetArray("abYear"); jsMonth = GetArray("abMonth"); jsDay =
> > GetArray("abDay"); jsClose = GetArray("Close");
> >      AB = new ActiveXObject( "Broker.Application" );     oStocks =
> > AB.Stocks;     oSymbol = oStocks.Item( jsTicker );
> >      for ( m = 2; m <= 3; m++ )     {         TickerNew = jsTicker + "_"
> > + m;         oSymbolNew = oStocks.Add( TickerNew );
> >         for ( i = 0; i < jsDay.length; i++ )         {    oDate = new
> > Date( jsYear[i] + "-" + jsMonth[i] + "-" + jsDay[i] );            oQuote
> > = oSymbolNew.Quotations.Add( oDate.getVarDate() );            
> > oQuote.Close = jsClose[i];        }   }
> >    AB.RefreshAll();  AB.SaveDatabase(); }%>
> > 
> > --- In [email protected], "dbwyatt_1999" <dbw451@> wrote:
> > >
> > > Excellent Mike! Great suggestions.  However the results of your
> > modifications is similar to the results I was getting before.  The code
> > produces duplicate symbols with no quote data.  Something is still not
> > quite right with copying the quote data from the source symbol to the
> > new duplicate symbol.  I had previously surmised that the problem
> > probably lies with the Quotations.Add() routine not being passed a
> > proper date value. Most of the examples I could find for
> > Quotations.Add() are in jscript and the date parameter is formated as a
> > VT_DATE type (usually through the jscript date routine getVarDate())  or
> > as a string of format YYYY-MM-DD.
> > >
> > > I'm making an assumption that Quotations.Add() is not adding quote
> > data records because my chart shows the message "To plot any chart at
> > least 3 data bars are needed, but there are only 0 bars..." for each of
> > the new duplicate symbols.  I wanted to keep the code in AFL, but maybe
> > there's a reason there are no examples of Quotations.Add() in AFL and
> > the only way to get this to work is to convert to jscript.
> > >
> > > Regards,
> > >
> > > David
> > >
> > > --- In [email protected], "Mike" sfclimbers@ wrote:
> > > >
> > > > Try using DateTime instead. Also, the property is OpenInt, not
> > > > OpenInterest. Finally, rather than entering all the tickers
> > manually,
> > > > just run a Scan over a watchlist of desired tickers.
> > > > e.g. using a simplified version of your original post:
> > > > //
> > > > // AmiBroker OLE code to Duplicate a list of Symbols
> > > > //
> > > >
> > > > Buy = Sell = 0;
> > > >
> > > > if ( Status( "action" ) == actionScan )
> > > > {
> > > >      Ticker = Name();
> > > >      Dates = DateTime();
> > > >      AB = CreateObject( "Broker.Application" );
> > > >      oStocks = AB.Stocks;
> > > >      oSymbol = oStocks.Item( Ticker );
> > > >
> > > >      for ( m = 2; m <= 12; m++ )
> > > >      {
> > > >          TickerNew = Ticker + "_" + m;
> > > >          oSymbolNew = oStocks.Add( TickerNew );
> > > >
> > > >          oSymbolNew.FullName = oSymbol.FullName;
> > > >          oSymbolNew.Currency = oSymbol.Currency;
> > > >          oSymbolNew.Continuous = oSymbol.Continuous;
> > > >          oSymbolNew.MarketID = oSymbol.MarketID;
> > > >          oSymbolNew.GroupID = oSymbol.GroupID;
> > > >          oSymbolNew.IndustryID = oSymbol.IndustryID;
> > > >          oSymbolNew.DataLocalMode = oSymbol.DataLocalMode;
> > > >          oSymbolNew.RoundLotSize = oSymbol.RoundLotSize;
> > > >          oSymbolNew.MarginDeposit = oSymbol.MarginDeposit;
> > > >          oSymbolNew.TickSize = oSymbol.TickSize;
> > > >          oSymbolNew.PointValue = oSymbol.PointValue;
> > > >
> > > >          for ( i = 0; i < BarCount; i++ )
> > > >          {
> > > >              oQuotations = oSymbolNew.Quotations;
> > > >              oQuote = oQuotations.Add( NumToStr( dates[i],
> > formatDateTime
> > > > ) );
> > > >              oQuote.Open = O[i];
> > > >              oQuote.High = H[i];
> > > >              oQuote.Low = L[i];
> > > >              oQuote.Close = C[i];
> > > >              oQuote.Volume = V[i];
> > > >              oQuote.OpenInt = OI[i];
> > > >          }
> > > >      }
> > > >
> > > >      AB.RefreshAll();
> > > >      AB.SaveDatabase();
> > > > }
> > > >
> > > > --- In [email protected], "dbwyatt_1999" <dbw451@> wrote:
> > > > >
> > > > > Using OLE objects in AFL, what is the Date parameter format passed
> > to
> > > > the Quotations.Add() routine?  I've tried DateNum values, DateTime
> > > > values, and strings of Year + "-" + Month + "-" + Day.  I've been
> > > > unsuccessful in adding a quote to a new Symbol created with
> > > > Stocks.Add().
> > > > >
> > > > > Here's the relevant code (where oSymbolNew is a Stock object
> > created
> > > > earlier in the code with AB.Stocks.Add()):
> > > > >
> > > > >  qDay = Day();
> > > > >  qMonth = Month();
> > > > >  qYear = Year();
> > > > >  oQuotations = oSymbolNew.Quotations;
> > > > >
> > > > >  for(i=0; i<BarCount; i++)
> > > > >  {
> > > > >  qDate = "" + qYear[i] + "-" + qMonth[i] + "-" + qDay[i];
> > > > >  oQuote = oQuotations.Add( qDate );
> > > > >  oQuote.Close = C[i];
> > > > >  }
> > > > >
> > > > >
> > > > > Thanks,
> > > > >
> > > > > David
> > > > >
> > > > >
> > > > > --- In [email protected], "dbwyatt_1999" dbw451@ wrote:
> > > > > > I've attempted to code functionality to duplicate symbols using
> > the
> > > > AmiBroker OLE interface.  In my test code below, 2 symbols ($A0 and
> > $CA)
> > > > are attempted to be duplicated into symbols $A0_2, $A0_3, $CA_2, and
> > > > $CA_3.  The duplication process entails:
> > > > > >
> > > > > > 1. adding a new symbol
> > > > > > 2. setting the new symbol information using the source symbol
> > > > information
> > > > > > 3. adding new symbol quotes and assigning source symbol quote
> > > > values.
> > > > > >
> > > > > > My test code creates a new symbol ($A0_2) and assigns the
> > FullName
> > > > and Currency, but does not assign any other symbol information.  The
> > > > code also does not create the quotes for the new symbol.  The
> > > > SaveDatabase() routine is reached and executed.  The code then
> > generates
> > > > an "unhandled application error" probably caused by
> > RestorePriceArrays()
> > > > to a new symbol that has no quotes.
> > > > > >
> > > > > > Can anyone tell me what's wrong with the following code?
> > > > > >
> > > > > > //
> > > > > > // AmiBroker OLE code to Duplicate a list of Symbols
> > > > > > //
> > > > > > DuplicateTickers = ParamTrigger("Duplicate Tickers", "Click here
> > to
> > > > Duplicate Tickers");
> > > > > > TickerList = ParamStr("Tickers to Duplicate","$AO,$CA");
> > > > > > MaxTickerNum = Param("Max Ticker Number",3,2,12,1);
> > > > > >
> > > > > > if(DuplicateTickers)
> > > > > > {
> > > > > >
> > > > > >  AB = CreateObject("Broker.Application");
> > > > > >  oStocks = AB.Stocks;
> > > > > >  for (m=2; m<=MaxTickerNum; m++) // Loop through each duplicate
> > > > > >  {
> > > > > >   for(n=0; (Ticker=StrExtract( TickerList, n))!=""; n++) // Loop
> > > > through each symbol
> > > > > >   {
> > > > > >    oSymbol = oStocks.Item( Ticker );
> > > > > >
> > > > > >    TickerNew = Ticker + "_" + m;
> > > > > >    oSymbolNew = oStocks.Add( TickerNew );
> > > > > >
> > > > > >    oSymbolNew.FullName = oSymbol.FullName;
> > > > > >    oSymbolNew.Currency = oSymbol.Currency;
> > > > > >    oSymbolNew.Continuous = oSymbol.Continuous;
> > > > > >    oSymbolNew.MarketID = oSymbol.MarketID;
> > > > > >    oSymbolNew.GroupID = oSymbol.GroupID;
> > > > > >    oSymbolNew.IndustryID = oSymbol.IndustryID;
> > > > > >    oSymbolNew.DataLocalMode = oSymbol.DataLocalMode;
> > > > > >    oSymbolNew.RoundLotSize = oSymbol.RoundLotSize;
> > > > > >    oSymbolNew.MarginDeposit = oSymbol.MarginDeposit;
> > > > > >    oSymbolNew.TickSize = oSymbol.TickSize;
> > > > > >    oSymbolNew.PointValue = oSymbol.PointValue;
> > > > > >
> > > > > >    SetForeign( Ticker );
> > > > > >    qDate = DateNum();
> > > > > >    for(i=0; i<BarCount; i++)
> > > > > >    {
> > > > > >     oQuotations = oSymbolNew.Quotations;
> > > > > >     oQuote = oQuotations.Add( qDate[i] );
> > > > > >     oQuote.Open =  O[i];
> > > > > >     oQuote.High =  H[i];
> > > > > >     oQuote.Low =   L[i];
> > > > > >     oQuote.Close = C[i];
> > > > > >     oQuote.Volume = V[i];
> > > > > >     oQuote.OpenInterest = OI[i];
> > > > > >    }
> > > > > >
> > > > > >    AB.RefreshAll();
> > > > > >    AB.SaveDatabase();
> > > > > >    RestorePriceArrays();
> > > > > >   }
> > > > > >  }
> > > > > >
> > > > > > }
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > David
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --- In [email protected], "dbwyatt_1999" <dbw451@>
> > wrote:
> > > > > > >
> > > > > > > I've got a system that consists of 12 models.  For each model,
> > > > I've defined a watchlist that has unique symbol names that are only
> > used
> > > > by a single model.  The unique symbol names are duplicates of a
> > source
> > > > symbol with incremental numbers attached (e.g. ES, ES_2, ES_3, ...,
> > > > ES_12).  I create the duplicate symbols by starting with an ASCII
> > file
> > > > which I import, rename, import again, rename, import again, etc. 
> > Then I
> > > > have to go into Symbol information for each symbol and manually
> > enter
> > > > the contract specifications (lot size, margin, tick size, point
> > value).
> > > > > > >
> > > > > > > I now have a new requirement for 55 additional instruments and
> > > > have obtained historical futures data from PremiumData.  The 55
> > > > instruments were very easy to load and PremiumData has predefined
> > the
> > > > contract specifications.  Now I need to somehow duplicate the 55
> > > > instruments 11 times into 660 total symbols.  I have not found a
> > native
> > > > way in AB to duplicate (or rename) symbols.  I can export the data
> > using
> > > > AFL, but import files don't include the symbol information.
> > > > > > >
> > > > > > > Duplicating a symbol looks like it can be done using the
> > Amibroker
> > > > activeX object.  Before I embark on a new programming task, I
> > thought
> > > > I'd ask if anyone has written a script to duplicate an AB symbol:
> > > > > > >
> > > > > > > 1. creates a new symbol.
> > > > > > > 2. copies the quote data from a source symbol to the new
> > symbol.
> > > > > > > 3. copies the symbol information from the source symbol to the
> > new
> > > > symbol.
> > > > > > >
> > > > > > > Ultimately, I would like to loop through a watchlist 11 times;
> > > > creating and updating duplicate symbol quotes and information.  Any
> > > > directions or suggestions would be great.
> > > > > > >
> > > > > > > Thanks,
> > > > > > >
> > > > > > > David
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>


Reply via email to