Я использую Национальную фондовую биржу (Индия) EOD Данные для личных инвестиций решений. Я загружаю ежедневный файл цитаты конца дня с помощью программного обеспечения Utility NSE EOD Data Downloader v3.0. Загруженный файл представляет собой текст формата CSV и содержит даты в виде текстовой строки. Этот файл имеет переменную длину в зависимости от активных котировок в определенный день. Я обрабатываю загруженный файл через файл с поддержкой макроса excel с целью преобразования текстовой строки даты в формат даты и преобразования его в подходящий формат для обработки в базе данных доступа для инвестиционных решений на основе таких параметров, как скользящие средние, High Low Max и Средние значения средних значений и т. д. и вводятся в программу торговцев Amibroker. Ниже описан метод .Фондовые биржи EOD Проблемы с программой преобразования данных
I was facing some difficulty in up-loading the files . Hence providing a drop box link to the following files samples in "EOD_Data,zip"
Sample EOD_Data.txt "EQ_03AUG2015.txt"
Sample of EOD_Formatting.xlsm
Sample file dly_nsedly_conversion.xlsx
Sample of EOD_Converted.xlsx
[EOD_Data,zip]
<https://www.dropbox.com/sh/256mvvcnj6fhu20/AAD7nZpTHBuHfCpMNznr93PDa?dl=0>
1.) Excel Macro включен файл «EOD_Formatting» открыта, содержащая кнопку команда связана с макро open_text_file
-
Файл
- EOD данных, полученных на ежедневной основе, такие как „EQ_03AUG2015.txt“ сохраняется в с :.. \ MYDIR \ EOD_Data открыт
- Excel с поддержкой макросов файл EOD_Formatting.xlsm и инициирует следующие шаги
а) Открывает Input-Box для ввода имени файла л ike «EQ_03AUG2015.txt», который будет меняться ежедневно. Путь может быть изменен пользователем в соответствии с его каталогом для хранения таких файлов. Этот файл открывается и содержимое копируется.
b) Чтобы не мешать макрокоманду, он открывает еще один файл «dly_nsedly_conversion.xlsx». Сначала содержимое текстового файла, скопированного на предыдущем шаге, вставлено в Sheet3, начиная с Cell A1. Во-вторых, он удаляет предыдущий контент на листе «NSE_DLY_RAW», иначе могут быть повторяющиеся строки. Диапазон до H2000 выбран потому, что общий файл цен Национальной фондовой биржи содержит менее 2000 котировок. Затем он перемещается на лист 3 и определяет диапазон заполненных ячеек и перемещается на лист «NSE_DLY_RAW», чтобы вставить выбранный диапазон, начиная с ячейки A2, чтобы строка заголовка не была нарушена. Также столбец даты преобразуется из формата текстовой строки в дату.
c) Преобразованный файл в формате .xlsx сохраняется в папке mydir \ EOD_Converted_Date как файл EOD_Converted.xlsx, который может быть непосредственно импортирован в базу данных Access и через Access, экспортированный как файл csv для ввода в программу Amibroker Trader. Код EOD_Formatting.xlsm добавляется ниже.
Public Fname As String
Public Sub open_text_file()
Dim wb1 As Excel.Workbook
Dim wb2 As Excel.Workbook
Dim filepath As String
Dim r As Range, i As Long
'path of the file whcih contains the file as
'received 'from 'software utility NSE EOD Data Downloader v3.0
filepath = "C:\mydir\EOD_Data\"
'Input filename like "EQ_04AUG2015.txt" to be processed by excel
'macro file
On Error Resume Next
fname = Application.InputBox("Enter the Filename", Type:=2)
On Error GoTo 0
Workbooks.OpenText Filename:=filepath & fname, _
StartRow:=1, DataType:=xlDelimited, Comma:=True
Cells.Select
Selection.Copy
'File no. of quotes vary daily. Further processing to transform
'date string from text to date format and variable length files
Set wb2 = Workbooks.Open("C:\mydir\dly_nsedly_conversion.xlsx")
Sheets("Sheet3").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("NSE_DLY_RAW").Select
'It is desired to clear previous content otherwise there can be
'duplicate rows. H2000 chosen because general Price file _
' of National Stock Exchange contains less than 2000 quotes
ActiveSheet.Range("A2:H2000").Select
Selection.ClearContents
Sheets("Sheet3").Select
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Set rng1 = Cells.Find("*", [A1], , , xlByRows, xlPrevious)
Set rng2 = Cells.Find("*", [A1], , , xlByColumns, xlPrevious)
If Not rng1 Is Nothing Then
Set rng3 = Range([A1], Cells(rng1.Row, rng2.Column))
Range([A1], Cells(rng1.Row, rng2.Column)).Select
Selection.Copy
End If
Sheets("NSE_DLY_RAW").Select
Range("A2").Select
ActiveSheet.Paste
LR = Cells(rows.Count, "B").End(xlUp).Row
Range("B2:B" & LR).Select
Dim c As Range
For Each c In Selection.Cells
c.value = DataSerial(Left(c.Value,4), Mid(c.Value, 5,2), Right_
(c.Value,2))
'Following line added only to enforce the format.
c.NumberFormat = "dd/mm/yyyy"
Next
' EOD_Converted File is suitable for input to Access Data base
' and Amibroker with minor working
ActiveWorkbook.SaveAs Filename:= _
"C:\mydir\EOD_Converted_Data\EOD_Converted.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Workbooks.Close
End Sub
Хотя эта программа работает для меня, я все еще работаю над следующими проблемами. a). Если полученные данные меньше 1500 котировок, тогда пустые строки остаются после окончания диапазона заполнения данных. Эти пустые строки затрудняют выбор символа безопасности как ключевого поля в Access 2007, поскольку он не позволяет дублировать значения или пустые поля в ключевом поле. b) Я хочу, чтобы преобразованный выходной файл принимал имя файла из имени файла, введенного в поле ввода, а не из общего имени файла. Я на начальном уровне в Excel VBA. Я был бы признателен за любую помощь, чтобы сделать эту программу более профессиональной и удобной для пользователя и направляя меня с некоторыми подсказками для решения упомянутых выше проблем. Эта программа полезна для среднего не технического инвестора. Спасибо.
PS: Internet connection has started working normally in our area now. As
'such uploading pictures of sample files.
В промежуточный период внесено много изменений, и я отвечу на мой ответ, принимая к сведению ваши комментарии, но может быть, пару дней. – skkakkar