2015-08-07 4 views
0

Я использую Национальную фондовую биржу (Индия) 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

    Файл
  1. EOD данных, полученных на ежедневной основе, такие как „EQ_03AUG2015.txt“ сохраняется в с :.. \ MYDIR \ EOD_Data открыт
  2. 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. 

EOD_Converted.xlsx

EOD_Formatting.xlsmenter image description here

dly_nsedly_conversion.xlsx

EQ_03AUG2015.txt

ответ

0

Это кажется немного слишком сложным для меня. Подумайте, используя R для обработки исходного CSV-файла, сохраните преобразованные данные непосредственно в базу данных Access или лучше всего через библиотеку RODBC, а затем получите доступ к данным напрямую через плагины ODBC в AmiBroker.

+0

В промежуточный период внесено много изменений, и я отвечу на мой ответ, принимая к сведению ваши комментарии, но может быть, пару дней. – skkakkar

 Смежные вопросы

  • Нет связанных вопросов^_^