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" <dbw...@...> 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
> >
>