Блог им. Roggy

LUA - код инструмента - вопрос

    • 19 августа 2020, 21:25
    • |
    • Vitaliy
  • Еще
Доброго дня, уважаемые коллеги! 

Возник у меня вопрос. Пишу я робота, написал робота, все красиво — хочу, к примеру, его продать, либо же хочу просто не заморачиваться более влезанием в код или еще что — не суть. Вот у меня в роботе прописан код инструмента. Можно ли как-то сделать так, чтобы при смене инструмента после экспирации робот автоматически стал использовать новый код? Может через идентификатор, который вешается на график или еще как. 

С индикаторами все просто — там берем getDataSourceInfo и готово. А вот именно со скриптом как быть? Дергать эту информацию из какого-либо индикатора и передвать ее в скрипт тоже не особо красивое решение задачи.

Буду рад, если есть идеи.

С уважением, Виталий.
  • обсудить на форуме:
  • Quik Lua
749 | ★1
9 комментариев

Можно заюзать файл с настройками робота и от туда подгружать.

Вот вроде пример нормальный https://quikluacsharp.ru/quik-qlua/sohranenie-parametrov-skripta-qlua-lua-mezhdu-zapuskami/

avatar
Андрей К, вот одна из мыслей у меня была про файл, да
avatar
Настройки, туда можно и поместить все за 2020 год и выбирать от даты.
Файл создавать при старте, если его нет.
avatar
Paulmarko, я еще думал сделать csv с параметрами всеми и чтобы робот уже оттуда тянул, что ему надо. Тогда, кстати, можно и без графика и идентификатора CreateDataSource сделать
avatar
Кода фьючерсов стандартизованы.
Принципиальных сложностей менять их с течением времени нет.
Например, можно реализовать перебор кодов. На котором торгуется самый большой объем за некоторый период — тот и есть текущий.
Можно придумать что-то поинтересней.
Иначе говоря, задача решаема, вопрос только насколько это нужно.
Можно просто файл с параметрами использовать и ставить там все что требует изменений в процессе эксплуатации.
avatar
kachanov, вот с файлом, видимо, наиболее корректный вариант. Заодно и другие параметры редактировать можно будет
avatar
Vitaliy, я формулу в код зашил, мне так проще

if Tdata>1217 or Tdata<=317 then return ss..«H»..Ys end
if Tdata>317 and Tdata<=617 then return ss..«M»..Ys end
if Tdata>617 and Tdata<=917 then return ss..«U»..Ys end
if Tdata>917 and Tdata<=1217 then return ss..«Z»..Ys end

но это для индикаторов и для квартальных фьючерсов. 
Для месячных строчек будет 12.
А если торгующий скрипт, то на смене контракта надо корректно закрыть старый и открыть новый, если это не 100% интрадей.

avatar
Vkt, думал о подобном подходе, спасибо. Все же склоняюсь к файлу с настройками
avatar
Vitaliy, вот такой способ будет получше, чем затея с файлами, https://quik2dde.ru/viewtopic.php?id=306

--sh_intervalEx.lua
package.cpath=package.cpath..";"..getWorkingFolder().."/scripts/?.dll"
local sh = require'lua_share'

Settings ={}
Settings.Name = "*sh_intervalEx"
local strInt = {
[0] = «tick»,
[1] = «M1»,
[2] = «M2»,
[3] = «M3»,
[4] = «M4»,
[5] = «M5»,
[6] = «M6»,
[10] = «M10»,
[15] = «M15»,
[20] = «M20»,
[30] = «M30»,
[60] = «M60»,
[120] = «H2»,
[240] = «H4»,
[-1] = «D»,
[-2] = «W»,
[-3] = «MN»,
}

function Init()
return 1
end
local last_index
local ns
function OnCalculate(index)
if index == 1 then
last_index = Size()
local info = getDataSourceInfo()
local ticker= tostring(info.sec_code)
local short_base = ticker:sub(1,2) — например, «Si»
---------------------------------------
ns = sh.GetNameSpace(short_base)
ns.market = tostring(info.class_code)
ns.ticker = ticker
ns.interval= strInt[info.interval]
ns.bar_px = os.time(T(last_index))
— message(«tm »..tostring(os.date("%H:%M:%S", ns.bar_px)),2)
— message(tostring(info.sec_code).." interval= "..tostring(ns.interval))
end
if index > last_index then
last_index = index
ns.bar_px = os.time(T(index)) --время последнего бара всегда известно
end
end
--[[
в скрипте:
package.cpath=package.cpath..";"..getWorkingFolder().."/scripts/?.dll"
local sh = require'lua_share'
local ns = sh.GetNameSpace(«Si»)
message(«tm »..tostring(os.date("%H:%M:%S", ns.bar_px)),2)
message(tostring(info.sec_code).." interval= "..tostring(ns.interval))
--]]


Читайте на SMART-LAB:
Фото
Долгосрочное инвестирование умерло. В этот раз - без "но". Хороших новостей не будет
Увеличение капитала посредством инвестирования в доли компаний всегда основывалось на двух тезисах (1) компания сможет на длительном...
Фото
Как на самом деле используют ИИ в алготрейдинге
Если первая часть моего репортажа по конференции алготрейдеров в Москве была об инфраструктуре, то вторая часть будет про искусственный...
«Профи» из группы Займер окупил первый приобретенный портфель
Делимся новостями коллекторского агентства из группы Займер. КА «Профи» вышло на точку окупаемости по первому приобретенному портфелю. ⚡️ Для...
Фото
Ростелеком. МСФО за Q4 2025г. Всё неплохо… но всё равно печально…
Компания Ростелеком опубликовала финансовые результаты за 4 квартал 2025г.: 👉Выручка — 270,5 млрд руб. (+15,6% г/г) 👉Операционные...

теги блога Vitaliy

....все тэги



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