Click here to Skip to main content
15,892,298 members
Articles / Mobile Apps

Yahoo! Managed

Rate me:
Please Sign up or sign in to vote.
4.87/5 (56 votes)
8 Jan 2015Apache12 min read 527.7K   25.5K   262  
Download financial data, managing online portfolio or using Search BOSS from Yahoo! with .NET
' ******************************************************************************
' ** 
' **  Yahoo Finance Managed
' **  Written by Marius Häusler 2010
' **  It would be pleasant, if you contact me when you are using this code.
' **  Contact: YahooFinanceManaged@gmail.com
' **  Project Home: http://code.google.com/p/yahoo-finance-managed/
' **  
' ******************************************************************************
' **  
' **  Copyright 2010 Marius Häusler
' **  
' **  Licensed under the Apache License, Version 2.0 (the "License");
' **  you may not use this file except in compliance with the License.
' **  You may obtain a copy of the License at
' **  
' **    http://www.apache.org/licenses/LICENSE-2.0
' **  
' **  Unless required by applicable law or agreed to in writing, software
' **  distributed under the License is distributed on an "AS IS" BASIS,
' **  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' **  See the License for the specific language governing permissions and
' **  limitations under the License.
' ** 
' ******************************************************************************


Namespace Finance

    ''' <summary>
    ''' Stores informations of different quote values. Implements IID. Serializable.
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class QuoteData
        Inherits QuoteBaseData

        Private mValues(Convert.ToInt32(QuoteProperty.YearRange)) As Object

        ''' <summary>
        ''' Gets or sets the value of a specfic property
        ''' </summary>
        ''' <param name="prp">Gets or sets the property you want to get or set</param>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Default Public Property Values(ByVal prp As QuoteProperty) As Object
            Get
                Return mValues(prp)
            End Get
            Set(ByVal value As Object)
                mValues(prp) = value
                If value IsNot Nothing Then
                    Select Case prp
                        Case QuoteProperty.Symbol : MyBase.SetID(value.ToString)
                        Case QuoteProperty.LastTradePriceOnly : If value.GetType Is GetType(Double) Then Double.TryParse(value.ToString, MyBase.LastTradePriceOnly)
                        Case QuoteProperty.LastTradeDate : If value.GetType Is GetType(Date) Then Date.TryParse(value.ToString, MyBase.LastTradeDate)
                        Case QuoteProperty.LastTradeTime : If value.GetType Is GetType(Date) Then Date.TryParse(value.ToString, MyBase.LastTradeTime)
                        Case QuoteProperty.Change : If value.GetType Is GetType(Double) Then Double.TryParse(value.ToString, MyBase.Change)
                        Case QuoteProperty.Open : If value.GetType Is GetType(Double) Then Double.TryParse(value.ToString, MyBase.Open)
                        Case QuoteProperty.DaysHigh : If value.GetType Is GetType(Double) Then Double.TryParse(value.ToString, MyBase.DaysHigh)
                        Case QuoteProperty.DaysLow : If value.GetType Is GetType(Double) Then Double.TryParse(value.ToString, MyBase.DaysLow)
                        Case QuoteProperty.Volume : If value.GetType Is GetType(Long) Then Long.TryParse(value.ToString, MyBase.Volume)
                    End Select
                End If
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the name of the QuoteData
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks>Represents the value of QuoteProperty.Name</remarks>
        Public Property Name() As String
            Get
                If mValues(QuoteProperty.Name) IsNot Nothing Then : Return mValues(QuoteProperty.Name).ToString
                Else : Return String.Empty
                End If
            End Get
            Set(ByVal value As String)
                mValues(QuoteProperty.Name) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets the ID of the QuoteData
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks>Represents the value of QuoteProperty.Symbol</remarks>
        Public Overloads ReadOnly Property ID() As String
            Get
                Return MyBase.ID
            End Get
        End Property
        ''' <summary>
        ''' Sets a new ID value. Implementation from ISettableID.
        ''' </summary>
        ''' <param name="id">A valid Yahoo! ID</param>
        ''' <remarks></remarks>
        Public Overloads Sub SetID(ByVal id As String)
            MyBase.SetID(id)
            mValues(QuoteProperty.Symbol) = id
        End Sub

        ''' <summary>
        ''' Gets or sets the latest price value of the QuoteData.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks>Represents the value of QuoteProperty.LastTradePriceOnly</remarks>
        Public Overloads Property LastTradePriceOnly() As Double
            Get
                Return MyBase.LastTradePriceOnly
            End Get
            Set(ByVal value As Double)
                MyBase.LastTradePriceOnly = value
                mValues(QuoteProperty.LastTradePriceOnly) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the date value of the last trade.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property LastTradeDate() As Date
            Get
                Return MyBase.LastTradeDate
            End Get
            Set(ByVal value As Date)
                MyBase.LastTradeDate = value
                mValues(QuoteProperty.LastTradeDate) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the time value of the last trade.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property LastTradeTime() As DateTime
            Get
                Return MyBase.LastTradeTime
            End Get
            Set(ByVal value As DateTime)
                MyBase.LastTradeTime = value
                mValues(QuoteProperty.LastTradeTime) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the change in percent.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property Change() As Double
            Get
                Return MyBase.Change
            End Get
            Set(ByVal value As Double)
                MyBase.Change = value
                mValues(QuoteProperty.Change) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the opening price value of the day.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property Open() As Double
            Get
                Return MyBase.Open
            End Get
            Set(ByVal value As Double)
                MyBase.Open = value
                mValues(QuoteProperty.Open) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the highest price value of the day.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property DaysHigh() As Double
            Get
                Return MyBase.DaysHigh
            End Get
            Set(ByVal value As Double)
                MyBase.DaysHigh = value
                mValues(QuoteProperty.DaysHigh) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the lowest price value of the day.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property DaysLow() As Double
            Get
                Return MyBase.DaysLow
            End Get
            Set(ByVal value As Double)
                MyBase.DaysLow = value
                mValues(QuoteProperty.DaysLow) = value
            End Set
        End Property
        ''' <summary>
        ''' Gets or sets the trade volume of the day.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overloads Property Volume() As Long
            Get
                Return MyBase.Volume
            End Get
            Set(ByVal value As Long)
                MyBase.Volume = value
                mValues(QuoteProperty.Volume) = value
            End Set
        End Property

        ''' <summary>
        ''' Default constructor
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
        End Sub

        ''' <summary>
        ''' Copies the values of a QuoteData to this instance.
        ''' </summary>
        ''' <param name="newValue"></param>
        ''' <remarks></remarks>
        Public Shadows Sub CopyData(ByVal newValue As QuoteData)
            MyBase.CopyData(newValue)
            For i As QuoteProperty = 0 To QuoteProperty.YearRange
                mValues(CInt(i)) = newValue(i)
            Next
        End Sub

    End Class

End Namespace

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Germany Germany
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions