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
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) )
|
|
|