Блог им. kurd

Алготрейдинг. Скрипт Lua для выгрузки истории котировок из Quik'а

Сайт finam.ru и mfd.ru перестали быть полезными для выгрузки истории котировок.
Это скрипт
-- График должен быть открыт в Quik'е
Class = "SPBFUT" -- "CETS_MTL" "CETS"
SecId="BRK4" -- "NGJ4" "GLDRUB_TOM" "USD000UTSTOM" "SiZ3"
Intrvl = INTERVAL_H1 -- D1 -- M5
Header = "<TICKER>;<PER>;<DATE>;<TIME>;"..
  "<OPEN>;<HIGH>;<LOW>;<CLOSE>;<VOL>"
Period = "60" -- Дневки - 0, W1, MN1, H4, H2 - недопустимо

function Log (i)
  local t = DS:T(i)
  local ymd = string.format ("%04d%02d%02d", t.year, t.month, t.day)
  local hms = string.format ("%02d%02d%02d", t.hour, t.min, t.sec);
  if not (IniDt <= ymd and ymd <= FinDt) or
     not (IniTm <= hms and hms <= FinTm) then return end
  local str = string.format ("%s;%s;%s;%s;%.4f;%.4f;%.4f;%.4f;%.0f\n"
    ,SecId, Period, ymd, hms
    ,DS:O(i), DS:H(i), DS:L(i), DS:C(i), DS:V(i))
  F:write (str)
end -- Log()

function OnInit (scriptPath)
  qu = require ("QuikUtil(qu)") -- lu,qc,tu
  ScriptDir, ScriptName = lu. <a name="cut"></a> SplitPath (scriptPath)
  DataPath = ScriptDir .. ScriptName .. ".dat"
  message (DataPath)
end -- OnInit()

function main ()
  os.execute ("notepad.exe ".. DataPath)
  dofile (DataPath) -- Class, SecId, Frame, IniDt, FinDt
  Intrvl = qu.FrameToInterval (Frame)
  Period = Frame == "D1" and 0 or Intrvl
  DS, err = CreateDataSource (Class, SecId, Intrvl)
  if not DS or DS:Size() == 0 then
    error ("No DS\n".. tostring(err))
  end
  local t0 = DS:T(1); local k = DS:Size(); local t1 = DS:T(k)
  local iniDt=string.format("%04d%02d%02d",t0.year,t0.month,t0.day)
  local finDt=string.format("%04d%02d%02d",t1.year,t1.month,t1.day)
  if iniDt > IniDt or finDt < FinDt then
    error ("Короткая история ".. iniDt .."-".. finDt)
  end
  LogPath = ScriptDir .. SecId .."_".. Frame
    .."_".. IniDt .."_".. FinDt ..".csv"
  message (
        "Class ".. tostring(Class)
    .."\nSecId ".. tostring(SecId)
    .."\nFrame ".. tostring(Frame)
    .."\nIntrvl ".. tostring(Intrvl)
    .."\nLogPath ".. LogPath
    .."\nPeriod ".. Period
    .."\nIniDt ".. IniDt
    .."\nFinDt ".. FinDt)
  if Period > 240 then error ("Invalid Frame") end
  
  F = io.open (LogPath, "w")
  F:write (Header .."\n")
  for i = 1, DS:Size() do
    Log (i)
  end
  F:close()
  message (ScriptName .." OK")
end -- main()

А это его данные
Class = "SPBFUT"
SecId = "VBH5"
Frame = "H1"
IniDt = "20240912"
FinDt = "20250129"

Сделай сам!

Никак не истребить лажу С-Лабовского редактора
Лепит ScriptDir, ScriptName = lu. <a name=«cut»></a> SplitPath (scriptPath)
вместо ScriptDir, ScriptName = lu.SplitPath (scriptPath)

  • обсудить на форуме:
  • Quik Lua
792 | ★5
8 комментариев
Скачать с iss.moex.com не проще?
avatar
Ziveleos, 22:32 А как ты сравниваешь?
avatar

Rostislav Kudryashov, Сравниваю что?

 

