function OnCalculate(index) return Size(), index endА вот результат:
--require "w32" -- говорят что нужна, на практике не увидел require "luacom" local isrun = true function OnStop(flag) isrun = false end function main() --w32.CoInitialize(nil) ML = luacom.CreateObject("matlab.application.single") assert(ML) ML.Visible = 1 -- не обязательно там все равно ничего в принципе не видно, но проще убить процесс если что t = tos(0) message("tos = " .. tostring(#t)) -- меньше 150 тк фильтр по "SPBFUT" ML:PutWorkspaceData("C1", "base", t); -- отправляем в МЛ под именем С1 message("Put") wd = ML:GetWorkspaceData('C1', 'base') -- а вот так получаем обратно message("C1(1,1) = " .. tostring(wd[1][1])) ML:Execute("r = TST;") -- в МЛ у меня эта функция пишет данные в файл и возвращает "1", если все гладко r = ML:GetWorkspaceData('r', 'base') -- на прямую результат возвращает криво, так наверно удобнее message("Execute TST = " .. tostring®) ML:Quit() ML = nil --w32.CoUninitialize(nil) message("end COM ML") end function tos(n) -- читает ТОС в матрицу начиная с "n" local outcell = {} local cnt = 0 nn = getNumberOf("all_trades") for i = n, 150 do -- для примера хватит 150 строчек, но максимум 1500 * 5 -- приходится ограничить - у LuaVM случается грыжа при передаче в МЛ более чем 2000*5 trade = getItem("all_trades", i) cc = trade["class_code"] if cc == "SPBFUT" then cnt = cnt + 1 dt = trade["datetime"] dt = dt.hour*10000 + dt.min*100 + dt.sec outcell[cnt] = {trade.trade_num, trade.sec_code, trade.qty, trade.price, dt} end end return outcell end
Часто требуется построить какой-то график, реализующий какое-то математическое действие с другими графиками, уже построенными в терминале. В самом простом варианте это может быть разница между двумя графиками — спред. Или среднее значение между двумя графиками. Или процентное соотношение между ними. Или все что угодно иное.
Несколько раз мне заказывали создание таких индикаторов, каждый раз с новой формулой. Каждый раз приходилось либо писать новый индикатор для терминала либо создавать формулу для программы технического анализа. Я решил, что имеет смысл написать для этой цели универсальный инструмент. Знакомьтесь: Juggler.
Итак, имеем в качестве входящей информации:
Каждую неделю я радовал бесплатными скриптами и индикаторами, ииии, конечно, я продолжу это делать и дальше :)
Наиболее популярным скриптом, который меня просили сделать это был автостоп и выход лесенкой, и я решил совместить две эти штуки в одну. Внутри скрипта вы сами выбираете ставить стоп и тейк, или закрытие позиции лесенкой.
Ну и небольшое лирическое отступление. Теперь скрипты и индикаторы, которые я выкладывал в свою группу, будут не только для Quik'а, но также и для MetaTrader.
Всем привет) Сегодня понедельник, а значит и время для очередного бесплатного индикатора по просьбам участников моего сообщества) На этот раз мне предложили сделать что-то вроде сбора статистики по ATR, объему, ну в общем прикладываю скрин просьбы.
Кстати говоря, уже очень скоро я завершу разработку скриптов: закрытие лесенкой и автостоп :) Вступайте в группу чтобы ничего не пропустить
Теперь вернемся к нашим барашкам, а точнее к скрипту, который мне предложили сделать, Я это реализовал в таблице: