A collection of implementations for managing a simple security portfolio centered around SICP 6.001.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

49 lines
1.6 KiB

#!/bin/env gxi
(import :std/net/request
:std/format
:std/xml
:std/text/json)
#| Yahoo Finance Headers
headers: '( ("x-rapidapi-host" . "apidojo-yahoo-finance-v1.p.rapidapi.com")
("x-rapidapi-key" . "98c32048f8mshe6f4d8a686ddce9p18cc5ajsn8b8888e7e256") )
|#
; Declare the file from which we'll load our stockminder configuration
; Things like stock symbols, favourite functions, timing preferences, etc.
(define-values
(stockminder-config stocklist output-file)
(values
(open-input-file "stocklist.conf")
; Initialize our stocklist so we can throw stuff in there after we parse
; the config file.
`()
(open-output-file "test.out") ) )
; The procedure we'll use to iterate through config values and add symbols
; to our stocklist
(define read-config (lambda (config-file)
(let read-loop ((config-chomp (read config-file)))
(if (eof-object? config-chomp)
(close-input-port config-file)
(and (set! stocklist (append stocklist `(,config-chomp)))
(read-loop (read config-file)) ) ) ) ))
; Now the business end; parse the config file
(read-config stockminder-config)
(define-values
(api-function api-url api-key)
(values
"TIME_SERIES_DAILY"
"https://www.alphavantage.co/"
"EC4C0NRKZAK1Q2UG" ) )
(let
((stock-symbols stocklist))
(map (lambda (x) (display (string-append
api-url "query?function=" api-function "&symbol=" (symbol->string x) "&apikey=" api-key "\n")))
stock-symbols ) )
(let
((test-input-file (open-input-file "test.json"))
(foo "bar") )
(write-json (read-json test-input-file))
(close-input-port test-input-file) )