nikolz (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 10 11 12 13 14 15 16 17 18 19 20 ... 72 След.
getClassSecurities со списком классов
 
Цитата
swerg написал:
getClassSecurities

В документации все есть:
---------------------------
Функция предназначена для получения списка кодов инструментов для списка
классов, заданного списком кодов. Коды инструментов в списке разделяются запятой
«,». В конце полученной строки всегда дописывается символ «,».

STRING getClassSecurities (STRING)

Пример:

sec_list = getClassSecurities("SPBFUT")

В результате выполнения приведенной строки кода, переменная sec_list содержит  строку вида:

RSH3,VBZ2,O4Z2,O2Z2,SiM3,SiH3,SiF3,RIH3,RIM3,LKH3,LKZ2,GDZ2,GMZ2,GZH3,GZZ2,EuZ2,EDZ2,SiZ2,RIZ2,
--------------------
Все понятно?
Значения цены в таблице заявок
 
Цитата
Cyber написал:
Код
   if  (tostring(C)  =  =  tostring(TRADE_CLASS_CODE))  and  (tostring(S)  =  =  tostring(TRADE_SEC_CODE))  and  (F  &   0x1  ~ =   0 )  and  (tostring(P)  =  =  tostring(fPrice))  then  
  
заработало вроде
разрабы, вы бы проверили, это явно не нормальная ситуация с типами
скорее всего это не вина разработчиков.
Это особенность языков с динамической типизацией, к которым относится и LUA.
Но разработчики могли бы это учесть в функции SearchItems.  
Значения цены в таблице заявок
 
и еще
возможно различные типы  
попробуйте указать явный тип для всех параметров которые могут быть числами
Значения цены в таблице заявок
 
Цитата
Cyber написал:
fPrice
а где fPrice?
и как понять какие условия сработали ,а какие нет.
-----------------
хорошо бы  вывести все параметры сравнения и в конце результат сравнения
т е будут строки всех параметров а в конце true или false
Значения цены в таблице заявок
 
Цитата
Cyber написал:
о
сделайте так
Код
    function myFindPrice(C,S,F,P)
     if (C == TRADE_CLASS_CODE) and (S == TRADE_SEC_CODE) and (bit.band(F, 0x1) ~= 0) and (P == fPrice) then return true end
     return false 
    end    
  для проверки хорошо бы вывести в лог файл  перед if все параметры сравнения
Как заставить индикатор не округлять "последнее значение"?
 
Цитата
green_X5 написал:
Цитата
nikolz написал:
округляет не индикатор а вывод на график.
Виртуальная машина вообще ни при чем.
Идите лесом умничать, уважаемый, не к вам обращение.
Учи матчасть дебил
Как заставить индикатор не округлять "последнее значение"?
 
Цитата
green_X5 написал:
Да, зарегистрируйте пожалуйста.
Есть надежда что сделаете это довольно быстро, там ведь в вашей "виртуальной машине" всего-то убрать одну паразитную функцию округления. Или например изменить её до округления до 2-х знаков, что вполне приемлемо для всех индикаторов.
округляет не индикатор а вывод на график.
Виртуальная машина вообще ни при чем.
История позиций и торговли, Пропадает точка входа за вчера на графике
 
Цитата
Станислав написал:
Цитата
nikolz написал:
Ну не собирается никто для Вас бесплатно делать Ваши хотелки
Хм... А зачем тогда в принципе существует эта тема (пожелания по развитию) на форуме?
Предлагаю тогда убрать тему с форума, дабы не вводить в заблуждение пользователей, раз "НИКТО НЕ СОБИРАЕТСЯ для вас бесплатно делать ваши хотелки".
И, кстати, такой комментарий был оставлен от имени всех разработчиков? Или это ЛИЧНАЯ точка зрения одного из гостей форума (просто сочувствующего разрабам), который взял на себя ответственность сказать за ВСЕХ?
Вы посмотрите историю хотелок и найдите хотя бы какую-то реализованную.
Вылетает QUIK Junior 9.7.0.14 при подключении отладчика Visual Studio 2022 17.0.5 С++
 
Я отлаживаю dll без КВИКА в SCITE, поэтому можно вставлять в нее все что угодно.
Зачем dll с ошибками засовывать в QUIK?
Номер строки в коде скрипта, Вывести номер строки в коде скрипта
 
Цитата
swerg написал:
Вставляйте в начало строки логирования любой уникальный текст. Уникальное число или набор букв. Еще лучше - осмысленный.
Потом к коде скрипта эту метку легко будет искать.
дополню
напишите скрипт, который ,будет загружать ваш скрипт и вставлять метки в каждую строку и все будет на автомате.
Как обрезать число типа float до 2х знаков после запятой
 
В документации Lua5.1  указано, что a % b == a - math.floor(a/b)*b
---------------------
отсюда  получаем   math.floor(a/b)*b=a - a%b
------------------------
очевидно Михаил, с сайта которого Вы списали формулу ,
просто взял эту формулу из документации на луа и выдал за собственное открытие.
Как обрезать число типа float до 2х знаков после запятой
 
Цитата
Алексей А. написал:
Цитата
nikolz написал:
через строку - это медленное  решение
Согласен.

Поэтому позже нашел такое решение: NewStopPrice = PriceC * 1.01 - PriceC * 1.01%0.01.
Вот отсюда:  https://bot4sale.ru/blog-menu/qlua/512-floor-to-step.html
Согласен.
Можно из числа вычесть остаток от деления нацело.
Относительно побочных эффектов сказать ничего не могу.
Как обрезать число типа float до 2х знаков после запятой
 
и еще
округлять число через строку - это медленное  решение.
быстрым решением является округление через функцию
пример для сравнения быстродействия:
Код
x=1.112443287174
startA();  z=0.01*math.floor(100*x)            print("t(мкс)="..0.1*stopA()..",z="..z)
startA();  y=string.sub(x,1,string.find(x,'.')+3) print("t(мкс)="..0.1*stopA()..",y="..y)
результат:
Код
D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "nkAI.lua" 
t(мкс)=1.0,z=1.11
t(мкс)=6.2,y=1.11
>Exit code: 0
Как обрезать число типа float до 2х знаков после запятой
 
Цитата
Алексей А. написал:
10 или 100 чего будет?
Если Вы будете обрезать строку,
string.sub(Название переменной,1,3)
то Вам надо определять сколько позиций в целой части т е сначала найти позицию десятичной точки,
потом вычислить с какой по какую позицию выделить подстроку.
т е эта формула работает лишь тогда когда у вас число меньше 2, а если 10 или 100 то она не работает, надо изменять последнюю цифру.
----------------------
Поэтому универсально работает это:
y=string.sub(x,1,string.find(x,'.')+3)  -- следующая строка после сообщения Владимира.
Как обрезать число типа float до 2х знаков после запятой
 
Цитата
Алексей А. написал:
Цитата
Владимир Ишанин написал:
string.sub(Название переменной,1,3) 1 - с первого символа и до 3 т.к. 2 знака после запятой..
Владимир, спасибо! Как раз то, что искал.))
прикольно, а если будет не 1, а 10 или 100, то сколько знаков будете отделять таким способом?
Робот - оповещение о значениях RSI
 
