דף הבית > VBA > מחירי מניות בלחיצת כפתור – ישירות בגיליון האקסל שלכם

מחירי מניות בלחיצת כפתור – ישירות בגיליון האקסל שלכם

Stock market analysis

אנשי שוק ההון? הפוסט הזה בשבילכם.

תכירו את הנוסחה שמביאה ציטוטי מחירי מניות ישר אל תוך האקסל שלכם.

 

 

אם אתם אנליסטים בתחום שוק ההון, קרוב לוודאי שאתם צורכים כמות גדולה של נתוני ניירות ערך כחומר גלם. בפוסט זה אסביר כיצד ניתן להביא נתוני שערי מניות ישירות את גיליון האקסל שלכם. לצורך כך, תכירו את נוסחת StockQuote.

נוסחה זו מאפשרת לקבל נתוני ניירות ערך מהפורטל של Yahoo Finance. הנוסחה מקבלת כפרמטר את הטיקר של נייר הערך ותאריך מסוים, ומחזירה את שער הסגירה הרלוונטי. לפיכך, הנוסחה מאפשרת יצירת טבלאות דינמיות עבור מניות ותאריכים משתנים, המגיבות ומתעדכנות עם שינוי בקלט מהמשתמש.

 

להלן הסבר מפורט על אופן הפעלת הנוסחה:

1. יש לפתוח את קונסולת ה-VBA מתוך האקסל ע"י לחיצה של Alt+F11.

2. יש להוסיף מודול ע"י קליק ימני על כותרת הפרויקט -> הוספה (Insert) -> מודול (Module).

1

3. יש להדביק את הקוד הבא בחלון המודול שייפתח:

Function StockQuote(strTicker As String, Optional dtDate As Variant)
    ' Date is optional, current date is used if omitted
    ' If not date, throw error.
    If IsMissing(dtDate) Then
        dtDate = Date
    Else
        If Not (IsDate(dtDate)) Then
            StockQuote = CVErr(xlErrNum)
        End If
    End If
    
    Dim dtPrevDate As Date
    Dim strURL As String, strCSV As String, strRows() As String, strColumns() As String
    Dim dbClose As Double
    
    dtPrevDate = dtDate - 7
    
    ' Request string for Yahoo
    strURL = "http://ichart.finance.yahoo.com/table.csv?s=" & strTicker & _
        "&a=" & Month(dtPrevDate) - 1 & _
        "&b=" & Day(dtPrevDate) & _
        "&c=" & Year(dtPrevDate) & _
        "&d=" & Month(dtDate) - 1 & _
        "&e=" & Day(dtDate) & _
        "&f=" & Year(dtDate) & _
        "&g=d&ignore=.csv"
       
    ' Send request
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", strURL, False
    http.Send
    strCSV = http.responseText
    
    ' Receive results:
    ' Most current data is in row 2, right under the title. Column 5 holds closing price data
    strRows() = Split(strCSV, Chr(10)) ' Split to rows
    strColumns = Split(strRows(1), ",") ' Split to columns
    dbClose = strColumns(4) ' Get 5th column (1st = 0)
       
    StockQuote = dbClose
    
    Set http = Nothing
 
End Function

 

4. יש לשמור את האקסל בתבנית xlsm, המאפשרת הפעלה של מאקרו.

2

הערה: כדי שהנוסחה תפעל כנדרש, יש לאפשר הפעלת מאקרו עם פתיחת קובץ האקסל.
5. כעת ניתן להשתמש בנוסחת StockQuote כמו בכל נוסחת אקסל רגילה, כאשר הפרמטר הראשון מכיל את קוד הטיקר והשני מכיל את התאריך הרצוי:

=StockQuote("GOOG",DATEVALUE("01/01/2015"))

 

כמובן, אפשר לקשר את הקלט לתאים אחרים באופן דינמי:

3

 

פורסם במקור כאן: http://bit.ly/1xrssih

נוסחאות VBA נוספות ניתן למצוא כאן

יש לעיין בדיסקליימר

 אתם מוזמנים להוריד את קובץ ההדגמה עם קוד מוכן ודוגמאות לשימוש.

 

בהצלחה!

 

אהבתם? נשמח אם תשתפו חברים ותשאירו פידבק בתגובות למטה. תודה!

קטגוריות:VBA
  1. gili
    23 מרץ, 2015 מתוך 23:40 | #1

    צריך כזה בעברית . . . / של מניות ישראליות. . .

  2. ליאור
    16 ספטמבר, 2015 מתוך 11:07 | #2

    מעולה! תודה

    • admin
      18 ספטמבר, 2015 מתוך 09:20 | #3

      בכיף! שמחנו לעזור

  3. ליאור
    22 ספטמבר, 2015 מתוך 14:44 | #4

    שאלת המשך,
    ניסיתי לשלוף נתונים של חוזים עתידיים שקיימים ביאהו דרך החיבור אבל לא הצלחתי.

    לדוג' רציתי לשלוף את הנתונים של החוזה העתידי על הS&P500 שקיים בYAHOO רק עם סיומת של שם הבורסה לדוג ESZ15.CME אבל אני לא מצליח לקבל שום נתון. (#VALUE)

    (קישור לחוזה ביאהו – http://finance.yahoo.com/q?s=ESZ15.CME&ql=0)

    יש לך רעיון כיצד לפתור את זה?

    • admin
      22 ספטמבר, 2015 מתוך 16:25 | #5

      הי

      יאהו לא מספקת נתונים היסטוריים עבור ני"ע מהסוג שציינת: http://finance.yahoo.com/q/hp?s=ESZ15.CME
      יחד עם זאת, אתה יכול לקבל את הציטוט הנוכחי ללא בעיה, בעזרת שימוש בלינק שונה במסגרת ה-API, כפי שמתואר כאן

  4. שמוליק
    11 יולי, 2016 מתוך 17:05 | #6

    הי,
    ברצוני למשוך נתוני אג"ח מסוים לדוג: אגח ג' של אלקטרה שמספרו 7390131 מאתר של ביזפורטל
    http://www.bizportal.co.il/bonds/quote/bondsdata/7390131

    כפי שניתן לראות הכתובת הינה גנרית כאשר רק המספר בסוף משתנה בהתאם למספר ני"ע של האג"ח.
    הנתונים שהייתי רוצה למשוך מהדף הם מח"מ, שיעור ריבית, ברוטו להחזקה וכד'

    אשמח לשמוע דעתך

    בתודה מראש.

    • admin
      12 יולי, 2016 מתוך 21:48 | #7

      שלום
      קיימים כלים ייעודיים למשיכת מידע מסוג זה (חלקם בתשלום).
      אתה יכול לנסות שיטה אחרת: נתונים -> יבוא מ-WEB

      בהצלחה.

  5. ויקי
    16 ינואר, 2018 מתוך 23:07 | #8

    שלום
    ניסתי להשתמש בנוסחה הזאת, אבל משום מה אני מקבל שגיאה value האם ידוע למה?

  6. 6 ספטמבר, 2019 מתוך 16:34 | #9

    היי אני מנסה לעשות את זה בגוגל דרייב וזה לא נותן לי לעשות ALT+F11
    איך עושים את זה בדרייב?

    תודה

  1. אין הפניות עדיין.