我在F#中创建了一个函数来从Yahoo恢复历史数据(F#的经典异步示例):
let getCSV ticker dStart dEnd =
async {
let query = getFileUrl ticker dStart dEnd
let req = WebRequest.Create(query)
use! resp = req.AsyncGetResponse()
use stream= resp.GetResponseStream()
use reader = new StreamReader(stream)
let content = reader.ReadToEnd()
let ts = parseData content
return ts
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以通过执行以下操作异步运行此函数:
let test=
["MSFT";"YHOO"]
|>List.map (fun x -> getCSV x (DateTime.Parse("01.01.2000")) (DateTime.Parse("01.01.2010")))
|> Async.Parallel
|> Async.RunSynchronously
Run Code Online (Sandbox Code Playgroud)
好,这很酷.
现在,我想知道的是如何应用一些功能,这是价格的历史:
例如:
let getReturns (prices:(DateTime *float)list) =
[for i in 1..(prices.Length-1) -> i]
|> List.map (fun i ->(fst (List.nth …Run Code Online (Sandbox Code Playgroud)