Цитата
Алексей А. написал:
Цитата
Николай написал:
своем Дзен-канал
Начал читать ваши уроки. Очень полезно, так как не программировал на lua никогда!))
https://eligovision.ru/media/upload/lua.pdf
История позиций и торговли, Пропадает точка входа за вчера на графике
 
Почему никто не читает регламент брокера?
------------------------
QUIK - это условно бесплатный терминал для подачи заявок брокеру как альтернатива заявок по телефону.
Все что есть в квике - это БЕСПЛАТНОЕ , а значит "Дореному коню в зад/зубы не смотрят"
-----------------------------
20  лет начинающие миллиардеры фондового рынка постоянно возмущаются : "почему диван не летает?".
==================
Ну не собирается никто для Вас бесплатно делать Ваши хотелки.
Жалуйтесь на это брокеру.
"Кто платит, тот и танцует девушку"
Выгрузка библиотек
 
Цитата
Alexander написал:
Цитата
nikolz написал:
 
Цитата
 нет это просто обертка второй
А ну да, точно. Это я что-то как-то бегло глянул. Конечно обёртка. Если ffi, там же прямо из скрипта нужная функция API вызывается, так вроде?
ffi нельзя использовать в Lua5.3 или 5.4.  ffi - это LuaJit.
----------------
Если мой аналог ffi, то это тоже dll.
---------------------
В любом случае, надо всатвлять в скрипт описание функций С, а в моих примерах этого нет.  
Как подключиться к таблице состояние счета LUA, QUIK
 
Цитата
awkozlov написал:
Всё же хотелось бы получать информацию об открытых позициях из терминала. При этом не из табличек orders, trades, а из состояния счёта. Как минимум надо банально знать какие инструменты открыты, ведь orders и traders однодневные таблички, и после их зачищения робот с утра становится слепым.  
открытые позиции не надо брать не из  orders и не из traders.
Тем более, что там их нет, если Вы их открывали вчера.
----------------------------
информацию об открытых позициях из терминала берут из
futures_client_holdingПозиции по клиентским счетам  (фьючерсы)
depo_limitsПозиции по инструментам
Как с помощью кода открыть график и отформатировать его по шаблону?, Как с помощью кода открыть график и отформатировать его по шаблону?
 
Цитата
Alexander написал:
Ещё вот что. По Таблице обезличенных сделок как раз таки и неплохо брать данные в таком формате, как предлагается в этой функции. Там же как раз сделки все с биржи и время и цены. Я для себя правда ни разу эту таблицу не заказывал. У qpile свой подход. Он видимо так может работать чисто по времени в отличии от свечей как в Lua.
У QPILE  вы не сможете получать свечи в момент их закрытия,
так как в QPILE бесконечный цикл синхронизируется не по колбекам асинхронных событий торговых операций,
а по колбеку синхронных событий таймера .  
Как с помощью кода открыть график и отформатировать его по шаблону?, Как с помощью кода открыть график и отформатировать его по шаблону?
 
Цитата
Alexander написал:
Цитата
nikolz написал:
 
