Блог им. 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
835 | ★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:
Фото
Каждый инвестор желает знать, где сидит доходность? Взгляд Goldman Sachs на инвестиции до конца года
Если вы инвестируете свой капитал на фондовом рынке, то каждый год легко может принести вам как большие потери, так и несметные богатства....
Облигации на пальцах: как устроен главный инструмент инвестора
Если у вас все еще нет облигаций в портфеле — вы либо неверно инвестируете, либо не совсем понимаете, зачем они нужны и по какому принципу...
Фото
💡 ГК «Мать и дитя»: тренд на долгосрочный рост
🔹 Группа компаний «Мать и дитя» — качественная идея в несырьевом секторе российского рынка. По мнению начальника управления торговых операций ВТБ...
Фото
Башнефть: есть шанс на переоценку, но нужно запастись терпением. Прогноз сошелся с фактом в высокой точностью, ищем инвест идею
Башнефть отчиталась по МСФО за 2025 год — внимание, квартальных отчетов в прошлом году не было вообще! Традицицинно сравниваем прогноз...

теги блога Rostislav Kudryashov

....все тэги



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