вот честно говоря, уже неохота, что-то писать. Вы просто убиваете тему своим выяснением отношений. 1. Насчёт работы с "майном" - всё уже детально обсуждено и описано на quik2dde.ru
2. При использовании враппера - выигрыш в том, что это всё изолировано и не приводит к засорению программы, повышает читаемость. Справедливости ради, замечу, что я - сторонник того, чтоб враппер располагался в qlua.dll, а не в коде LUA-скрипта. Но в данной теме это не обсуждается, поэтому я её не развиваю.
3. подобного Не подобного. Я чувствую, что Вампросто захотелось поспорить. Ещё раз повторю: враппер делался разработчиками. Если у Вас есть вопросы по врапперу - задавайте им. Со своей стороны, я уже отметил в предыдущих постах, что КРАЙНЕ ВАЖНО СОБЛЮДАТЬ ПОРЯДОК РАБОТЫ С КОНТРОЛОМ. привёл рабочий пример. Что Вам ещё тут нужно доказывать/обсуждать/выяснять? Какой смысл от всех этих последних 10-ти постов??? Или Вы так любите, чтоб последнее слово было за Вами? Чтож, тогда умолкаю, я везде был не прав, несу полную чушь и полный бред, прошу меня понять и простить. Вам так легче? Вы это хотели услышать?
поэтому работу с майн лучше свести к минимуму. Подчеркну: не полностью отказаться, а свести к минимуму, оставив в нём лишь работу с разделяемыми переменными.
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Николай Камынин пишет: Кроме того, терминал QUIK-это программа подачи поручений, исполнение которых не является обязательным для брокера.
Честно сказать, даже не знаю, что сказать.... :))))) То есть, получается, я, к примеру, купил-брокер исполнил, далее: я захотел продать-брокер НЕ захотел. Так что ль, получается???:)))))) Вообще-то, это его прямая обязанность исполнять поручения и действовать в интересах клиента. И НЕ ВАЖНО бесплатная там какая-то программа или нет. Вот есть к примеру, не программа, а телефон (или по другому ещё один канал связи с брокером для ввода поручений. рассматривайте его именно так) - он бесплатный. Я звоню брокеру, а брокер мне говорит: "а вот х.. тебе". Так что ль? Вы не перестаёте меня удивлять)))
Серж пишет: И не имеет значения, в каком потоке строится таблица: в основном или в main.
если писать весь скрипт в одном "майне" и целиком в основной части скрипта то "Да" - не имеет. Но так можно писать и на тупайле. смысл тогда использовать LUA? А вот когда часть кода "и там и там" тут начинается геморрой из=за которого некоторые, казалось бы очевидные вещи начинают работать не так, как должно быть.
Серж пишет: sam063rus пишет: 2. что будет если таблиц будет несколько? Идентификатор таблицы вам на что?
тут разговор про то, что размер кода, равно как и число переменных значительно увеличаться, что приведёт к полной неразберихе в коде.
Цитата
Серж пишет: Можно подумать, с использованием враппера порядок вызова не имеет значения
имеется ввиду, что враппер уже описан и в нём УЖЕ учтён правильный порядок, который разработчики так и не удосужились привести в документации. Нетрудно заметить, что подход "в лоб" у автора не сработал. Поэтому я лишний раз и обратил внимание на правильность порядка работы с контролом.
Цитата
Серж пишет: sam063rus пишет: 1. надо забыть про работу в "майне", как дурной тон. Обоснуйте.
работа в "main" - это работа в другом потоке.
--------------------------------------------------------------------------------------------------------------- я так понял, что Вам бы лишь, что-нибудь написать. Или у Вас просто настроение не задалось?
1. надо забыть про работу в "майне", как дурной тон. 2. что будет если таблиц будет несколько? именно для этого и придумали классы. 3. при создании объекта "таблица", (без использования враппера), имеет очень большое значение порядок вызова методов, т.е. по сути, порядок создания объекта должен соблюдаться. это нигде не описано у разработчиков да и мой вариант врядли можно назвать абсолютно правильным но, как-то вот так (слегка переделанный твой вариант):
Код
is_run = true
function OnInit()
t_id = AllocTable()
res = AddColumn(t_id,1,"col1",true,QTABLE_CACHED_STRING_TYPE,30)
message("AddColumn - " .. tostring(res))
res = AddColumn(t_id,2,"col2",true,QTABLE_CACHED_STRING_TYPE,30)
message("AddColumn - " .. tostring(res))
CreateWindow(t_id)
row1 = InsertRow(t_id, -1)
message("InsertRow - " .. tostring(row1))
row2 = InsertRow(t_id, -1)
message("InsertRow - " .. tostring(row2))
SetWindowCaption(t_id, "thats my table")
end
function main()
while is_run do
sleep(100)
end
end
function OnStop()
DestroyTable(t_id)
is_run = false
return 1000
end
Таблица создаётся, колонки и строки добавляются, заголовок меняется, из меню закрывается и останавливается. Для того, чтобы скрипт останавливался при нажатии "крестика" в окне таблицы - надо уже прикручивать коллбек, что мне делать уже лень. Думаю сам разберёшься.
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
брокеру для этого придётся писать, а точнее, опять же заказывать ЗА СВОЙ СЧЁТ серверный модуль для квика у ARQA, который будет являться по сути динамическим фильтром списков с функцией возможного оповещения тем или иным способом. Что брокер, разумеется делать не будет.
касаемо основного вопроса: вот, у меня была ситуация: опционы у меня присутствовали во всех списках в квике, лимит позволял но, у брокера была в своё время отключена по умолчанию эта возможность для всех клиентов (дабы оптимизировать свои риск-параметры). всё решилось только звонком брокеру.
Почему это не может сделать ARQA? Ответ: спрос на такую услугу - единичный. К тому же придётся переписывать часть квика для динамического апдейта всех списков. В конечном итоге, из-за такого сомнительного нововведения неизбежно возрастёт траффик и понизится производительность самого квика. (здесь могу, конечно, ошибаться)
Почему это не может да и врядли будет делать брокер? Ответ: Брокер не пишет серверные модули, а покупает их у той же ARQA.
Главный вопрос: Что будет, если в один момент прошла транзакция на основании информации из старых списков, а в следующий момент списки изменились и оказалось, что новая связанная транзакция уже невозможна исходя из изменившихся списков?
sam063rus пишет: С другой стороны, имея AllocTable, можно воспользоваться полу-хакерским методом и создать вместо таблицы какую-нибудь тоже НАТИВНУЮ кнопку или вообще другой контрол средствами Windows API, которая будет работать в окне квика.
под "средствами Windows API" имелось ввиду, конечно, состряпать dll, аналог vclua.
С другой стороны, имея AllocTable, можно воспользоваться полу-хакерским методом и создать вместо таблицы какую-нибудь тоже НАТИВНУЮ кнопку или вообще другой контрол средствами Windows API, которая будет работать в окне квика. Потому что, эта функция по сути, скорей всего возвращает хендл окна. Насчёт этого, могу, конечно, ошибаться, потому как об истинной реализации могу только догадываться, читая между строк примеры в хелпе QLUA. Но, честно говоря, не хотелось бы до этого опускаться.
и так с остальными контролами. потому как если разработчики решат вдруг добавить парочку деклассированных то, это выльется в штук 20 функций для работы с этими "деклассированными контролами" и их описаний в хелпе. в итоге, справка по QLUA, равно как и код на QLUA будет стремиться к роману "Война и мир" по объёму.
таким образом, разработчики, вместо того, чтоб добавлять в qlua вот эти вот, по сути, промежуточные функции: могли бы изначально вписать враппер "quik_table_wrapper" в QLUA, а мы, как пользователи, получили бы удобный, ещё один НАТИВНЫЙ класс в QLUA.
swerg, я, конечно, понимаю, что Вы более опытный в метатаблицах, их метаметодах, а самое главное, как это всё реализовать (забиндить) на C++ или в том же Лазарусе. Но я не думаю, что таких большинство. Суть разговора в том, что вот у нас есть qctrls.dll и есть пример обёртки на QLUA, как с ней работать, вопрос: нахрена мне, как в первую очередь, трейдеру вся эти "танцы" когда я могу по примеру всё той же vclua в достаточно в простой форме обратиться к таблице, создать/отредактировать/удалить её. и мне даже не понадобиться вникать в то, как реализовано это, главное, чтоб оно БЫЛО реализовано. Или, другой пример, есть функция QLUA message, которая на самом деле combobox с жёстко заданными свойствами (это другой пример крайности). Другая выгода: т.к. это всё будет реализовано не нами, а разработчиками (у которых по определению больше информации) то, это отчасти упростит ранее выявленные проблемы с многопоточностью.
Можно заменить и уменьшить единовременную сумму на принцип привязки плагинов к серверу, который используется у Вас. Это позволит Вам иметь хоть и меньший стабильный ежемесячный доход но, больший совокупный по времени использования. А также, ввиду более низкого ценового порога вхождения привлечёт больше заинтересованных пользователей, что обеспечит Вам приличный оборот, причём на ежемесячной основе.
В целях уменьшения задавания "глупых" вопросов на форуме, а также для всесторонней поддержки независимых разработчиков и самого квика, предлагаю раскрыть на коммерческой основе интерфейс системы плагинов в квик (QUIK Plugin API), как это сделано в wealth-lab и других раскрученных торговых системах, ставших де-факто стандартом. Например, цена в 50 000 руб. на мой взгляд, устроила бы обе стороны. Это позволило бы самим пользователям сделать квик более гибким, не быть привязанным к qpile или qlua, несмотря на в принципе, достаточно сильный её (qlua) потенциал, избавило бы от использования всевозможных связок: QUIK-QLUA-"что-то там ещё" QUIK-"что-то там ещё", отчасти, упростило бы решение проблем с многопоточностью и синхронизацией.
Если такая цена для Вас приемлема и Вы, как разработчики, считаете её обоснованной за возможную незначительную упущенную выгоду от потери монопольного создания и продажи плагинов к квику, прошу зарегистрировать данное пожелание.
это решение - никакое. не хотел это тут говорить но, у меня двойная авторизция и все ваши плюшечки с тем, что можно по-быстрому переподключиться у меня не проходят. мне приходится указывать помимо пароля ещё и место ключеового контейнера. а стоит серверу потерять коннект - ЭЦП сразу воет, что надо ввести ключ
Новичкам и НЕновичкам не следует торговать "голыми" фьючерсами, расчитываемыми в валюте отличной от рубля без соответствующей позиции, которая будет страховать валютный риск. Либо, торговать - шустро и крыться перед клирингами и не позднее определённого времени. Но такая торговля, - состояние вам не принесёт.
Но... мыши давились но, продолжали жрать кактус...
по облигациям, так: ((Ликв. цена * Номинал / 100 + НКД) * Позиция) - ( (Баланс. цена * Номинал / 100 + НКД) * Позиция ) где, баланс.цена: Средневзвешенная цена открытия позиции. Для облигаций значение указывается в % от номинала ликвидн.цена: Цена, по которой в текущий момент возможно закрытие данной позиции по бумаге. Для облигаций значение указывается в % от номинала
квик считает на основе сохранённых в прошлые дни брокером данные. а вот. как брокер сохраняет это вопрос. у меня по портфелю все позиции - всё нормально за исключением Белона.
Для того чтобы получить текущее состояние данных достаточно CreateDataSource. Однако чтобы фактически произошла подписка на новые данные (а новыми считаются любые полученные с сервера) то нужен колбек SetEmptyCallback или SetUpdateCallback.
param – необязательный параметр. Если параметр не задан, то заказываются данные на основании таблицы всех сделок, если задан – данные по этому параметру.
Параметр Тип Описание SetUpdateCallback function Позволяет задать пользователю функцию обратного вызова для обработки изменившихся свечек
p.s. причём, абсолютно не имеет значения: для графика вам эти свечки понадобились или для скрипта и его datasource, т.к. и там и там идёт обращение к одной и той же функции. а createdatasource - просто обёртка к ней.
и что тут странного? рассматривайте папку "archive", как кеш на локальной машине. он служит для того, что уменьшить траффик и, соответственно, нагрузку на квиковские сервера. просто в следующий раз, когда вы опять захотите открыть тот же график - квик уже не будет обращаться на сервер за прошлыми 3000-ми свечами, а качнёт их из файла. а с сервера будет получать только актуальные данные.
для чего внедряют скрипты? чтоб облегчить жизнь рядовым пользователям (трейдерам), а не программистам. Программистам это облегчает жизнь - лишь отчасти. - уменьшается время на рекомпиллинг. повышается гибкость программы.
если превратить реализацию qlua в сплошные метатаблицы то, кто по вашему сможет ей пользоваться? для кого она? кто целевая аудитория? ответ: только роботорговцы, которые изначально опытней рядовых трейдеров и программисты. напрашивается тогда вопрос: а кому это надо? мои предложения направлены на соблюдение интересов основной массы пользователей - трейдеров. а если роботорговцы так хорошо разбираются то, что мешает им создать свою ТС и устанавливать свои правила? (извиняюсь если чем обидел)
а вообще-то никто и не говорил про ограничения, а наоборот. к тому же qlua развивается именно по экстенсивной модели и ничто, что до этого работало не отбрасывается.
Цитата
s_mike@rambler.ru пишет: Касаемо метатаблиц. Нам (мне) мусор с метатаблицами очень нужен.
да не волнуйтесь вы так - чтоб он исчез - потребовалось бы переписать саму LUA, что естественно делать никто не станет. Тут разговор о высокоуровневой надстройке к qlua и большей открытости её GUI.