Цитата
Ну как причём? Это же не я придумал. Это разработчики квика. У них так и написано в документации: "Значение «parameter_name» должно соответствовать одному из значений имени параметра из Таблицы текущих значений параметров. Их перечень см. Функции для получения значений Таблицы текущих торгов. Если «parameter_name» указан как «», то поиск осуществляется по данным Таблицы обезличенных сделок."
Ну это ещё ладно. С Таблицей обезличенных сделок как раз таки всё понятно. Я то спрашивал как раз про другое, когда не по таблице. Тогда что писать?
Таблицы текущих значений параметров(ТТП)  и таблица обезличенных сделок - это две большие разницы.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
Cyber написал:
Ясно, знкчит нужно городить таблицу и поиск по ней.
А случайно в OnTrade не добавили уникальный номер ответа? Вроде даже запрос делали на добавление, чтоб ответы повторяющиеся группировать?
Если у Вас колбеки в каждом скрипте, то Вы можете получать текущий trans_id в колбеке OnTransReply
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
Cyber написал:
Цитата
nikolz написал:
 
Цитата
Cyber  написал:
Так я не понял, если торгуем только одним инструментом во всем терминале, то достаточно проверки
if(TradeId>lastTradeId) ?
Номера идут по возрастанию всегда?
А если несколько скриптов, каждый по одному инструменту, то тоже достаточно этого условия?
 что такое "TradeId"?
TRANS_ID
TRANS_ID - это номер транзакции, который вы придумываете сами.  Если он уникальный и вы его увеличиваете на каждой транзакции, то он будет увеличиваться.  
Если у Вас несколько скриптов в которых вы посылаете транзакции, то Вам надо синхронизировать в них генерацию TRANS_ID чтобы было уникально и возрастало.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
Cyber написал:
Так я не понял, если торгуем только одним инструментом во всем терминале, то достаточно проверки
if(TradeId>lastTradeId) ?
Номера идут по возрастанию всегда?
А если несколько скриптов, каждый по одному инструменту, то тоже достаточно этого условия?
что такое "TradeId"?
Как с помощью кода открыть график и отформатировать его по шаблону?, Как с помощью кода открыть график и отформатировать его по шаблону?
 
Цитата
Alexander написал:
Если пользоваться функцией GET_CANDLE и 3-й параметр STRING parameter_name не устанавливать в - "", т.к. Таблица обезличенных сделок не заказывается у брокера, то что конкретно надо туда писать? В документации пишут брать параметр из  Таблицы текущих значений параметров. Их перечень см. Функции для получения значений Таблицы текущих торгов. Если мне нужно у свечи данные закрытия свечи, то какой параметр указать? Просто CLOSE такого нет там. Пробовал CLOSEPRICE - не то. И вообще причём здесь Таблица текущих торгов?
Причем здесь таблица обезличенных сделок?
Вы же свечу заказываете.
Отслеживание прибыльности/убыточности по фьючерсам
 
Цитата
Станислав написал:
Цитата
nikolz написал:
Поэтому считать прибыль/убыток вы можете по состоянию своего счета после клиринга.  
То есть, чтобы понять текущую итоговую ситуацию по позиции, мне надо каждый день вести табличку в экселе, где буду фиксировать плюс или минус после каждого клиринга и по столбцу в виде суммы мне будет виден реальный мой финансовый результат? В Quick реально нет опции просмотра балансовой стоимости (или объема совершенной сделки) от момента приобретения контракта?!
Как вариант.  
Отслеживание прибыльности/убыточности по фьючерсам
 
Цитата
Станислав написал:
Недавно начал совершать сделки на срочном рынке и не понимаю следующее:.
Как отслеживать общую прибыль/убыток по открытой позиции?
Вариационная маржа не дает представление об итоговом состоянии позиции (так как это только дневной срез прибыли или убытка, а не за весь период). В колонке "Балансовая цена", "Балансовая стоимость" (таблица Состояние счета) - отображается цена после клиринга, а не та, по которой прошла изначально сделка (как это указывается по акциям). Нереал.PL рассчитывается тоже только с момента последнего клиринга.
Подскажите, как вывести информацию о текущей итоговой прибыльности или убыточности позиции по фьючерсам?
фьючерсы тем и отличаются от акций, что по ним полный взаиморасчет совершается на закрытие сессии.
Поэтому считать прибыль/убыток вы можете по состоянию своего счета после клиринга.  
отрицательный защитный спред, механизм исполнения тейк профита
 
Вы можете экспериментально это проверить на демо сервере.  
Поля в sec_info, Поля в sec_info, SECURITIES
 
Номинальная стоимость,  представляет собой фиксированную стоимость акции, определяемую компанией при проведении первичного публичного размещения акций (IPO)
Выгрузка библиотек
 
Цитата
Alexander написал:
Цитата
nikolz написал:
ссылка для скачивания  dll с функциями выгрузки
 https://transfiles.ru/cp4bi  

выгрузить на Lua5.3 :
require"nkDDD"
nkDDD.freeDLL( имяВыгружаемойDLL)

для выгрузки на СИ  функция
void nkfreeDLL(char* pNameDLL)
-------------------------
Если что не так, пишите и выкладывайте Ваш пример, будет разбираться.
Мой пример на луа см выше
 nikolz , а первая которая просто через скрипт, я так понимаю работает по принципу как ffi? Я правда не смотрел реализации этой ffi.
