Mike,

By default, the "Local Data Storage" for PremiumData is turned off.  I enabled 
it and the duplicate symbol data and information seems to save to the local 
database.  I did quickly notice that by switching to local database from the 
Metastock plug-in that only the symbols I've previously looked at on a chart 
have data.  If I switch back to the Metastock plug-in, then all symbols have 
data for viewing on a chart.  So I guess I should keep the database set to the 
Metastock plug-in and temporarily change it to local whenever I want to update 
the duplicate symbols.

Thanks for all your help and insights.

Regards,

David

--- In [email protected], "Mike" <sfclimb...@...> wrote:
>
> David,
> 
> The code provided in my earlier post, below, works fine for me. Though, I've 
> only tested it on the trial version of AB, so the new tickers do not get 
> saved to the database (AB trial prevents that). 
> 
> After the Scan, the new tickers are definitely populated with data and render 
> correctly on a chart.
> 
> This is what I did (32 bit AB Standard Edition Trial 5.20.0):
> 
> - Load the file into the AA window
> - "Apply to" set as "Use Filter" and choose desired watchlist
> - "Range" set as "n last days" with n = 1
> - Scan
> 
> All duplicate symbols were generated, all with seemingly identical data.
> 
> Mike
> 
> --- 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