Проблема перевода dll на lua 5.3 x64 vs15 (уже всё попробовал)
C2664 «void luaL_setfuncs(lua_State *,const luaL_Reg *,int)»: невозможно преобразовать аргумент 2 из «luaL_reg []» в «const luaL_Reg *»
static struct luaL_reg ls_lib[] = {
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================// static struct luaL_reg ls_lib[] = { { "TestFunc", forLua_TestFunc }, // из скрипта Lua эту функцию можно будет вызывать так: QluaCSharpConnector.TestFunc(); здесь можно указать любое другое название { NULL, NULL } }; //=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================// //extern "C" LUALIB_API int luaopen_connector(lua_State *L) { // luaL_openlibs(L, "connector", ls_lib, 0); // return 0; //} extern "C" LUALIB_API int luaopen_connector(lua_State *L) { lua_newtable(L); luaL_setfuncs(L, ls_lib, 0); lua_pushvalue(L, -1); lua_setglobal(L, "connector"); return 0; }
ЛУА — программирование
Добрый день, уважаемые коллеги!
Не знаю снесут ли данный топик или же пройдет по правилам.
Суть такая, что я полтора года программирую разных роботов в ЛУА, а еще имею косяк в недокапитализации счета и посему, учитывая, что живу исключительно с рынка уже почти два года, приходится встать на путь недалекий от околорынка :) Каюсь, но недостаток средств на счету, а точнее даже то, что расходы перекрывают доходы от торговли, все это стало причиной поиска сотрудничества и предложения создать робота под квик на заказ. Когда начинал торговать, то вход на всю котлету и пересиживание убытков по началу как-то вывозило. Но когда дошел до системного трейдинга с соблюдением рисков и ММ доходность упала, правда и нервы стали целее.
Вдруг кому интересно что-то заполучить в виде скрипта луа, или индикатора какого. Сразу оговорюсь, до сего момента на заказ ничего не писал, расценок не знаю, но, полагаю, с заинтересованным человеком договоримся.
Буду рад обратной связи и всякого рода помидорного закидывания :)
С уважением, Виталий.
Авто-репост. Читать в блоге >>>
76 PREVLEGALCLOSEPR NUMERIC Цена закрытия предыдущего дня
Vitaliy, данная задача решается следующим образом (даю алгоритм варианта готовой отработки автороллирования):
1. Задается функция определения экспирируемого инструмента и нового (целевого) инструмента с ближайшей(например) датой следующей экспирации по, например, маске: «SR» — маска фьючей Сбера.
Использовал штатные функции QLUA getClassSecurities(ClassCode),
getParamEx(ClassCode,sec_code,«MAT_DATE»).param_image
2. Задается функция определения самого момента роллирования с использованием getParamEx(ClassCode,sec_code,«MAT_DATE»).param_image
3. Задается функция расчета параметров двух транзакций: одной — закрытие текущей позиции по экспирируемому инструменту; второй — открытие новой позиции по целевому инструменту.
4. Формируются таблицы транзакций с обособленными кодами id транзакций для автоматического контроля и сопровождения ордеров.
5. Отправка транзакций по моменту времени (функция 2) и инструменту (функция 1).
Всем привет. В своих прошлых постах я писал, что увлекся анализом обезличенных сделок.
Вот что описывал:
https://smart-lab.ru/blog/583818.php
https://smart-lab.ru/blog/584792.php
В комментариях и личных сообщениях меня активно просили разработать аналог «Прилипалы» для Квика (Quik). Ну не прошло и полгода, как сделал. Забрать можно вот отсюда:
https://кбс.онлайн/soft.html
На странице есть бесплатная версия, полностью аналогичная таблице в Excel, пользуйтесь на здоровье.
Но… ну или как говорил Джобс «Ах да, забыл сказать… » — в своих поисках я ушел дальше, а именно:
1) Реализовал индикацию изменения скорости сделок. Как сделал и зачем? Как: считаю каждую минут число сделок, через минуту с момента запуска скрипта начинаю делить общее число сделок на количество прошедших минут. Так получаем среднюю скорость. Чем больше прошло времени, тем объективнее средняя скорость. Ну а резкое изменение скорости фиксируется когда текущая скорость вдвое выше средней. Зачем: на момент осуществления больших сделок резко вырастает скорость. Почему? Представьте «боковое» движение: цена меняется не сильно, кто-то «немного» покупает, кто-то продает. И тут приходят «ребята с большими деньгами» и выкупают большой объем акций, тем самым закрывая большой объем выставленных заявок. Поэтому и скорость резко увеличивается.
2) Подгружаю весь архив обезличенных сделок с начала торгового дня. Предидущая версия Прилипалы (та которая в Excel-е) — работала в режиме реального времени.
3) Начал экспериментировать с Телеграммом — создал канал kbs.online (
<code class="rainbow" data-language="lua"> while stopped == false do Quotes_1 = getQuoteLevel2("SPBFUT", "SRU0") Bid_Count_1 = tonumber(Quotes_1.bid_count) if Bid_Count_1>1 then aa= tonumber(Quotes_1.bid[Bid_Count_1].quantity) SetCell(Table, 1, 1, tostring(aa)) end local asset = getFuturesHolding("SPBFUT", "SPBFUT****","SRU0",0).totalnet repeat if aa>1 and asset>0 then local ID_B_Order=10 local OrderSell = { ["ACTION"]="NEW_ORDER", ["ACCOUNT"]= "SPBFUT****", ["OPERATION"] = "S", ["CLASSCODE"]="SPBFUT", ["SECCODE"] = "SRU0", ["PRICE"] = "0", ["QUANTITY"] = tostring(1), ["TRANS_ID"] = tostring(ID_B_Order), ["TYPE"] = "M", } local Err_Order = sendTransaction(OrderSell) message(Err_Order) end asset=asset-1 sleep(1000) until asset==5<br />end</code>
local SecCode = «LKU0»
local Quantity=1
function main()
while stopped == false do
local Quotes = getQuoteLevel2(«SPBFUT», SecCode)
local Offer_Price = tonumber(Quotes.offer[1].price)
local Offer_Vol = tonumber(Quotes.offer[1].quantity)
--отправка формы заявки
local LimitOrderBuy = { ххххх}
--условие входа в лонг
if Offer_Vol>10 then
message(Order)
local Order = sendTransaction(LimitOrderBuy)
end
sleep (200)
end
Смысл его такой: если количество лукойла в первой строке стакана больше 10, то покупается 1 бумага и работа скрипта завершается.
Так как скрипт срабатывает при определенном условии, то для перезапуска используется while stopped == false do и sleep (200).
Прикол в том, что при наступлении условия, скрипт начинает бомбить заявки по 1 шт пока не кончаются деньги (виртуальные).