нет это просто обертка второй
Как подавить вывод командного окна при запуске exe-файла из Lua?, popen execute
 
Цитата
awkozlov написал:
pcall, вроде поглощает командное окно.
На простенькой функции у меня поглотил окно.
Надо будет другие потестить.
Код
   local  ok, err  =  pcall(os.remove,  'C:\\test.txt' )
 if   not  ok  then 
     message ( 'Error deleting file:' , err)
 end 
  
pcall подавляет передачу кода ошибки в QC, а не создание окна для запуска приложения.
--------------------
Если Вы пишите свое приложение, то делайте его не консольное, но заблокируйте вывод окна после создания окна.
Stop Loss и Take Profit к отложенным ИМЕННО Buy stop и Sell stop ордерам, У вас нет возможности выставлять Stop Loss и Take Profit к отложенным ИМЕННО Buy stop и Sell stop ордерам
 
Цитата
Roman Koledin написал:
Цитата
nikolz написал:
 
Цитата
Roman Koledin  написал:
У вас нет возможности выставлять Stop Loss и Take Profit к отложенным ИМЕННО Buy stop и Sell stop ордерам - она есть только к лимитным ордерам - во всех платформах это есть -НО ТОЛЬКО У ВАС ЭТОГО НЕТ - НЕ ВСЕ ТОРГУЮТ ЛИМИТНИКАМИ!
 Уточните,
Вы через  МТ5 на московкой бирже можете поставить Stop и Take к отложенным ордерам или это на кухне форекса?
Да причем тут где? Удивлен такому вопросу, Вы как не от мира сего. Банальные стоплоссы к именно отложенным ордерам есть во многих платформах (как в Атас с конектором транзак, есть в самом Transaq, Trading View с Алор для MOEX - пример с МТ5 я привел для наглядности) - или Вы жотите сказать что нет по определению ВООБЩЕ усановки серверного стоплосса к отложенному стоповому ордеру - самому не смешно
Хоть Вы и хамите, но объясню.
Так как знаю кухню форекс.
----------------------
кухня форекс - это внебиржевой рынок.
Там против Вас играет сервер кухни.  
-----------------------------------
Поэтому там  круто  разводят буратин  на бабки.
Одним из элементов рекламы таких сервер  является обещание быстро отбить затраты на такой сервер.
Так как сервер против Вас играет краплеными картами.
----------------------------
Все ваши заявки лимитные или стоп или стоп на стоп хранятся на одном сервере.
Поэтому сравнительно просто реализовать отслеживание цепочки ваших заявок
Разработчикам выгодно делать для буратин хотелки.
================
В случае торговли на биржевом рынке для простых смертных есть как минимум  два сервера.
Сервер биржи хранит лимитные заявки
А сервер брокера все Ваши отложенные заявки стопы
Сервер брокера - это QUIK
Он обрабатывает логику отложенной заявки
при ее срабатывании он отправляет лимитную заявку на север биржи
и для отслеживания стопа на стоп ему надо обработать лимитную заявку и связать ее с новой вашей отложенной.
------------------
Нагрузка на  севрер qUIK резко возрастает, а толку (денег) от этого ни брокер ни разработчик не имеют.
А Ваши хотелки никто бесплатно делать не будет.
===================
Transaq - это вообще не терминал а API. На нем можно написать все что хотите (писал -знаю)
Но он не бесплатный и готовые решения -платные.
====================
Вам никто не запрещает написать Ваши хотелки на LUA.
Если не умеете - купите решение.
----------------
Понимаю - хочется халявы,
но это на кухне Форекс.
Выгрузка библиотек
 
ссылка для скачивания  dll с функциями выгрузки
https://transfiles.ru/cp4bi

выгрузить на Lua5.3 :
require"nkDDD"
nkDDD.freeDLL( имяВыгружаемойDLL)

для выгрузки на СИ  функция
void nkfreeDLL(char* pNameDLL)
-------------------------
Если что не так, пишите и выкладывайте Ваш пример, будет разбираться.
Мой пример на луа см выше
Stop Loss и Take Profit к отложенным ИМЕННО Buy stop и Sell stop ордерам, У вас нет возможности выставлять Stop Loss и Take Profit к отложенным ИМЕННО Buy stop и Sell stop ордерам
 
Цитата
Roman Koledin написал:
У вас нет возможности выставлять Stop Loss и Take Profit к отложенным ИМЕННО Buy stop и Sell stop ордерам - она есть только к лимитным ордерам - во всех платформах это есть -НО ТОЛЬКО У ВАС ЭТОГО НЕТ - НЕ ВСЕ ТОРГУЮТ ЛИМИТНИКАМИ!
Уточните,
Вы через  МТ5 на московкой бирже можете поставить Stop и Take к отложенным ордерам или это на кухне форекса?
Фильтр дублей сигналов на сделку, Как реализовать?
 
Цитата
Сергей написал:
Да, собственно, уже сам практически разобрался, опыта в других языках хватает, LUA постепенно поддается. Тема была создана для ускорения процесса.

За что люблю иностранные форумы, там просто отвечают на поставленный вопрос. На наших же сначала полет фантазии, потом, когда возвращаешь в рамки темы, долго объясняют, какой ты мудак.

