Stock price data


#1

Here’s a slightly complicated question. In 6, for a while you were able to directly import current stock price data vis a Channel that linked to Yahoo Finance I believe.

I successfully set it up, and it worked for several years. At some point it stopped working, and since I wasn’t using that database much at the time, it wasn’t a big enough deal that I needed to track down the problem.

Now I’m looking at updating that database for X and was wondering if there is any method, current or planned, for adding the ability to import stock price data directly into a file?

Or if that’s not in the cards, does anyone have a streamlined method for using a list of stock ticker symbols to grab a list of current prices that can then be imported into a PanoramaX file? Ideally I could upload a file of several hundred ticker symbols and get back a text file with the current price for each.

This may be a task better suited to Excel or some financial software, but I always like to try to do these things in Panorama first.

Thanks,

Peter F


#2

I wrote that channel. I have a much more advanced version of it now, which returns a dictionary that gives a lot more data. It uses the NASDAQ page, so some of the symbols are different, but I have downloaded their list of every stock that is traded on the three major exchanges, and run it on all of them.

I have not kept up on the documentation, though, so I have not distributed it yet. How interested are you?


#3

I am able to download my portfolio stocks in Yahoo in a csv file no problem. I select the two columns I need (name of stock and price for the day) and add it to my Pan file. I then do some lookups for the other columns and all is done in about 2 minutes of time. I am guessing it can be automated, but this is pretty simple to me.


#4

Bruce…well, I’m reasonably interested, though my Panorama skills are just strong enough to get me into trouble.

If it runs on X and can be implemented without a crazy amount of programming on my end, I’m interested. (Or even if it only runs on 6 for the moment, I might reactivate the idea in a 6 database for now.)

It’s not a hugely pressing issue for me though so there’s no rush. If it’s something you’re going to do at some point, I can wait a bit. I’m just always looking for the most elegant implementation of an idea. I can use Pete’s workaround (posted after yours) for the time being too.

Thanks.

Peter F.


#5

It runs on X. I stopped developing it for 6.

This is the text:

/*


This procedure will get a stock quote for a given stock symbol and return it as a numeric value.
It will return a dictionary with other information.

This is the stock or mutual fund symbol

This is the last sale. The other parameter may be omitted to return only the quote.

This returns a dictionary with further information

TYPE=TEXT>This returns a dictionary (see GETDICTIONARYVALUE) with information about this stock.
The dictionary will contains one or more of the values listed below.


“Name”=Company Name


"LastSale"=Quote for last sale


"DChange"=Change from previous close


"Target"=One year target value


"DHigh"=Daily high


"DLow"=Daily low


"Volume=Daily volume


"Previous"=Previous close


"Dividend"=Annual dividend


"Ex-dividend"=Ex-dividend date


"PaymentDate"=Dividend payment date


"EPS"=Earnings per share


"P/E"=Price/earnings ratio


"AHigh"=52 week high


"ALow"=52 week low


"Description"=Company Description


"MarketCap"=Market Capitalization


"AnnualEPSest"=Annual EPS Estimate


"QuarterEPSest"=Quarterly EPS Estimate


"PEGratio"=PEG ratio


"MeanRecommendation"=Mean Recommendation


Local Quote
GetStockQuote "AAPL", LAST will return only the last sale quote.

GetStockQuote "AAPL", LAST, QUOTE

QUOTE will return a dictionary with the above data as text.

*/

Local NPage, QUOTE, vOPEN, vPREV, vEPS, vPRICEEARN, vTARGET, vADIV, vXDD, vDPDATE, vNAME, vLAST, vCHANGE, vHIGH, vLOW, vHILOW, vVOLUME, vHIGH52, vLOW52, dump
Local vDESCRIPTION, vMARCAP, vAEPSEST, vQEPSEST, vPEGRAT, vMEANREC
loadurl NPage,“http://www.nasdaq.com/symbol/” + lower(parameter(1))

//displaydata NPage

vNAME = replace(textbefore(textafter(NPage,{stock quote - }),{ price}),"&","&")

