Просьба к разработчикам: добавить в LUA функции для определения вкладок в QUIK Это нужно для того, чтобы одного и того же робота можно было запускать для разных инструментах, в разных вкладках. Тогда в названии вкладки можно было бы писать код инструмента.
Еще вторая просьба, дать возможность при создании окна указать название вкладки. Потому что-то если ты после запуска робота, переключился на другую вкладку, а робот при этом пересоздал окно, то оно выводится на текущую вкладку, а это не очень удобно.
Заранее спасибо!
Я решаю эту проблему так: Идентификатор вкладки пишите по имени инструмента В индикаторе делает tag по имени инструмента которое читаете в индикаторе(роботе) ------------- В итоге робот-индикатор будет автоматически настраивать на тот инструмент, в окно которого вы установите этот робот-индикатор
Спасибо большое. Теперь мне понятно, что такое сбор за адресную сделку и клиринговая комиссия, жаль что московская биржа так же ловко как вы не могут этого объяснить. Остался небольшой вопрос по сбору за регистрацию сделки. Ответьте пожалуйста ответ цифрой сколько с меня снимут сбор за регистрацию сделки при покупки 10 лотов и продаже 10 лотов на примере индекса РТС. 1) (купил 10 лотов РТС и продал эти 10 лотов через 5 мин (внутри дня)) = ? 2) (купил 10 лотов РТС и продал эти 10 лотов через 5 дней) = ?
Добавлю к предыдущему ответу. Чтобы ответить на Ваш вопрос, вам надо взять регламент брокера и там есть приложение - тарифы В этом приложении находите свой тариф и считаете. Как ранее сказал если торгуете внутри дня то тариф обычно меньше, все расчеты делаются в клиринг по сальдо всех сделок брокером. ---------------- Обращаю ваше внимание на тот факт, что на самом деле торгуете не вы, а брокер. Вы лишь даете поручение ему, а он их либо выполняет либо нет, но за ваши деньги.
написал: надо собирать 5.3 и пример я Вам дал для 5.3 и ссылку на документацию на 5.3
Собсвенно для 5.3.5 - я тоже собирал - ошибка точно такая же.
Я вам все написал как делать. Вы собираетесь делать или рассуждать? если у вас 8.7 то все должно быть 5.3 ------------------- анекдот: Мадам, там кирпич и обрыв,туда нельзя. Но Вам можно.
Создание и вызов DLL из QLua - прошу помощи
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 20:29:31
и lua 5.3 bin должна быть
Создание и вызов DLL из QLua - прошу помощи
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 20:28:28
и библиотека должна быть lua53.lib
Создание и вызов DLL из QLua - прошу помощи
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 20:27:32
надо собирать 5.3 и пример я Вам дал для 5.3 и ссылку на документацию на 5.3
гадать не видя весь код бессмысленно. Сообщение говорит, что функции нет. еще раз скажу, отлаживайте свою функцию без квик. Научитесь сначала писать dll для луа. Полагаю Вы знаете как отладить софт.
Возможен экспорт через DDE в OpenOffice Calc? (Он аналог MS Excel)
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 12:49:43
аналог - это любое решение, которое может выполнять те же функции. Open Office Calc - аналог Excel в функции создания таблиц. ---------------- В плане экспорта по DDE Open Office вообще не причем.
Возможен экспорт через DDE в OpenOffice Calc? (Он аналог MS Excel)
Вы где в документации прочитали о возможности эксопрта в OpenOffice? Причем же здесь поддержка КВИК? Они что на все придуманные Вами вопросы должны отвечать?
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 09:06:21
Цитата
nikolz написал: у вас ошибка в ---------------------- extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) { lua_newtable(L); luaL_setfuncs(L, ls_lib, 0); lua_pushvalue(L, -1); lua_setglobal(L, "lua_dll_x64_name"); return 0; }
-- для LUA5.3 надо так:
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================// luaL_Reg ls_lib[] = { {"TestFunc", forLua_TestFunc}, {NULL, NULL} };
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================// extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) { luaL_newlib(L,ls_lib); lua_setglobal(L, "lua_dll_x64_name"); return 1; }
Вы напишите, как я написал или разбирайтесь как правильно раскрыть макрос -------------- (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) и нужно ли удалять значение из стека lua_pushvalue(L, -1); -------------------- у меня один оператор, а умник наплодил три.
Комиссия брокера и московской биржи.
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 08:20:42
в качестве бесплатного совета. не заморачивайтесь подсчетами , а просто смотрите на результат торгового дня и делайте выводы --------------------
Комиссия брокера и московской биржи.
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 08:18:16
Цитата
Andrey написал: Добрый день уважаемые форумчане. Помогите пжлста разобраться какая сумма списывается со счета при совершении сделки на срочном рынке московской бирже. Звонил брокеру, сотрудники горячей линии говорят, что согласно моему тарифу комиссия брокера составляет 1р при покупке или при продаже 1 лота на фьючерсном контракте. Т.е. купил затем продал заплатил 1+1=2р. Больше никакой информации по комиссиям они дать не могут. Позвонил в московскую биржу, чтобы узнать какую комиссию снимают они. Мне сказали писать в тех поддержку. Написал в тех поддержку. Тех поддержка дала ссылку, мол читайте и разбирайтесь сами, на сайте все написано. Прошу помочь разобраться на примере фьючерса РТС (RIZ2). На сайте имеется следующая инфа:
Сбор за регистрацию сделки*, руб.
9,27
Сбор за адресную сделку*, руб.
3,09
Клиринговая комиссия за исполнение контракта*, руб.
3,09
Со сбором за регистрацию сделки всё понятно. Что такое сбор за адресную сделку и клиринговая комиссия за исполнения контракта? Хотелось бы понимать, если я купил 10 лотов на фьючерсном контракте РТС (RIZ2) и через 3 минуты продал их. Какова будет комиссия? Если я купил 10 лотов на фьючерсном контракте РТС и продал через 3 дня, то какая будет комиссия?
для Вас актуален лишь Сбор за регистрацию сделки Кроме того сбор на сделки внутри дня ниже чем на сделки результат которых переходит через клиринг. Так как внутри дня до клиринга сделки лишь фиксируются но расчета по ним нет. Это как игра в преф - внутри дня -пишем пульку а расчет в конце игры. ---------------- Сбор за адресную сделку - это когда в заявке вы укажете, что продаете Васе Пупкину, а тот укажет что покупает у Вас --------------- Клиринговая комиссия за исполнение контракта- это когда контракт закончился т е происходит экспирация, а у Вас открытый этот контракт на счете.
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
20.09.2022 08:00:12
возьмите Scite и поставьте контрольную печать и увидите где ошибки
Создает новую таблицу с размером, оптимизированным для хранения всех записей в массиве l(но фактически не сохраняет их). Оно предназначено для использования в сочетании с (см. ).
Он реализован в виде макроса. Массив lдолжен быть фактическим массивом, а не указателем на него.
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 20:03:23
ну как знаете я Вам пишу со своих работающих исходников
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 20:02:46
я использую 5.3 так как это работает для всех версий КВИК а 5.4 лишь начиная с 9.X но пока там много ошибок и там можно включить 5.3 для 5.4 не помню, возможно и так как у вас.
у него для разных версий есть посмотрите для какой вы взяли пример надо брать не ниже 5.3
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 19:50:03
у вас ошибка в ---------------------- extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) { lua_newtable(L); luaL_setfuncs(L, ls_lib, 0); lua_pushvalue(L, -1); lua_setglobal(L, "lua_dll_x64_name"); return 0; }
-- для LUA5.3 надо так:
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================// luaL_Reg ls_lib[] = { {"TestFunc", forLua_TestFunc}, {NULL, NULL} };
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================// extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) { luaL_newlib(L,ls_lib); lua_setglobal(L, "lua_dll_x64_name"); return 1; }
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 19:45:04
в редакторе используйте print и контрольную печать в СИ в SCITE будет видно все
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 19:43:40
вообще-то лучше делать все в SciTe это редактор на луа с отладциком пока вам квик не нужен напишите тест для луа
написал: Подскажите, есть ли какие ни будь условно официальные примеры, как связать С++ с Quik ? Как сделать dll ?
Все есть безусловно официально. В КВИК встроена виртуальная машина луа без каких либо изменений исходников поэтому читайте API C для lua. ------------------------- Я так пишу функции для QUIK на СИ от колбек до многопоточной обработки данных в LUA. ---------------------- QLUA - это библиотека написанная на API C. -------------------- Или в чем то другом проблема?
Не могу понять, как через dll - все это делать. Откроено говоря - это неМного геморрой. Продукту 20 лет, а нормального API почему то нет.
Вообще-то есть даже учебники о том как использовать API C ------------ как писать dll поясняю ------------------- берете любой компилятор СИ --------------- Я например последнее время для dll луа использую Pelles C Очень хороший пакет именно для СИ -------------- иногда использую MVC. ================ Далее в любимом IDE выбираете создать DLL и пишите программу на CB Функции СИ пишите как обычно для СИ А для вызова их из луа делаете обертку -------------- типа такой: -------------------- static int stop(lua_State *L) { //здесь вставляете преобразование данных луа в данные СИ QueryPerformanceCounter(&count1);
lua_pushinteger(L,(count1.QuadPart-count.QuadPart)); //это преобразование целого в формат луа и запись в стек return 1; -- это число возвращаемых параметров } Все функции API C здесь
если любите C++ то читайте это:
-------
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 15:53:45
Цитата
Alexander написал: Я не рассчитывал на то, что колбэки могут отправляться по нескольку раз. Прочитал эту тему, понял, что могут и причём неограниченное число раз. Я не заморачивался и не тестил чем конкретно отличаются пришедшие в колбэках таблицы, но вижу, что OnOrder() где order.balance == 0 - 2 раза, и OnTrade() 3 раза и слава богу цена в нём одна и та же.
Вопросы: 1) Возможен ли вызов OnTransReply() на мою поданную заявку с моим TRANS_ID, с trans_reply.trans_id == 0, nil, "0", "" или же trans_reply.trans_id всегда содержит номер заявки? Этот номер заявки измениться не может? 2) OnTransReply() вызывается только один раз? 3) Возможен ли случай, когда сначала первой будет вызов OnOrder(), а потом уже вызов OnTransReply()? Вроде бы как-то один раз такое проскочило, когда скрипт вылетел с ошибкой исполнения. Но точно не помню, возможно было и так, даже скорее всего так, что был вызов только OnTrade(), а OnTransReply() не вызвался, хотя по факту заявка выставилась. Из-за этого дублирую сохранение номера заявки не только в OnTransReply(), но и в OnOrder(). 4) Могу ли я быть уверен, что имея самый первый OnOrder() c order.balance == 0, последующие OnOrder() не изменят значение order.balance? 5) Могут ли приходить сначала OnTrade() без trade.price, а потом с trade.price? От этого зависит какие именно я могу использовать вызовы OnTrade(), т.е. нужно ли вообще проверять установлено ли в них поле trade.price, или это поле заполнено ценой всегда и не меняется в следующих вызовах? 6) Могу ли я быть уверен, что имея самый первый OnTrade() с ценой исполнения trade.price, последующие OnOrder() не изменят значение trade.price? 7) Могу ли я с учётом своего алгоритма контроля исполнения использовать только самые первые вызовы OnOrder(), OnTrade(), OnTransReply(), отфильтровывая все последующие, где я фактически смотрю только на изменение баланса в заявке и жду появления сделки с номером заявки? 8) Может быть вообще как-то по другому изменить алгоритм контроля исполнения заявки(приход сделки)? Какой алгоритм контроля посоветуют разработчики с учётом всех этих многочисленных вызовов?
Все эти 0, nil, "0", "", которые могут прийти в trans_id в разных частных случаях в OnTrade() или в OnOrder() как я понял для меня не критичны, так как во всех колбэках я проверяю поля таблиц trans_id со своим номером транзакции TRANS_ID
1) OnTransReply - это колбек об отправке транзакции. Т е транзакция ушла с сервера брокера и попала на сервер биржи. единственный параметр в ней который не изменится это trans_id. ------------------------ Его надо использовать для идентификации транзакций. Все остальное может бить или не быть в зависимости от того как обрабатывается эта транзакция на сервере биржи. --------------------- 2) Надо делать программу так, чтобы число срабатывания колбеков не влияло на результат. Для этого надо не считать число срабатываний, а реагировать на события о которых сообщается в информации принятой колбеком. Если новая информация не изменяет состояния Вашего робота (конечного автомата) то какая разница, сколько раз сработает колбек. состояние не изменится. ------------------ 3) OnOrder может приходить много-много раз. Например Вы поставили лимитную заявку 100 лотов , а встречные заявки содержат по 1 лоту. Сколько раз сработает OnOrder? Правильно... много. Поэтому читайте ответ 2) ------------------- 4) см 2) 5)см 2) 6) см 2) 7) нет 8) ДА ------------------
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 14:04:44
Цитата
Serg_ написал: Подскажите, есть ли какие ни будь условно официальные примеры, как связать С++ с Quik ? Как сделать dll ?
Все есть безусловно официально. В КВИК встроена виртуальная машина луа без каких либо изменений исходников поэтому читайте API C для lua. ------------------------- Я так пишу функции для QUIK на СИ от колбек до многопоточной обработки данных в LUA. ---------------------- QLUA - это библиотека написанная на API C. -------------------- Или в чем то другом проблема?
Lua советник
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 08:20:31
если кому-то нужен индикатор прибыли/убытков, или есть пожелание, что надо добавить пишите вежливо.
Lua советник
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 08:17:10
это картинки работы советника на Сбербанке. второй график - индикатор прибыли(зеленый) убытков(красный) итого (белый) -------------------- интервал 30 минут: интервал 5 минут:
Предлагаю углубить, Расширение функций библиотеки QLUA
Пользователь
Сообщений: Регистрация: 30.01.2015
19.09.2022 08:00:41
Добрый день, Предлагаю добавить в библиотеку QLUA функцию установки идентификатора для графика цена и индикатора . --------------------- Объясняю зачем: -------------------- 1) Для установки идентификатора не надо будет лазить в меню окна. Причем очень достает устанавливать этот идентификатор для индикатора при отладке индикатора. ---------------------------- 2) идентификатор графика цены нужен для вывода меток на график. Если это график с якорем, то отображаемый инструмент будет изменяться при изменении активной строки в таблице, а идентификатор при этом не меняется. С помощью предлагаемой функции можно в скрипте динамически изменять идентификатор, например, указывая в нем имя инструмента. В итоге можно метки на графике разделить по инструментам. ------------------------------ 3) идентификатор индикатора нужен для чтения параметров индикатора в скрипте луа. Сейчас для этого надо лазить в меню окна и прописывать идентификатор в Settings. В итоге идентификатор для индикатора можно будет динамически привязывать к инструменту, интервалу и алгоритму индикатора.
Lua советник
Пользователь
Сообщений: Регистрация: 30.01.2015
18.09.2022 10:43:57
Добрый день, --------------------------- Пример простого, универсального советника на луа на основе любых индикаторов. ------------------------------ Советник - это программа, которая формирует сигналы "купить/продать" и показывает их, но не совершает сделки. --------------------- Пример на основе стратегии пересечения двух скользящих средних. Помещаем два индикатора на график цены инструмента Присваиваем им идентификаторы MOV1 и MOV2 как на рисунке:
далее пишем индикатор "nk_bot"
Код
Settings={ i1="MOV2",i2="MOV1", Name = 'nk_bot', }
------------------
local function gI(s,j,i)
local t=getCandlesByIndex(s,j,i-1,1); if t then return t[0].close; else return 0 end
end --значение индикатора
-------------------------
local function cross(s1,j1,s2,j2,i)
local m=i; local x= gI(s1,j1,m) local x1=gI(s2,j2,m);
while m>1 and x~=0 and x1~=0 and x>x1 do m=m-1; x=gI(s1,j1,m); x1=gI(s2,j2,m) end
if m>1 and i>m then return m end
end --пересечение
--------------------------
function OnCalculate(i)
local Bu,Se; local i1=i-1;
if i>1 then
local jU_,jD_=jU,jD;
jU=cross(Settings.i1,0,Settings.i2,0,i1); --MOV1 пересекает MOV2 снизу вверх
jD=cross(Settings.i2,0,Settings.i1,0,i1); --MOV1 пересекает MOV2 сверху вниз
if jU and jU_==nil then jBu=i; Bu=L(i)-0.1; end
if jD and jD_==nil then jSe=i; Se=H(i)+0.1; end
if i==Size() then -- последняя свеча
end
end
return Se,Bu;
end
-----
function Init()
local t={};
t[#t+1]={Name = "Se",Color = RGB(255,0,0),Type = 11,Width =3}; ---sell
t[#t+1]={Name = "Bu",Color = RGB(0,255,0),Type = 10,Width =3}; ---buy
Settings.line=t;
return #t;
end
и помещаем его на график инструмента В результате получим на истории торгов сигналы "купить/ продать" на графике инструмента --------------------- На основе данного примера Вы можете построить советник для любых индикаторов, которые встроены в терминал КВИК или написаны кем-то.
Что означает ошибка sendTransaction -- Не указан режим транзакции?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.09.2022 12:21:08
PRICE для акций и рыночной цене =0.
Что означает ошибка sendTransaction -- Не указан режим транзакции?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.09.2022 12:12:19
CLIENT_CODE
Кривые шибки в QLua
Пользователь
Сообщений: Регистрация: 30.01.2015
16.09.2022 09:17:17
У меня всего одна гипотеза относительно почему они мудаки. Знаний нет, учиться им уже позно, поэтому пишут чушь .
Кривые шибки в QLua
Пользователь
Сообщений: Регистрация: 30.01.2015
16.09.2022 09:13:29
был на форуме только один мудак , теперь к нему присоединился второй-
Что означает ошибка sendTransaction -- Не указан режим транзакции?
написал: Вы ошибаетесь в главном:Разработчики библиотеки QLUA не являются разработчиками VMLua, в исходниках которой вы ковыряетесь.Поэтому все Ваши вопросы про base_funcs (Lua 5.4.1), не по адресу.
Похоже, вы ничего никогда не разрабатывали. Нормальный разработчик отвечает за свою разработку независимо от того что он при этом использует. А ненормальный будет рассказывать что у него не работает из того чем он пользуется (например, "кривой" головой). В этом форуме вы пишите лишь бы как то наследить :: .
и еще. Я это уже указывал ранее на форуме, но для Вас специально повторю. У колбеков и Main различные локальные стеки. это именно 'L" которую Вы пытаетесь синхронизировать. А так как локальные стеки разные, то и синхронизировать их не требуется. А вот глобальный стек у них один и тот же. И потоки в QLUA синхронизируется при обращении к глобальным переменным. Ранее приводил результаты тестов как и что кого тормозит по этой причине. --------------------------- Для своего пула потоков я использую неблокирующую синхронизацию. ----------------------- Относительно того, кто что разрабатывал, Вы тоже ошибаетесь. -------------------------------------- Поэтому хвалитесь своим, а не завидуйте другим. -------------------------- У меня например более 20 патентов, а как с этим у Вас?
Кривые шибки в QLua
Пользователь
Сообщений: Регистрация: 30.01.2015
15.09.2022 11:16:20
, Вы ошибаетесь в главном: Разработчики библиотеки QLUA не являются разработчиками VMLua, в исходниках которой вы ковыряетесь. Поэтому все Ваши вопросы про base_funcs (Lua 5.4.1), не по адресу. ---------------------- Кроме того, нигде в документации к LUA ( не к QLUA) не указано, что VMLua является многопоточной виртуальной машиной. Более того, проблема многопоточности VMLua неоднократно обсуждалась в интернете и есть много способов ее решения. ==================== Разработчики QLUA тоже сделали несколько потока безопасных функций. О них указано в документации на QLUA. ===================== Немного поясню Вам по приведенному вами коду из исходников VMLua. ----------------- Вы ошибаетесь, api_incr_top(L); // ##### ? используется L без синхронизирующих это не функция а макрос. ------------------------- вот его определение: /* Increments 'L->top', checking for stack overflows */ #define api_incr_top(L) {L->top++; (L, L->top <= L->ci->top, "stack overflow");} ------------------- т е еще на стадии компиляции вместо api_incr_top(L); будет записано L->top++; =================== Кроме того, отсутствие блокировки еще не означает невозможности работы данного фрагмента в многопоточной системе. ================ Если в потоке производится лишь чтение данных, то синхронизация практически не требуется. ================= чтобы понять надо ли синхронизировать обращение к функции luaO_str2num(s, s2v(L->top)); // ##### ? используется L без синхронизирующих скобок надо смотреть, пытается ли какой-либо другой поток изменить данные в момент обращения. ===================== но повторю сказанное ранее, никто Вам не обещал что эта функция потока безопасная. ====================== "Спасение утопающих - дело рук самих утопающих"
написал: Служба технической поддержки от вашего брохера не помогла ?
ответили. но там не понимают, что такое рыночная заявка. В принципе неудивительно. Если есть такая проблема
попробуйте выставлять не рыночную, а по лучшей цене увеличенной , если лонг или уменьшенной если short на 1-2%. Фактически это будет рыночная цена, если Вы торгуете ликвидным инструментом.
Проблема в том, что я не знаю лучшую цену в момент, когда инструмент открывается с гэпом (либо времени очень мало, чтобы вводить руками заявки). В поддержки брока предложили лимитный ALGO, но с макс возможной ценой минус небольшое отклонение. Просто не понятно в чем проблема реализовать нормальную рыночную заявку, которая выставляется по расписанию...
При рыночной заявке проблема в оценке достаточности ваших средств. ------------------- Поэтому на самом деле выставляется заявка по некоторой цене по которой оценивается достаточность средств.
Какой я в очереди
Пользователь
Сообщений: Регистрация: 30.01.2015
14.09.2022 19:08:16
в итоге если Вы не крупный, не маркет-мейкер, не HFT Робот, то Ваш номер последний.