На этой позитивной ноте будем считать тему закрытой.
Ну слава богу, что сами догадались.
--------------------------
Хорошо на англоязычных форумах, там задают детсадовские вопросы  и не хамят.
-----------------------
А на русскоязычных  выползает  на форму дебил со своим "помогите у меня чаша из ж..ы не выходит
----------------------------------
Его начинают спрашивать как ты ее туда засунул?
А он обижается, ему непонятно, что за детские вопросы. Вот засунул и сам не понял.
----------------------
Но постепенно до него дошло, что не все умеют как он делать.
Обмен сообщениями приложений , скриптов на Lua, Python ,С
 
Цитата
A.T. написал:
Да, кстати, в американских платформах, подобных Квику, на C++ написана, весьма хороша (была такая, еще с 90-х, точно такая же модель, когда брокеры подписываются на платформу, а платформу держит независимый разработчик. Её потом выкупил Bank of America и в итоге практически уничтожил, индусские аутсорсные программисты и менеджент, которому ничего не надо, творят чудеса).

Очень старая, подозреваю, что модель Квика и даже бизнес-процесса с нее когда-то срисовывалась.
Называлась InstaQuote.
Тоже с Q логотипом :)

Это было еще до появления Инстаграмма. Так что название не слизано. Точнее, когда инстаграмм появился, платформа была почти убита.

Вот там DDE активно использовался. И было еще некое самореализованное API, очень лаконичное с мини-документацией и простыми функциями обработки заявок, не помню уже технических деталей.о есть это общая мировая практика торговых платформ вообще.

По моему через локальный TCP-port  это делалось... Да!
Торговая платформа открывала и всегда слушала 3201 порт, как сейчас помню.
И на порту висело самописное API, очень простое. Никакого Луа.

Опционная доска там была, но она сама была реализована как как бы отдельное приложение, в отдельном потоке. Было видно даже по интерфейсу, что писалось отдельно.
И опционы на Америке совсем по другому устроены. Нет централизованной волатильности от биржи, и многое не так. И опционы на акции. Это не CME было.

То есть задачи и подходы в принципе одинаковы. Что в Америке, что на Квике в России.

Проблема в том, что DDE слишком громоздок. И слишком стар. И ничего лучше не придумали.

В Квике надо несколько манипуляций мышью сделать, чтобы запускать это всё, в Excel.
По сути пишется самописный Excel, берется компонент на C++ и получается DDE-клиент.

А хотелось бы лаконичную DLL повесить и обращаться отдельным запросом внешним С++ или Java "экзешником" через общую память (это лучшее!) или через такой же localhost TCP-port, через WinSock.

Потому что как устроен ColdFusion (или аналогичный слизанный, ксати, позднее с него модный ASP.NET -- это доподлино известно).
Можно написать программу на Java или С++, которая как обычный HTML-тег с нужными переаметрами по мере надобности может вызываться прямо с веб-страницы.
Всю эту обертку и взаимодействие уже делает сам ColdFusion.


То есть можно вызвать расчет ГО, данные из Квика прямо с веб-страницы и тут же отобразить или записать в БД.
Практически не напрягаясь.

Единственное, это сам Lua и переход в С++.

Вот какая-то такая задумка. Обвязку такую сделать.

А опционную доску потом доделают под Qlua. На худой конец, никто не запрещает обращаться напрямую по коду опциона.
Не в обиду будет сказано, но Вы во всех этих суждениях ошибаетесь.
--------------------
Я не буду подробно все рассказывать, но замечу кратко, в чем Ваши ошибки.
--------------------
1) DDE и TCP- это две большие разницы. WinSock вообще ни при чем.
-----------------
2) DDE - в модели "сервер-клиент" - это самый быстрый способ обмена между приложениями на одном компе.
-------------------
3) Вы не пишите Excel от слова "совсем".  Вы используете формат данных, который используется в Excel.
----------------
Желаю успеха.  
Выгрузка библиотек
 
Цитата
Вадим Никитин написал:
Цитата
nikolz написал:
 
Цитата
Вадим Никитин  написал:
И ещё.

Допустим, сделали библиотеку.
Запустили скрипт.
Библиотека создала потоки, выделила ресурсы, ещё там чего сделала.
Скрипт упал.
Всё это добро осталось висеть.
Как его удалить - никак.

<irony>Конечно, можно сохранить куда-то при создании хэндл каждого ресурса, а после специальной библиотекой вычищать всё это</irony>

Это к чему.
Смотрю тему уже месяц обсуждают.
Действительно ли перезапуск Квика так сложен, что стоит тратить на этот костыль столько времени? Тем более, что это будет крайне ненадёжное решение. Ведь по сути делается то, что не предусмотрено по дизайну, а это всегда ведёт к Undefined Behaviour. В итоге можно потратить ещё больше времени на отладку костыля, вместо того, чтобы разрабатывать торговую стратегию.

В револьвере шесть пуль, а ноги всего две:)
 Вы немного неправильно рассказали взаимодействие процессов и DLL.
