Возник у меня вопрос. Пишу я робота, написал робота, все красиво — хочу, к примеру, его продать, либо же хочу просто не заморачиваться более влезанием в код или еще что — не суть. Вот у меня в роботе прописан код инструмента. Можно ли как-то сделать так, чтобы при смене инструмента после экспирации робот автоматически стал использовать новый код? Может через идентификатор, который вешается на график или еще как.
С индикаторами все просто — там берем getDataSourceInfo и готово. А вот именно со скриптом как быть? Дергать эту информацию из какого-либо индикатора и передвать ее в скрипт тоже не особо красивое решение задачи.
Paulmarko, я еще думал сделать csv с параметрами всеми и чтобы робот уже оттуда тянул, что ему надо. Тогда, кстати, можно и без графика и идентификатора CreateDataSource сделать
Кода фьючерсов стандартизованы.
Принципиальных сложностей менять их с течением времени нет.
Например, можно реализовать перебор кодов. На котором торгуется самый большой объем за некоторый период — тот и есть текущий.
Можно придумать что-то поинтересней.
Иначе говоря, задача решаема, вопрос только насколько это нужно.
Можно просто файл с параметрами использовать и ставить там все что требует изменений в процессе эксплуатации.
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% интрадей.
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))
--]]
ЦБ РФ вновь ожидаемо понизил ключевую ставку на полпроцента, до 14,5%: какие перспективы есть у долгового рынка?
Совет директоров ЦБ РФ 24 апреля понизил ключевую ставку (КС – далее) на 50 б. п., до 14,50% годовых. Это уже стало восьмым действием регулятора с момента начала цикла смягчения ДКП с июня 2025 г....
Конференция уже началась, и команда МГКЛ работает на площадке.
В 11:00 в зале №6 наше выступление — обзательно приходите послушать.
И да, мы подготовили сюрприз для участников конференции....
⚡️ Генеральный директор ПАО «СТГ» Анна Калугина выступила на форуме ПСБ «Просто капитал»
Анна приняла участие в сессии, где обсуждали важные для технологичного бизнеса вопросы информационной безопасности, их особенности и эффективность при решении бизнес-задач. Должна ли...
Обновляем стратегию 2026: год трудный, что изменилось, и в каком направлении мы движемся?
Квартальное обновление стратегии. Стратегия Mozgovik была представлена 17 января: https://smart-lab.ru/mobile/topic/1254157/ Что остается в силе? 📉Российский рынок акций = для оптимистов...
в догонку, каким было мое видение ФСК Россети в конце 2023г. и что реально произошло..
продал я ее тогда в районе 12,5к. и где она сейчас…
==========================
Почему некоторые Инвесткомп...
vvs1941,
Можно ли отличить природный алмаз от искусственного, рассказал геммолог Казанского федерального университета. Доцент кафедры минералогии и литологии Института геологии и нефтегазовых...
По смарт Лабу акций в обращение 50.2 мл.СД рекомендовал дивы 8021666684 получается почти 160р на акцию, откуда 172р? Или тот выкуп по средней цене 1256р до сих пор не вычли, не понятно
ИМ, согласен… но с поправкой диверсификацию портфеля. Он конечно у каждого свой… Тот % процент не скажет об абсолюте в денежном эквиваленте. Как смог подкупил действуя железным правилам. У меня пок...
Интересно, только в нашей стране не могут извлечь прибыль нормальную из роста цен на продукцию или весь мир полон такими эффективными менеджерами? Или у нас в стране не в коем случае нельзя работать н...
Вопрос: К чему может привести сокращение предложений услуг и товаров из-за закрытия бизнеса в стране, введения заградительных пошлин и сборов на импорт, а так же удержание высокой ключевой ставки (свы...
Купон до 20,75% и рейтинг ВВВ-: что не так с новым выпуском АйДи Коллект
ООО ПКО «АйДи Коллект» — коллекторское агентство, осуществляющее деятельность с 2017 года. Компания является частью фи...
Можно заюзать файл с настройками робота и от туда подгружать.
Вот вроде пример нормальный https://quikluacsharp.ru/quik-qlua/sohranenie-parametrov-skripta-qlua-lua-mezhdu-zapuskami/
Файл создавать при старте, если его нет.
Принципиальных сложностей менять их с течением времени нет.
Например, можно реализовать перебор кодов. На котором торгуется самый большой объем за некоторый период — тот и есть текущий.
Можно придумать что-то поинтересней.
Иначе говоря, задача решаема, вопрос только насколько это нужно.
Можно просто файл с параметрами использовать и ставить там все что требует изменений в процессе эксплуатации.
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% интрадей.
--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))
--]]