vLAST = tagdata(NPage,’_LastSale2">$ ‘,’’,1)

vTARGET = textafter(tagdata(NPage,‘

1 Year Target’,’</td’,1),’’)

vHILOW = tagdata(NPage,{Today’s High /Low},’’,1)
vHIGH = tagdata(vHILOW,{$ },"",1)
vLOW = tagdata(vHILOW,{id=“Label1”>$ },"

",1)

vVOLUME = textafter(tagdata(tagdata(NPage,{Share Volume},"",1),{<label},{},1),{">})

vPREV = tagdata(tagdata(NPage,{“Previous Close”},"",1),{nowrap>$ },{},1)

vCHANGE = str(val(replace(vLAST,",","")) - val(replace(vPREV,",","")))

vADIV = ?(textafter(tagdata(NPage,{Annualized dividend},"",1),{ nowrap>$ }) contains “N/A”,“N/A”,tagdata(tagdata(NPage,{Annualized dividend},"",1),"$","",1))

vXDD = tagdata(textafter(NPage,“Ex Dividend Date”),{

},"",1)

vDPDATE = replace(textafter(tagdata(NPage,{Dividend Payment Date},"",1),{

}),".","")

vHILOW = tagdata(textafter(NPage,“52 Week High/Low”),{

},"",1)
//displaydata vHILOW
vHIGH52 = tagdata(vHILOW,{$ }," “,1)
vLOW52 = strip(textafter(vHILOW,”/ $ "))

vEPS = tagdata(textafter(NPage,“Earnings Per Share (EPS)”),{

$ },"",1)

vPRICEEARN = tagdata(textafter(NPage,“P/E Ratio”),{

},"",1)

//Note: Returned as text. NE means Negative Earnings

vMARCAP = strip(tagdata(textafter(NPage,“Market Cap”),"$","<",1))
vAEPSEST = tagdata(textafter(NPage,“Annual EPS Est”),"

","",1)
vQEPSEST = tagdata(tagdata(NPage,“Quarterly EPS Est”,"",1),"","",1)
vPEGRAT = tagdata(textafter(NPage,“PEG Ratio:”),"","",1)
vMEANREC = tagdata(tagdata(NPage,“Mean Recommendation”,"",1),"","",1)

vDESCRIPTION = tagdata(textafter(NPage,{Company Description}),"

","

",1)

QUOTE = initializedictionary( “Name”, vNAME, “LastSale”, vLAST, “DChange”, vCHANGE, “Target”, vTARGET, “DHigh”, vHIGH, “DLow”, vLOW, “Volume”, vVOLUME, “Previous”, vPREV, “Dividend”, vADIV, “Ex-dividend”, vXDD, “PaymentDate”, vDPDATE, “EPS”, vEPS, “P/E”, vPRICEEARN, “AHigh”, vHIGH52, “ALow”, vLOW52, “Description”, vDESCRIPTION, “MarketCap”, vMARCAP, “AnnualEPSest”, vAEPSEST, “QuarterEPSest”, vQEPSEST, “PEGratio”, vPEGRAT, “MeanRecommendation”, vMEANREC)

//dumpdictionary QUOTE, dump
//displaydata dump

/* This section is for testing, and to note the way the data are accessed.

Message "Name " + getdictionaryvalue(QUOTE,“Name”)
Message "LastSale " + getdictionaryvalue(QUOTE,“LastSale”)
Message "DChange " + getdictionaryvalue(QUOTE,“DChange”)
Message "Target " + getdictionaryvalue(QUOTE,“Target”)
Message "DHigh " + getdictionaryvalue(QUOTE,“DHigh”)
Message "DLow " + getdictionaryvalue(QUOTE,“DLow”)
Message "Volume " + getdictionaryvalue(QUOTE,“Volume”)
Message "Previous " + getdictionaryvalue(QUOTE,“Previous”)
Message "Dividend " + getdictionaryvalue(QUOTE,“Dividend”)
Message "Ex-dividend " + getdictionaryvalue(QUOTE,“Ex-dividend”)
Message "PaymentDate " + getdictionaryvalue(QUOTE,“PaymentDate”)
Message "P/E " + getdictionaryvalue(QUOTE,“P/E”)
Message "EPS " + getdictionaryvalue(QUOTE,“EPS”)
Message "AHigh " + getdictionaryvalue(QUOTE,“AHigh”)
Message "ALow " + getdictionaryvalue(QUOTE,“ALow”)
Message “MarketCap” +getdictionaryvalue(QUOTE,“MarketCap”)
Message “Description” + getdictionaryvalue(QUOTE,“Description”)
Message "Annual EPS estimate " + getdictionaryvalue(QUOTE,“AnnualEPSest”)
Message "Quarterly EPS estimate " + getdictionaryvalue(QUOTE,“QuarterEPSest”)
Message "PEG Ratio " + getdictionaryvalue(QUOTE,“PEGratio”)
Message "Mean Recommendation " + getdictionaryvalue(QUOTE,“MeanRecommendation”)
*/

setparameter 2,vLAST
setparameter 3,QUOTE
IF ERROR
RTN
ENDIF

// End of procedure


#6

Just to make it a bit easier to read, I have re-posted Bruce’s code (thank you Bruce!). (If you indent text by 4 characters, which you can easily do in the Panorama code editor with the Shift Right command, it will be formatted as code when you paste it into the forum. This works in Bitbucket also.)

/*
<PROCEDUREINFO>
  <DESCRIPTION>
 This procedure will get a stock quote for a given stock symbol and return it as a numeric value.
 It will return a dictionary with other information.
  </DESCRIPTION>
  <PARAMETER NAME=SYMBOL TYPE=TEXT>This is the stock or mutual fund symbol</PARAMETER>

  <PARAMETER NAME=LAST TYPE=TEXT> This is the last sale. The other parameter may be omitted to return only the quote.</PARAMETER>

  <PARAMETER NAME=QUOTE TYPE=DICTIONARY> This returns a dictionary with further information</PARAMETER>

  <PARAMETER NAME=QUOTE> TYPE=TEXT>This returns a dictionary (see GETDICTIONARYVALUE) with information about this stock.
  The dictionary will contains one or more of the values listed below.<p>
  "Name"=Company Name<p>
  "LastSale"=Quote for last sale<p>
  "DChange"=Change from previous close<p>
  "Target"=One year target value<p>
  "DHigh"=Daily high<p>
  "DLow"=Daily low<p>
  "Volume=Daily volume<p>
  "Previous"=Previous close<p>
  "Dividend"=Annual dividend<p>
  "Ex-dividend"=Ex-dividend date<p>
  "PaymentDate"=Dividend payment date<p>
  "EPS"=Earnings per share<p>
  "P/E"=Price/earnings ratio<p>
  "AHigh"=52 week high<p>
  "ALow"=52 week low<p>
  "Description"=Company Description<p>
  "MarketCap"=Market Capitalization<p>
  "AnnualEPSest"=Annual EPS Estimate<p>
  "QuarterEPSest"=Quarterly  EPS Estimate<p>
  "PEGratio"=PEG ratio<p>
  "MeanRecommendation"=Mean Recommendation<p>
  </PARAMETER>

<EXAMPLES>
Local Quote <br>
GetStockQuote "AAPL", LAST will return only the last sale quote.<p>
GetStockQuote "AAPL", LAST, QUOTE<p>
QUOTE will return a dictionary with the above data as text.
</EXAMPLES><p>
</PROCEDUREINFO>
*/


Local NPage, QUOTE, vOPEN, vPREV, vEPS, vPRICEEARN, vTARGET, vADIV, vXDD, vDPDATE, vNAME, vLAST, vCHANGE, vHIGH, vLOW, vHILOW, vVOLUME, vHIGH52, vLOW52, dump
Local vDESCRIPTION, vMARCAP, vAEPSEST, vQEPSEST, vPEGRAT, vMEANREC
loadurl NPage,"http://www.nasdaq.com/symbol/" + lower(parameter(1))

//displaydata NPage

vNAME = replace(textbefore(textafter(NPage,{stock quote - }),{ price}),"&amp;","&")

vLAST = tagdata(NPage,'_LastSale2">$&nbsp;','</label></td>',1)

vTARGET = textafter(tagdata(NPage,'<td>1 Year Target</td>','</td',1),'<td align="right" nowrap>')

vHILOW = tagdata(NPage,{Today's High /Low},'</tr>',1)
vHIGH = tagdata(vHILOW,{<label id="Label3">$&nbsp;},"</label>",1)
vLOW = tagdata(vHILOW,{id="Label1">$&nbsp;},"</label></td>",1)

vVOLUME = textafter(tagdata(tagdata(NPage,{Share Volume},"</tr>",1),{<label},{</label>},1),{">})

vPREV = tagdata(tagdata(NPage,{"Previous Close"},"</tr>",1),{nowrap>$&nbsp;},{</td>},1)

vCHANGE = str(val(replace(vLAST,",","")) - val(replace(vPREV,",","")))

vADIV = ?(textafter(tagdata(NPage,{Annualized dividend</td>},"</tr>",1),{ nowrap>$&nbsp;}) contains "N/A","N/A",tagdata(tagdata(NPage,{Annualized dividend</td>},"</tr>",1),"$","</td>",1))
							
vXDD = tagdata(textafter(NPage,"Ex Dividend Date"),{<td align="right" nowrap>},"</td>",1)                          

vDPDATE = replace(textafter(tagdata(NPage,{Dividend Payment Date</td>},"</td>",1),{<td align="right" nowrap>}),".","")                    

						
vHILOW = tagdata(textafter(NPage,"52 Week High/Low"),{<td align="right" valign="top" nowrap>},"</td>",1)
//displaydata vHILOW
vHIGH52 = tagdata(vHILOW,{$&nbsp;},"&nbsp;",1)
vLOW52 = strip(textafter(vHILOW,"/&nbsp;$&nbsp;"))

vEPS = tagdata(textafter(NPage,"Earnings Per Share (EPS)"),{<td align="right" nowrap>$&nbsp;},"</td>",1)

vPRICEEARN = tagdata(textafter(NPage,"P/E Ratio"),{<td align="right" nowrap>},"</td>",1)

//Note: Returned as text. NE means Negative Earnings

vMARCAP = strip(tagdata(textafter(NPage,"Market Cap"),"$","<",1))
vAEPSEST = tagdata(textafter(NPage,"Annual EPS Est"),"<td>","</td>",1)
vQEPSEST = tagdata(tagdata(NPage,"Quarterly EPS Est","</tr>",1),"<td>","</td>",1)
vPEGRAT = tagdata(textafter(NPage,"PEG Ratio:"),"<td>","</td>",1)
vMEANREC = tagdata(tagdata(NPage,"Mean Recommendation","</tr>",1),"<td>","</td>",1)


vDESCRIPTION = tagdata(textafter(NPage,{Company Description}),"<p>","</p>",1)

QUOTE = initializedictionary( "Name", vNAME, "LastSale", vLAST, "DChange", vCHANGE, "Target", vTARGET, "DHigh", vHIGH, "DLow", vLOW, "Volume", vVOLUME, "Previous", vPREV, "Dividend", vADIV, "Ex-dividend", vXDD, "PaymentDate", vDPDATE, "EPS", vEPS, "P/E", vPRICEEARN, "AHigh", vHIGH52, "ALow", vLOW52, "Description", vDESCRIPTION, "MarketCap", vMARCAP, "AnnualEPSest", vAEPSEST, "QuarterEPSest", vQEPSEST, "PEGratio", vPEGRAT, "MeanRecommendation", vMEANREC)

//dumpdictionary QUOTE, dump
//displaydata dump

/*         This section is for testing, and to note the way the data are accessed.

Message "Name " + getdictionaryvalue(QUOTE,"Name")
Message "LastSale " + getdictionaryvalue(QUOTE,"LastSale") 
Message "DChange " + getdictionaryvalue(QUOTE,"DChange")
Message "Target " + getdictionaryvalue(QUOTE,"Target")
Message "DHigh " + getdictionaryvalue(QUOTE,"DHigh")
Message "DLow " + getdictionaryvalue(QUOTE,"DLow")
Message "Volume " + getdictionaryvalue(QUOTE,"Volume")
Message "Previous " + getdictionaryvalue(QUOTE,"Previous")
Message "Dividend " + getdictionaryvalue(QUOTE,"Dividend")
Message "Ex-dividend " + getdictionaryvalue(QUOTE,"Ex-dividend")
Message "PaymentDate " + getdictionaryvalue(QUOTE,"PaymentDate")
Message "P/E " + getdictionaryvalue(QUOTE,"P/E")
Message "EPS " + getdictionaryvalue(QUOTE,"EPS")
Message "AHigh " + getdictionaryvalue(QUOTE,"AHigh")
Message "ALow " + getdictionaryvalue(QUOTE,"ALow")
Message "MarketCap" +getdictionaryvalue(QUOTE,"MarketCap")
Message "Description" + getdictionaryvalue(QUOTE,"Description")
Message "Annual EPS estimate " + getdictionaryvalue(QUOTE,"AnnualEPSest")
Message "Quarterly EPS estimate " + getdictionaryvalue(QUOTE,"QuarterEPSest")
Message "PEG Ratio " + getdictionaryvalue(QUOTE,"PEGratio")
Message "Mean Recommendation " + getdictionaryvalue(QUOTE,"MeanRecommendation")
*/


setparameter 2,vLAST
setparameter 3,QUOTE
IF ERROR
RTN
ENDIF

// End of procedure

#7

Many thanks, Bruce and Jim! Best software support forum ever!

This will give me plenty to play with. It’s a bit over my head, but I should be able to make something work.

Thanks,

Peter F


#8

Yup, surely puts my approach to shame…:dizzy_face:


#9

The thing that helps is that NASDAQ’s pages are exceptionally well formatted and commented. If you uncomment out the displaydata statement, you can see that. That is what drew me away from Yahoo Finance.


#10

NASDAQ seems to have changed its pages today. I am working on an update.


#11
/*
<PROCEDUREINFO>
  <DESCRIPTION>
 This procedure will get a stock quote for a given stock symbol and return it as a numeric value.
 It will return a dictionary with other information.
  </DESCRIPTION>
  <PARAMETER NAME=SYMBOL TYPE=TEXT>This is the stock or mutual fund symbol</PARAMETER>
 
  <PARAMETER NAME=LAST TYPE=TEXT> This is the last sale. The other parameter may be omitted to return only the quote.</PARAMETER>
  
  <PARAMETER NAME=QUOTE TYPE=DICTIONARY> This returns a dictionary with further information</PARAMETER>
  
  <PARAMETER NAME=QUOTE> TYPE=TEXT>This returns a dictionary (see GETDICTIONARYVALUE) with information about this stock.
  The dictionary will contains one or more of the values listed below.<p>
  "Name"=Company Name<p>
  "LastSale"=Quote for last sale<p>
  "DChange"=Change from previous close<p>
  "Target"=One year target value<p>
  "DHigh"=Daily high<p>
  "DLow"=Daily low<p>
  "Volume=Daily volume<p>
  "Previous"=Previous close<p>
  "Dividend"=Annual dividend<p>
  "Ex-dividend"=Ex-dividend date<p>
  "PaymentDate"=Dividend payment date<p>
  "EPS"=Earnings per share<p>
  "P/E"=Price/earnings ratio<p>
  "AHigh"=52 week high<p>
  "ALow"=52 week low<p>
  "Description"=Company Description<p>
  "MarketCap"=Market Capitalization<p>
  "AnnualEPSest"=Annual EPS Estimate<p>
  "QuarterEPSest"=Quarterly  EPS Estimate<p>
  "PEGratio"=PEG ratio<p>
  "MeanRecommendation"=Mean Recommendation<p>
  </PARAMETER>
 
<EXAMPLES>
Local Quote <br>
GetStockQuote "AAPL", LAST will return only the last sale quote.<p>
GetStockQuote "AAPL", LAST, QUOTE<p>
QUOTE will return a dictionary with the above data as text.
</EXAMPLES><p>
</PROCEDUREINFO>
*/


Local NPage, QUOTE, vOPEN, vPREV, vEPS, vPRICEEARN, vTARGET, vADIV, vXDD, vDPDATE, vNAME, vLAST, vCHANGE, vHIGH, vLOW, vHILOW, vVOLUME, vHIGH52, vLOW52, dump
Local vDESCRIPTION, vMARCAP, vAEPSEST, vQEPSEST, vPEGRAT, vMEANREC
loadurl NPage,"http://www.nasdaq.com/symbol/" + lower(parameter(1))

//displaydata NPage

//NPage = textafter(NPage,{<meta name="viewport" content="width=device-width" />})

vNAME = replace(textbefore(textafter(NPage,{Stock Quote - }),{ Price}),"&amp;","&")

vLAST = tagdata(NPage,'<div id="qwidget_lastsale" class="qwidget-dollar">$','</div>',1)
vTARGET = strip(tagdata(tagdata(NPage,{1 Year Target},{Today's High / Low},1),{<div class="table-cell">},{</div>},1))
vHILOW = strip(tagdata(textafter(NPage,{Today's High / Low}),{<div class="table-cell">},{</div>},1))

vHIGH = tagdata(vHILOW,{$&nbsp;},{&nbsp;},1)
vLOW = textafter(vHILOW,{/&nbsp;$&nbsp;})

vVOLUME = strip(tagdata(textafter(NPage,{Share Volume}),{<div class="table-cell">},{</div>},1))

vPREV = textafter(tagdata(textafter(NPage,{Previous Close}),{<div class="table-cell">},{</div>},1),{$&nbsp;})

vCHANGE = str(val(vLAST) - val(vPREV))

vADIV = ?(strip(tagdata(textafter(NPage,{Annualized Dividend}),{<div class="table-cell">},{</div>},1)) contains "N/A","N/A",strip(textafter(tagdata(textafter(NPage,{Annualized Dividend}),{<div class="table-cell">},{</div>},1),{$})))
                                
vXDD = strip(tagdata(textafter(NPage,{Ex Dividend Date}),{<div class="table-cell">},{</div>},1))                          

vDPDATE = strip(tagdata(textafter(NPage,{Dividend Payment Date}),{<div class="table-cell">},{</div>},1))                    

                            
vHILOW = strip(tagdata(textafter(NPage,{52 Week High / Low}),{<div class="table-cell">},{</div>},1))
//displaydata vHILOW
vHIGH52 = tagdata(vHILOW,{$&nbsp;},"&nbsp;",1)
vLOW52 = strip(textafter(vHILOW,"/&nbsp;$&nbsp;"))

vEPS = strip(textafter(tagdata(textafter(NPage,{Earnings Per Share (EPS)}),{<div class="table-cell">},{</div>},1),{$&nbsp;}))

vPRICEEARN = strip(tagdata(textafter(NPage,{P/E Ratio}),{<div class="table-cell">},{</div>},1))

//Note: Returned as text. NE means Negative Earnings

vMARCAP = strip(tagdata(textafter(NPage,{Market Cap}),{<div class="table-cell">},{</div>},1))
vAEPSEST = tagdata(textafter(NPage,"Annual EPS Est"),"<td>","</td>",1)
vQEPSEST = tagdata(tagdata(NPage,"Quarterly EPS Est","</tr>",1),"<td>","</td>",1)
vPEGRAT = tagdata(textafter(NPage,"PEG Ratio:"),"<td>","</td>",1)
vMEANREC = tagdata(tagdata(NPage,"Mean Recommendation","</tr>",1),"<td>","</td>",1)


vDESCRIPTION = tagdata(textafter(NPage,{Company Description}),"<p>","</p>",1)

QUOTE = initializedictionary( "Name", vNAME, "LastSale", vLAST, "DChange", vCHANGE, "Target", vTARGET, "DHigh", vHIGH, "DLow", vLOW, "Volume", vVOLUME, "Previous", vPREV, "Dividend", vADIV, "Ex-dividend", vXDD, "PaymentDate", vDPDATE, "EPS", vEPS, "P/E", vPRICEEARN, "AHigh", vHIGH52, "ALow", vLOW52, "Description", vDESCRIPTION, "MarketCap", vMARCAP, "AnnualEPSest", vAEPSEST, "QuarterEPSest", vQEPSEST, "PEGratio", vPEGRAT, "MeanRecommendation", vMEANREC)

//dumpdictionary QUOTE, dump
//displaydata dump

/*         This section is for testing, and to note the way the data are accessed.

Message "Name " + getdictionaryvalue(QUOTE,"Name")
Message "LastSale " + getdictionaryvalue(QUOTE,"LastSale") 
Message "DChange " + getdictionaryvalue(QUOTE,"DChange")
Message "Target " + getdictionaryvalue(QUOTE,"Target")
Message "DHigh " + getdictionaryvalue(QUOTE,"DHigh")
Message "DLow " + getdictionaryvalue(QUOTE,"DLow")
Message "Volume " + getdictionaryvalue(QUOTE,"Volume")
Message "Previous " + getdictionaryvalue(QUOTE,"Previous")
Message "Dividend " + getdictionaryvalue(QUOTE,"Dividend")
Message "Ex-dividend " + getdictionaryvalue(QUOTE,"Ex-dividend")
Message "PaymentDate " + getdictionaryvalue(QUOTE,"PaymentDate")
Message "P/E " + getdictionaryvalue(QUOTE,"P/E")
Message "EPS " + getdictionaryvalue(QUOTE,"EPS")
Message "AHigh " + getdictionaryvalue(QUOTE,"AHigh")
Message "ALow " + getdictionaryvalue(QUOTE,"ALow")
Message "MarketCap" +getdictionaryvalue(QUOTE,"MarketCap")
Message "Description" + getdictionaryvalue(QUOTE,"Description")
Message "Annual EPS estimate " + getdictionaryvalue(QUOTE,"AnnualEPSest")
Message "Quarterly EPS estimate " + getdictionaryvalue(QUOTE,"QuarterEPSest")
Message "PEG Ratio " + getdictionaryvalue(QUOTE,"PEGratio")
Message "Mean Recommendation " + getdictionaryvalue(QUOTE,"MeanRecommendation")
*/


setparameter 2,vLAST
setparameter 3,QUOTE
IF ERROR
RTN
ENDIF