Но это не принципиально.
-----------------------------
Товарищи обсуждают эту тему потому , что учатся писать программы,
-------------------------------
Так как облаживаю DLL вне QUIK, то нет надобности выгружать dll из QUIK.
---------------------------------------
Поэтому написал эту функцию из спортивного интереса.
У меня на это ушло не более часа, чтобы уточнить некоторые моменты, разобраться и провести тесты,
------------------------------
Последний вариант не требует включение каких либо функций в выгружаемую библиотеку.
---------------------------
DLL занимает 39 Кбайт для обращения на C
и 44 Кбайта для обращения на Lua.
Да, конечно согласен. Возможно есть неточности. Память человека всё же подвижная материя:)

Учиться всегда полезно. Могу порекомендовать прочитать изучающим тему Windows:
 Джеффри Рихтер, Кристоф Назар - Windows via C/C++. Программирование на языке Visual C++
 Марк Руссинович et al. - Внутреннее устройство Windows
 В них достаточно подробно описаны механизмы взаимодействия различных компонентов Windows.

Тоже не использую Квик для разработки, разрабатываю в Linux:)

Но как-то интересовался этой темой, пришёл к тому же варианту, что вы описали.
Также делал, чтобы можно было ликвидировать потоки, которые оставались в случае падежа скрипта.
Но для себя счёл всё это недостаточно надёжным поэтому решил, что проще перезапустить Квик в экстренном случае.
В дополнение к Вашей рекомендации добавлю
Джеффри РИХТЕР. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows
--------------------
В этой книге можно изучить как взаимодействуют прооцессы с DLL.
----------------------------
Относительно выгрузки библиотек.
Нет смысла отлаживать DLL в КВИКЕ.
В квике отлаживают скрипты.
--------------------------------
Специально сейчас проверил .
Нет надобности перезагружать КВИК.
При остановке скрипта dll освобождается и можно ее снова собирать.
------------------
Полагаю, что причина проблемы у автора темы иная.  
Фильтр дублей сигналов на сделку, Как реализовать?
 
Цитата
Сергей написал:
Цитата
nikolz написал:
 
Цитата
Сергей  написал:
Здравствуйте!
Вопрос возник в том, что нормальная стратегия дает сначала сигнал на покупку, затем сигнал на продажу. Затем опять на покупку.
Но условия входа и выхода из сделок могут быть разные. И до появления сигнала на покупку, стратегия может выдать несколько сигналов на выход из сделки.

Как реализовать что-то вроде: Появился сигнал на покупку - стратегия записывает единичку в базу данных. Когда появляется сигнал на продажу, стратегия проверяет, есть ли в базе данных единичка или нет. Если есть, то выдает сигнал на продажу, а в базу записывает ноль.

Когда появляется сигнал на покупку, стратегия проверяет, что записано в базе. Если единица, то молчит. Если ноль, то выдает сигнал на покупку и пишет в эту ячейку единицу.

Как это можно сделать, подскажите пожалуйста. Я недавно начал LUA изучать, пока ворох вопросов копится.
 Для этого надо запоминать предыдущий сигнал и в зависимости от его значения формировать новый.
-------------------------------
Т е если предыдущая позиция long( короткие позиции не используются), то формируем сигнал продать
----------------------------------------
если предыдущая позиция вне рынка ( короткие позиции не используются),  то формируем сигнал купить.
Я неплохо программирую на AFL, так что, общая логика программирования мне понятна.
тогда что непонятно?
Обмен сообщениями приложений , скриптов на Lua, Python ,С
 
Цитата
A.T. написал:
Не соглашусь с Владимиром.
Мне вот написание робота на Lua совершенно не нужно. Но я здесь, чтобы написать коннектор на С++ и выдрать данные из квика с базу данных, где скрипт на T-SQL (это SQL Server) сам посчитает, а потом выдаст нужное в веб-интерфейсе через совсем уж редкий язык в Европе для web-а под названием ColdFusion (или CFML)/ Удобен он для написания веб-страниц.

Не верю я в роботов!
Вы на рынке деривативов не работали (на срочном) и не видели, как ГО поднимают и сделать ничего нельзя. Робот тупо встанет в сложный момент.
Только ручная торговля.


У меня задача только получить  данные из Квика. Через общую память, например. Хоть в файл для начала записать на C++ (потому что STL использую).
И получить данные самым быстрым, кошерным способом, то есть создавать технических нагромождений, я пока не могу. Не разобрался. Только вызывать код C из Lua, "приветы передавать", а надо наоборот, брать из Квика и писать в файл или общую память по конкретным тикерам.



И да. Не надо мешать в кучу все свои старомодные представление.
Есть интерпретируемые языки (типа javaScript и Python, Perl, PHP), а есть компилируемые.

Компилируемые в свою очередь подразделяются на настоящие, формирующие машинный код через компилятор, напрямую работающие в железом и процессором (по сути только C/C++ и Pascal/Delphi) и компилируемые в байт-код и выполняемые оберточной машиной, бинарным интерпертатором, по сути (Java, .NET, или вон Lua).

Вот и вся классификация. В 21 веке это так. И будет так. PDP можно и почти все ранее 1990-х можно выкинуть.