avatar
Ziveleos, Сегодня в 23:06 А о чём ты спросил в 22:50?
avatar
А почему финам и мфд вдруг перестали быть полезными? Ну финам понятно, но мфд, хоть и задалбывает своим ddos-guard, но худо-бедно работает
avatar
Конкретный пример только что
На mfd.ru/export на интервал дат от 01.03.2024 до 30.06.2024
заказал часовики GAZR-6.24(GZM4) и GKMN-6.24(GKM4)
Получил
«GAZR_6_24_(GZM4)_1hour_01032024_30062024.txt»
— с пропуском данных между
2024.04.24-18:00 и 2024.04.27-09:00
Хотя момент экспирации
GZM4;60;20240620;180000;11483;11563;11413;11538;5667;0
отражён правильно.
Далее, получил
«GMKN_6_24_(GKM4)_1hour_01032024_30062024.txt»
— только за март между
2024.03.01-08:00 и 2024.03.29-18:00


Вот такие дела.
avatar
Из Руководства пользователя QUIK:

Сохранение данных графика в файл

Численные значения, по которым построен график, могут быть сохранены в файл. Для сохранения доступны данные по котировкам и по индикаторам. Формат файла для значений цены/объема и индикаторов различается. В файл записывается информация с такой глубиной истории, какая отображена на графике.

Способ выполнения:

  1. Выберите линию графика, данные по которому должны быть сохранены.
  2. Из контекстного меню на линии выберите пункт «Сохранить данные в файл».
  3. В открывшемся окне укажите название сохраняемого файла и выберите папку на диске для записи.

Формат файла значений цены и объема имеет вид, совместимый с форматом Equis Metastock:

 

<TICKER> <PER> <DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <VOL>
Тикер Период Дата Время Цена открытия Максимум цены Минимум цены Цена закрытия Объем

Где:

  • Тикер – «<код инструмента> [<код класса>]»

Пример файла:

<TICKER>,<PER>,<DATE>,,<TIME>,<OPEN>,,<HIGH>,<LOW>,,<CLOSE>,<VOL>
HYDR [TQBR],5,20100921,125500,2.072000,2.073500,.2068700,2.069000,29419.000000
HYDR [TQBR],5,20100921,130000,2.069000,2.071400,2.067000,2.071400,44473.000000

Формат файла для значений индикаторов:

<TICKER> <PER> <DATE> <TIME> Line 1 Line 2 Line 3 Line N
Тикер Период Дата Время Линия №1 Линия №2 Линия №3 Линия №N

Где:

  • Тикер – «<код инструмента> [<код класса>]»

Пример файла для индикатора Alligator:

<TICKER>,<PER>,<DATE>,<TIME>,<LINE_LIPS>,<LINE_JAW>,<LINE_TEETH>
HYDR [TQBR],5,20100921,133500,2.072900,2.072268,2.072268
HYDR [TQBR],5,20100921,134000,2.071000,2.072015,2.072015
avatar

Читайте на SMART-LAB:
Фото
Почему металлы могут быть хорошим решением для начинающего трейдера
Драгоценные и промышленные металлы сопровождают человечество тысячи лет. Они всегда были символом ценности, стабильности и «настоящих»...
Фото
Встречаемся на Smart-Lab & Cbonds PRO облигации 2026
Встречаемся на Smart-Lab & Cbonds PRO облигации 2026 💼 Уже в эту субботу, 28 февраля , в Москве пройдёт конференция по вопросам...
Бюджет настраивают на более низкие нефтяные доходы
Правительство обсуждает ужесточение бюджетного правила за счет снижения базовой цены на нефть, об этом сообщил Антон Силуанов. Вопрос, по его...
Фото
Ростелеком. МСФО за Q4 2025г. Всё неплохо… но всё равно печально…
Компания Ростелеком опубликовала финансовые результаты за 4 квартал 2025г.: 👉Выручка — 270,5 млрд руб. (+15,6% г/г) 👉Операционные...

теги блога Rostislav Kudryashov

....все тэги



UPDONW
Новый дизайн