Провайдеры типа F#

Я хочу создать последовательность "свечей" (простая структура) для тестирования финансовых данных. Я скачал некоторые финансовые данные от брокера, и они в формате CSV.

У меня есть следующий код, используя тип провайдеров:

type DukasCandles = CsvProvider<"C:\Users\**\Documents\Visual Studio 2017\Projects\FI\FI\Data\schema.csv" > 

let row2Candle (myTicker: string )  (mySide: Side)  (aRow:DukasCandles.Row)  : Candle = 
    {Open = aRow.Open ; 
     Close = aRow.Close;  
     Low = aRow.Low
     High = aRow.High
     StartTime  = aRow.LocalTime    
     Volume = aRow.Volume  
     Ticker = myTicker
     Side = mySide } 

let  sortedCandles aTicker aParsedFile  = 
    aParsedFile 
    |> Seq.map   ( row2Candle aTicker Side.Bid  ) 
    |> Seq.sortBy ( fun candle -> candle.StartTime)  

let fileContent = inputFile |> DukasCandles.Load 
let rows = fileContent.Rows
let dataContent = rows|> (sortedCandles "EUR_USD")  

Это просто игрушечный пример для проверки моего понимания поставщиков типов. У меня это есть в скрипте FSX после необходимого шаблона для объявления имени файла и открытия необходимых модулей.

Теперь вопрос: если я выделю это как есть и попробую выполнить в F# интерактив, то наберу

dataContent;;

Я получаю следующее сообщение

val it : seq<Candle> =


 Error: Couldn't parse row 1057 according to schema: Expecting DateTime in LocalTime, got 13.01.2016 00:00:00.000

Странно следующее: предположим, я набираю следующий код в F# интерактив:

fileContent;;

получить ответ и затем обратиться к нему через ключевое слово it, как в:

it.Rows |> sortedCandles "EUR_USD";;

Затем код выполняется без проблем.

Почему у нас такое противоречивое поведение? Любая идея? Любая помощь высоко ценится. Спасибо.

0 ответов

Другие вопросы по тегам