На последок надо бы различать язык Ассемблера (по сути это именно язык для человека) и собственно машинный код. Писать и править программы можно прямо в машинном коде, потому что есть двоякие ситуации, когда ассемблер можно по разному транслировать в машинный код.
И сам машинный код на самом деле тоже интерпретируется процессором, почти как обычный текст, на конверее, байт за байтом. Но это уже детали железной реализации. Это уже сделано на заводе, так сказать.

Коротко, для новичков, так сказать.
Вы забыли упомянуть микрокоманды. Это то, что всегда исполняется за один такт. Все команды фактически реализованы в виде функций на микрокомандах. Но это не важно.
---------------------------
теперь про Ваши хотелки.
Если Вы не собираетесь выполнять автоматом торговые операции, а надо лишь забрать данные из таблиц ( в том числе и доску опционов, которую на луа не получите), то Вам не надо луа. Вам надо использовать DDE
Полагаю это именно то, что Вам надо.
Раньше , когда луа не было я так и делал.
Сейчас тоже у меня есть в арсенале DLL, то это надо лишь для опционов.
Но опционами не торгую  поэтому DLL на запасном пути стоит.
Выгрузка библиотек
 
Цитата
Вадим Никитин написал:
И ещё.

Допустим, сделали библиотеку.
Запустили скрипт.
Библиотека создала потоки, выделила ресурсы, ещё там чего сделала.
Скрипт упал.
Всё это добро осталось висеть.
Как его удалить - никак.

<irony>Конечно, можно сохранить куда-то при создании хэндл каждого ресурса, а после специальной библиотекой вычищать всё это</irony>

Это к чему.
Смотрю тему уже месяц обсуждают.
Действительно ли перезапуск Квика так сложен, что стоит тратить на этот костыль столько времени? Тем более, что это будет крайне ненадёжное решение. Ведь по сути делается то, что не предусмотрено по дизайну, а это всегда ведёт к Undefined Behaviour. В итоге можно потратить ещё больше времени на отладку костыля, вместо того, чтобы разрабатывать торговую стратегию.

В револьвере шесть пуль, а ноги всего две:)
Вы немного неправильно рассказали взаимодействие процессов и DLL.
Но это не принципиально.
-----------------------------
Товарищи обсуждают эту тему потому , что учатся писать программы,
-------------------------------
Так как облаживаю DLL вне QUIK, то нет надобности выгружать dll из QUIK.
---------------------------------------
Поэтому написал эту функцию из спортивного интереса.
У меня на это ушло не более часа, чтобы уточнить некоторые моменты, разобраться и провести тесты,
------------------------------
Последний вариант не требует включение каких либо функций в выгружаемую библиотеку.
---------------------------
DLL занимает 39 Кбайт для обращения на C
и 44 Кбайта для обращения на Lua.


 
Фильтр дублей сигналов на сделку, Как реализовать?
 
Цитата
Сергей написал:
Здравствуйте!
Вопрос возник в том, что нормальная стратегия дает сначала сигнал на покупку, затем сигнал на продажу. Затем опять на покупку.
Но условия входа и выхода из сделок могут быть разные. И до появления сигнала на покупку, стратегия может выдать несколько сигналов на выход из сделки.

Как реализовать что-то вроде: Появился сигнал на покупку - стратегия записывает единичку в базу данных. Когда появляется сигнал на продажу, стратегия проверяет, есть ли в базе данных единичка или нет. Если есть, то выдает сигнал на продажу, а в базу записывает ноль.

Когда появляется сигнал на покупку, стратегия проверяет, что записано в базе. Если единица, то молчит. Если ноль, то выдает сигнал на покупку и пишет в эту ячейку единицу.

Как это можно сделать, подскажите пожалуйста. Я недавно начал LUA изучать, пока ворох вопросов копится.
Для этого надо запоминать предыдущий сигнал и в зависимости от его значения формировать новый.
-------------------------------
Т е если предыдущая позиция long( короткие позиции не используются), то формируем сигнал продать
----------------------------------------
если предыдущая позиция вне рынка ( короткие позиции не используются),  то формируем сигнал купить.
Выгрузка библиотек
 
Сделал функцию выгрузки DLL c вызовом на С.
---------------------------
Можно с помощью API C for Lua сделать обертку для любой версии Lua
-----------------------
Есть вариант для Lua5.3  ничего писать на Си не надо.
--------------------------------------
Кому надо, стучите в личку.
Тест. Данные в другое приложение.
 
и еще..
Вы можете использовать в  категориях "клиент-сервер"
[*]Каналы передачи данных Pipe
[*]Каналы передачи данных Mailslot
Тест. Данные в другое приложение.
 
Цитата
A.T. написал:
nikolz , Вы можете объяснить следущее.
Я скачал книгу Programming in Lua, разбираюсь.
Как понимаю, она подойдет и для QLua.

Грубо говоря, Lua это такой встраеваемый скриптовой язык вообще. То есть любой разработчик, кому надо прикурутить к своей среде (хоть к игре, хоть самописный Excel какой, хоть тот же терминал Quik) может встроить Lua, чтобы пользователи писали скрипты, выполняемые в этой среде.
На C пользователи  писать не могут, потому что потребуется компилятор и какое-то межпроцессное взаимодействие и вот это всё.
Поэтому взяли Lua. Могли бы взять Python или javaScript с тем же результатом, не важно.

Но Lua в данном смысле, выполняется совместно в оновным экзешником программы. В квиком в данном случае.


Мне надо написать свою простую С++ программу, которая бы брала каким-то образом данные из Lua-квика и перегоняла их (попутно преобразовывая) в Insert/Select запросы в базу данных на SQL Server. (ODBC, не важно, это уже моя задача).

Я технически не понимаю, как будет работать этот "мост" Qlua -- и моя программа на С.

Я мыслю  в категориях "клиент-сервер".
То есть что должно быть в итоге.

Пользователь вручную(!) запускает в квике некий Луа-скрипт, который каким-то образом (каким?) открывает шлюз, (открывает хедл, слушает порт, открывает общую память, не знаю..., что-то в этом роде)

Я моя программа к нему подцепляется и спрашивает данные, вызвает функции.
То есть это программа-клиент


Как этот мост в этом скрипте Lua выглядит? Какие функции в том скрипте прописать, что в скрипте делается технически для клиент-серверного взаимодействия?

И я в принципе не правильно представляю.
Какую главу в той книге тогда читать? Очень скудные в книге примеры.
QLua - это библиотека функций для взаимодействия с терминалом и сервером брокера на Lua.
-----------------
т е язык Lua. Книга подойдет.
===========================  
Вы можете написать сервер на луа, а клиента на СИ .
======================
В любую программу на СИ можно встроить VMLua - виртуальную машину луа. Это программная модель вычислителя со стековой структурой регистров.
Тест программы на луа  при его загрузки в VMLua компилируется в байт-код - это язык VMLua. Байт-код разбирается далее на поле команды(операции) и поля операндов
Каждая команда(операция) исполняется функцией, которая написана на СИ.
Есть API C for Lua, который позволяет писать свои функции на СИ для VMLua и таким образом расширять возможности с быстродействием СИ.
QLUA - это и есть такая библиотека на СИ.
========================
Сервер на Lua выглядит очень просто.
Для этого используют  https://lunarmodules.github.io/luasocket/
----------------------------
LuaSocket - это библиотека расширений Lua, состоящая из двух частей: ядра C, обеспечивающего поддержку транспортных уровней TCP и UDP,
и набора модулей Lua, добавляющих поддержку функциональности, обычно необходимой приложениям, работающим с Интернетом.



 
Выгрузка библиотек
 
Цитата
Alexander написал:
Цитата
nikolz написал:
Удачная компиляция dll, хотя тест запущен как и во втором случае, но после вызова Вашей функции вызвана моя функция выгрузки dll.
А хэндл для выгрузки DLL, которая выгружает основную, она как по имени получает?
Если мой тест Вам понятен и это то, что Вам нужно, то могу выложить свою dll для пробы.
Скажу сразу, что делаю для Lua5.3, так как у меня QUIK 8.7.
Выше не ставлю так как все что выше пока не устраивает меня.
Выгрузка библиотек
 
Alexander,
Выкладываю картинки теста выгрузки Вашей dll.
На каждой картинке Большое окно - это Ваша dll в IDE
В нижней части слева  этого окна показан результат сборки этой dll
-----------------
В малом окне справа - это тест на луа
В нем вызывается ваша функция и далее стоит бесконечный цикл, который не дает завершить тесту.
-----------------------
Удачная компиляция dll при пассивном тесте (тест не запущен)


Ннеудачная компиляция dll, так как тест запущен и он блокирует dll.


Удачная компиляция dll, хотя тест запущен как и во втором случае,
но после вызова Вашей функции вызвана моя функция выгрузки dll.
 
Выгрузка библиотек
 
Цитата
Alexander написал:
Цитата
nikolz написал:
Я Вроде вам написал, что сделать. Вы сделали? Какой результат?Если не выгрузилась, то скажу что делать дальше.
Что ещё попробовать?
В свободное время протестирую Вашу dll (приведенную Выше) и напишу Вам результат.
------------------------
Могу выложить готовую dll для выгрузки вашей библиотеки .
Нужно создать робота на QPILE. ( за оплату ), Кто сможет сделать робота сканер по RSI ?
 
напишите в личку цену, за которую надо сделать.
Выгрузка библиотек
 
Alexander,
У меня все это работает.
Но если Вы будете сами выдумавать а не делать ровно то что я написал, то не вижу смысла Вам помогать.
Выгрузка библиотек
 
Цитата
Alexander написал:
Такой прокси вызов функций из основной DLL, как описал выше так же можно организовать и по другому, т.е. не возвращая адрес нужной функции в скрипт с последующим вызовом функции через переменную, получившую адрес этой функции. А можно вызывать функции как обычно через имя модуля.имя функции, но эти функции надо сделать прокси-функциями, т.е они должны принимать все нужные параметры для вызова, а потом через переменную указатель вызывать нужную функцию из основной DLL, передавая ей эти параметры обычной функции C. Но это просто к слову. Так не стал, хотя разницы нет. Всё равно же результат никакой.
Я Вроде вам написал, что сделать. Вы сделали? Какой результат?
Если не выгрузилась, то скажу что делать дальше.
Страницы: Пред. 1 ... 10 11 12 13 14 15 16 17 18 19 20 ... 72 След.
Наверх