nikolz написал: Удачная компиляция dll, хотя тест запущен как и во втором случае, но после вызова Вашей функции вызвана моя функция выгрузки dll.
А хэндл для выгрузки DLL, которая выгружает основную, она как по имени получает?
Если мой тест Вам понятен и это то, что Вам нужно, то могу выложить свою dll для пробы. Скажу сразу, что делаю для Lua5.3, так как у меня QUIK 8.7. Выше не ставлю так как все что выше пока не устраивает меня.
Alexander, Выкладываю картинки теста выгрузки Вашей dll. На каждой картинке Большое окно - это Ваша dll в IDE В нижней части слева этого окна показан результат сборки этой dll ----------------- В малом окне справа - это тест на луа В нем вызывается ваша функция и далее стоит бесконечный цикл, который не дает завершить тесту. ----------------------- Удачная компиляция dll при пассивном тесте (тест не запущен)
Ннеудачная компиляция dll, так как тест запущен и он блокирует dll.
Удачная компиляция dll, хотя тест запущен как и во втором случае, но после вызова Вашей функции вызвана моя функция выгрузки dll.
nikolz написал: Я Вроде вам написал, что сделать. Вы сделали? Какой результат?Если не выгрузилась, то скажу что делать дальше.
Что ещё попробовать?
В свободное время протестирую Вашу dll (приведенную Выше) и напишу Вам результат. ------------------------ Могу выложить готовую dll для выгрузки вашей библиотеки .
Alexander написал: Такой прокси вызов функций из основной DLL, как описал выше так же можно организовать и по другому, т.е. не возвращая адрес нужной функции в скрипт с последующим вызовом функции через переменную, получившую адрес этой функции. А можно вызывать функции как обычно через имя модуля.имя функции, но эти функции надо сделать прокси-функциями, т.е они должны принимать все нужные параметры для вызова, а потом через переменную указатель вызывать нужную функцию из основной DLL, передавая ей эти параметры обычной функции C. Но это просто к слову. Так не стал, хотя разницы нет. Всё равно же результат никакой.
Я Вроде вам написал, что сделать. Вы сделали? Какой результат? Если не выгрузилась, то скажу что делать дальше.
Владимир написал: меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.
Все эти параметры определяются выше
function Window:InsertValue(id,value) value=tostring(value) if value==nil then return end rows,columns=GetTableSize(self.hID) i=1 j=1
while (i <= columns) do j=1 while (j <= rows) do x=GetCell(self.hID, j, i) if x~=nil then if x["image"]==id then SetCell(self.hID, j+1, i,value) end end
j=j+1 end i=i+1 end
end
Зачем Вы обходите встю таблицу по столбцам и строкам. Вы разве не знаете в каком столбце у вас id? ---------------------- Если у вас инструменты не гуляют произвольно по строкам таблицы, то создайте для них table[seccode] в которой запишите номера строк. В итоге Вы просто будете выбирать из этой table номер строки инструмента по его seccode.
А по другому эту проблему никак не решить?
я не использую такие таблицы в скриптах, поэтому лень писать тест. Если выложите работающий скрипт с Вашим вариантом поиска ячейки я скажу как исправить, либо соглашусь с Вами , что жрет.
попробуйте в dll ,которую надо выгрузить в функции WINAPI DllMain(HINSTANCE hinstDLL ... после case DLL_PROCESS_ATTACH: вставить DisableThreadLibraryCalls(hinstDLL);
Владимир написал: меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.
Все эти параметры определяются выше
function Window:InsertValue(id,value) value=tostring(value) if value==nil then return end rows,columns=GetTableSize(self.hID) i=1 j=1
while (i <= columns) do j=1 while (j <= rows) do x=GetCell(self.hID, j, i) if x~=nil then if x["image"]==id then SetCell(self.hID, j+1, i,value) end end
j=j+1 end i=i+1 end
end
Зачем Вы обходите встю таблицу по столбцам и строкам. Вы разве не знаете в каком столбце у вас id? ---------------------- Если у вас инструменты не гуляют произвольно по строкам таблицы, то создайте для них table[seccode] в которой запишите номера строк. В итоге Вы просто будете выбирать из этой table номер строки инструмента по его seccode.
в Scite написан скрипт на луа, в которой читаются данные из QUIK т е тест передачи данных из приложения QUIK в приложение LUA53 в котором исполняется этот скрипт. Тест выводит эти данные в окно реадактора SCiTe.
как понимаю. Что за nkthread ? Это для Lua? Он-то и мутит Shared memory, отсюда такая скорость, тут очевидно.
Что за "тест" в SciTE? В смысле мини-скрипт на Lua?
Что за мутный SciTE? Это именно редактор или IDE внутри которой что-то еще запущено?
Чем плох Notepad++, обычный Notepad или простой и понятный Emacs ?
nkthread - это моя библиотека дополнительных функций ( типа QLUA) В ней много чего есть в том числе и многопоточность для луа и передача данных в другие приложения и вызов в луа функций СИ из сторонних dll .
A.T. написал: Начнем с того, что Candle не может Exist. Оно может только Exists. Поэтому первая и очевидная ошибка для пишущего программиста, о которой выясняется только наступив на грабли.
Это к уровню знания английского и камень в огород разработчиков.
Второе и самое главное. Можно привести простой(!!!) - это ключевое слово - простой и очевидный пример. Кто нибудь, пожалуйста.
Хочу написать что-то вроде
Код
function OnCalculate (idx) -- вход
if CandleExist(idx) = = true then -- имеется в виду если свечка существует на графике, то есть ее какой-нибудь O(idx) ~= nil
бла - бла - бла расчеты с переменными
end -- мне даже else тут не нужен, вместо него или nil или молчаливый игнор свечки
end
Всё. То есть просто отсеивать ошибку не существования свечки на графике с галкой "Показывать пустые интервалы". Пользователя бывают дятлы.
Без интервалов, конечно, все прекрасно работает.
Симптом: Квик упорно игнорирует условие CandleExist(idx) и залезает во внутрь бла-бла и как итог появляется ошибка с красным крестом attempt to perform arithmetic on a nil value, чего быть не должно. Смысл только в подавлении этой ошибки наименьшим фильтром и геморроем для программиста. Вопрос только в этом. В документации какой-то ад. Хочу простой игнор свечки по простому условию.
Не работающий пример из примера документации:
Код
Settings = {}
Settings.Name = "SimpleMA"
Settings.mode = "C"
Settings.period = 5
Settings.str_field = "STRING field"
function dValue (i,param)
local v = param or "C"
if v = = "O" then
return O(i)
elseif v = = "H" then
return H(i)
elseif v = = "L" then
return L(i)
elseif v = = "C" then
return C(i)
elseif v = = "V" then
return V(i)
elseif v = = "M" then
return (H(i) + L(i))/ 2
elseif v = = "T" then
return (H(i) + L(i) + C(i))/ 3
elseif v = = "W" then
return (H(i) + L(i) + 2 * C(i))/ 4
else
return C(i)
end
end
function Init ()
return 1
end
function OnCalculate (idx)
if CandleExist(idx) then -- добавляю тут это и намеренно делаю пустые интервалы в квике
local per = Settings.period
local mode = Settings.mode
local lValue = iValue
if idx > = per then
local ma_value = 0
for j = (idx - per) + 1 , idx do -- и он все равно лезет в эту ветку
ma_value = ma_value + dValue(j, mode)
end
return ma_value/per
else
return nil
end
end
end
Опыт программирования именно на Lua - меньше недели. C/C++ и C# знаю хорошо.
Спасибо.
Напишите , что Вы хотите делать русскими словами, напишу, как это сделать в индикаторе на луа.
Сегодня система QUIK на отправленную транзакцию выдала ошибку "Order depth should be positive" . Все предыдущие транзакции с такими же параметрами успешно исполнялись. Язык QUIK - английский.
Подскажите пожалуйста, что значит данная ошибка?
Вадим Никитин , Вы получили это сообщение, в колбеке или в окне сообщений.
OnTransRepley и OnOrder Приходят многократно, но ПЕРВЫМ всегда приходит первый OnTransReple В нем нет номера заявки потому что на еще не пришла с сервера биржи Остальные сигналы приходят как угодно но они не первые.
nikolz написал: так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера.
тоже нет, ответ на транзакцию содержит номер заявки. QUIK не может его знать, только биржа его может сообщить, значит это ответ биржи, а не сервера брокера.
Добрый день, мы с Вам говорим о разном. Вы говорите о OnTransRepley в котором есть номер заявки. ------------------------------ Я говорю о OnTransRepley, в которых нет номерf заявки. Эти сигналы всегда приходят раньше onOrder. Так как ответ от биржи еще не пришел. --------------------------- Именно этот ответ всегда приходит раньше Именно его я и использую для фиксации момент выставления заявки. -------------
более того, ответ на транзакцию OnTransRepley всегда приходит первым, так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера. Я именно в OnTransRepley ловлю исполнение транзакции на выставление заявки всегда до прихода onOrder.
Да, если ответ на транзакцию и заявка пришли вместе.
Вы невнимательно читаете. Специально для Вас вопрос был такой: 1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ?? ------------------ Читайте внимательно в вопросе время отсчитывается от отправки , а не от прихода. --------------------- Прочитали, теперь снова напишите свой ответ на данный вопрос.
Alexey написал: 1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ?? Нет. если Вы не в дата центре.
Вадим Никитин написал: Если нужна какая-то ещё информация, то могу попробовать предоставить, если это будет возможно. Но судя по всему на форуме такой ошибки ещё не было.
полагаю, что это ошибка с биржи. Что бы разобраться надо ее поймать и потом выложить скрипт и скрип экрана со стаканом
Вадим Никитин написал: Если перевести ошибку, то да, смысл может быть такой.
Но цена была равна лучшей заявке на продажу, и встречные завки в стакане присутствовали.
И как можно выставить заявку вне очереди, тем более по одному из самых ликвидных фьючерсов CNY-6.23?
Возможно глюк системы, но хотелось бы всё-таки уточнить у разработчиков в чём смысл данного сообщения и в каких случаях QUIK может его выдавать, потому как в английском интерфейсе он выдаёт одни и те же сообщения на разные ошибки транзакций?
Все возможно, но кроме текста сообщения Вы ничего конкретного не выложили. Лишь Ваше убеждение, что у Вас все правильно.
АндрейКД, Дам Вам бесплатный совет. ---------------------- Если действительно желаете научиться писать для КВИКА скрипты на луа то Вам надо: -------------------- 1) Изучить язык программирования Луа . Те проштудировать книжку и сделать кучу примеров без привязки к QUIK. ----------------------- 2) Изучить функции библиотеки QLUA. Проштудировать документа документацию на QLUA. ------------------------- 3) Научиться писать индикаторы и скрипты на луа с использованием библиотеки QLUA. ----------------- Вы стали сразу что-то писать. Поэтому и не понимаете.
Alexander, Добрый день, Объясняю как это сделать. ---------------------- 1) Вам надо написать отдельную dll, в которой одна функция - выгрузить dll по ее имени ------------------------- 2) в этой функции вам надо найти хендл выгружаемой dll и выгрузить ее столько раз, сколько ее вызывали до этого. --------------------- 3) При сборке dll, которую Вы будете в дальнейшем выгружать, вам надо отключить оповещение о вызове этой dll ---------------- И будет вам счастье.
Delv написал: И как продвигается? Пока приходится использовать старый Quik для такой отладки. А какие другие варианты есть??? Не отлаживать dll?
Отлаживаю DLL вне QUIK. В чем пролема?
Никогда не пробовал отлаживать dll для Quik вне Quik. Даже в голову такое не приходило. Но звучит интересно. Поделитесь опытом, как там и что.
Рассказываю кратко. -------------------- DLL для скрипта Луа состоит из функций C и обертки для вызова этих функций из Луа. -------------------------------- Можно делать - мухи отдельно, котлеты отдельно. ----------------------------- Можно сделать функцию интерфейса вызова функций С из луа и не делать оберток вообще. --------------------------------- Но делают обычно все в одну кучу, т е пишут функцию на С с интерфейсом для Луа и внутри нее реализацию алгоритма на СИ. Этот вариант отлаживается путем создания тестового скрипта на Луа с вызовом в нем функций из DLL. ============================= Я делаю это в редакторе SciTe, который написан на луа и имеет встроенные надстройки для вызова и компиляции скриптов Луа. ---------------------- При этом в функциях СИ можно ставить контрольную печать для любых переменных СИ и они будут отображаться , так же как и печать переменных Луа, в окне вывода SciTe. Т е можно выводить состояние любых переменных Луа и СИ и даже ASM в окно редактора SCITE. ------------------------- Кратко все.
МихаилКа написал: Доброго времени суток! Подскажите, пожалуйста, есть ли возможность видеть признак торгуемости актива в шорт именно в таблице Текущие торги? Нормальная ручная торговля, просмотр графиков, постановка заявок проходят из этой таблицы, хотелось бы не искать инструмент в другой таблице Купить/Продать, а сразу видеть признак в Текущих торгах.
это зависит от брокера. Шорт - это кредит бумагами у брокера . Если его клиенты этими бумагами не торгуют, то он вам их и не даст. Брокер ничего своего в долг не дает. Поэтому просто спросите у брокера даст он Вам в долг эти бумаги или нет и сколько это будет стоить. По закону это должно быть в регламенте брокера. Вы регламент брокера внимательно читали?
Александр Клименко написал: Здравствуйте. Столкнулся с проблемой отладки кода простенького индикатора. Без данных брокера отладить не представляю как. Quik - 10 Операционка - w7х64.
decoda не работает.
Кто и что может посоветовать толкового?
На демо счете все отлаживается без проблем используйте лог файл.
muyuyu написал: Робот должен усреднять позицию в 1,5 раза после покупки акции в случае снижения на 1% и продавать по ТП 33 (все цифры назначаются в параметрах). Вход авто или ручной.
Можно без бла-бла-бла выложить на форуме, или в личку или файлообменник тех задание, бюджет и сроки. ------------------------ Без обид, но угадывать Ваши хотелки бесплатно нет желания.
Добрый день, Для контроля реального времени прихода сделок с биржи синхронизирую компьютер с сервером точного времени. Не удается получить погрешность менее 20 ms.
Майкрософт декларирует возможность 1 ms. ---------------- Если кому-то это удалось, подскажите как Вы это достигли.
Добрый день, Неоднократно на форуме интересовались передачей данных из QUIK в другое приложение(процесс). Есть много способов. Наиболее универсальным является file mapping Этот метод позволяет обмениваться данными практически любого объема. Использую этот метод не только для QUIK ------------------ В названии метода есть слово файл. Уверен, что многие скривятся и скажут, что метод медленно работает. А вот и нет. . --------------------------------- Что нам рассказывает об этом методе Майкрософт: -------------------------- Это объединение содержимого файла с частью виртуального адресного пространства процесса. Система создает объект сопоставления файлов (также известный как объект раздела) для поддержания этой связи. Просмотр файла - это часть виртуального адресного пространства, которую процесс использует для доступа к содержимому файла. Сопоставление файлов позволяет процессу использовать как случайный ввод-вывод (I / O), так и последовательный ввод-вывод. Это также позволяет процессу эффективно работать с большим файлом данных, таким как база данных, без необходимости отображать весь файл в памяти. Несколько процессов также могут использовать файлы, сопоставленные с памятью, для обмена данными.
Процессы считывают данные и записывают в файловое представление, используя указатели, точно так же, как они делали бы с динамически выделяемой памятью.
Использование данного метода повышает эффективность, поскольку файл находится на диске, а представление файла - в памяти.
===========================
Тест для измерения задержки передачи данных из скрипта QUIK в приложение.
скрипт Теста в SciTe:
Код
paths = "D:/nkarray/"
package.cpath =paths.."?.dll;"
require"nkthread"
----------------------
local T=0; while true do local T1,dt,hms,s,num,HMS,ss=nkmx.gsm(0,T); if T1 then T=T1; print(0.1*dt,hms,s,num,HMS,ss); end end
фрагмент скрипта в QUIK:
Код
function OnAllTrade(t)
local c,s=t.class_code,t.sec_code; local z=ds[c..s]; local num=t.trade_num;
if z then local d=z[1]; local n=z[2]; local f=z[3];
local Ti=t.datetime; local HMS=(60*(60*Ti.hour+Ti.min)+Ti.sec)+0.001*Ti.ms;
local D=os.date("*t"); local hms=60*(60*(D.hour-shH)+D.min)+D.sec-shS;
local dt= hms-HMS+n;
local size=d:Size();
local T1=d:T(size); local HMS1=(60*(60*T1.hour+T1.min)+T1.sec)+0.001*T1.ms;
if HMS==HMS1 and z[4]~=num then
local dt1=0.01*math.floor(100*dt); if 0>dt then dt=0 end count=count+1; count1=count1+1;
local m=math.floor(dt)+1;
local ss=tostring(hms)..","..tostring(s)..",num="..tostring(num)..",size="..tostring(size)..",HMS="..tostring(HMS)..",dt="..tostring(dt1)..",n="..tostring(n)..",m="..tostring(m)..",clock="..(os.clock()-clockOS);
nkmx.ssm(0,hms,s,num,HMS,ss); -- Log:write(ss.."\n"); Log:flush();
if sts[m] then sts[m]=sts[m]+1; else sts[m]=1 end
end
z[4]=num;
end
end
первое число в стоке - задержка передачи параметров из QUIK в приложение в мкс. -------------------- Резюме: задержка передачи методом file mapping параметров из QUIK в другое приложение составляет 0.0000001 сек.
awkozlov написал: Пытаюсь получить из таблицы "Клиентский портфель [SUR]" данные из графы << Плечо >> по строке Т2 Использую для этого код:
Код
local PortfolioInfoExTable = getPortfolioInfo Ex (gFIRMID, gCLIENT_CODE, 2 ) -- https://luaq.ru/getPortfolioInfoEx.html
local zPortfolio_value = PortfolioInfoExTable.portfolio_value -- Стоимость портфеля
local zCash_leverage = PortfolioInfoExTable.cash_leverage -- Плечо
message (tostring(zPortfolio_value) .. '\n\n' .. tostring(zCash_leverage))
Но значение плеча zCash_leverage нулевое, хотя я вижу этот размер плеча явно в таблице "Клиентский портфель [SUR]" в строке Т2. При этом мне успешно показывается стоимость портфеля - zPortfolio_value. У меня такое ощущение, что в синтаксисе команды getPortfolioInfoEx должно быть ещё указание на валюту т.к. она указана в титуле окна. На самом деле мне нужна графа <<Прибыль/Убытки>>, но для упрощения вопроса спрашиваю про графу <<Плечо>>. Как мне получить размер Плеча или Прибыль/Убыток с начала дня по спотовому рынку?
В документации сказано: Функция возвращает таблицу Lua с параметрами таблицы «Клиентский портфель».
Дополнительно возвращаются следующие параметры:
№
Параметр
Тип
Описание
1
init_margin
STRING
Значение начальной маржи. Заполняется для клиентов типа «МД»
Нач.маржа
2
min_margin
STRING
Значение минимальной маржи. Заполняется для клиентов типа «МД»
Мин.маржа
3
corrected_margin
STRING
Значение скорректированной маржи. Заполняется для клиентов типа «МД»
Скор.маржа
4
client_type
STRING
Тип клиента
Тип клиента
5
portfolio_value
STRING
Стоимость портфеля. Для клиентов типа «МД» возвращается значение для строк с максимальным сроком расчётов limit_kind
Стоимость портфеля
6
*start_limit_open_pos
STRING
Лимит открытых позиций на начало дня
ЛимОткрПозНачДня
7
*total_limit_open_pos
STRING
Лимит открытых позиций
ЛимОткрПоз
8
*limit_open_pos
STRING
Планируемые чистые позиции
ПланЧистПоз
9
*used_lim_open_pos
STRING
Текущие чистые позиции
ТекЧистПоз
10
*acc_var_margin
STRING
Накопленная вариационная маржа
НакопВарМаржа
11
*cl_var_margin
STRING
Вариационная маржа по итогам промклиринга
ВарМаржаПромклир.
12
*opt_liquid_cost
STRING
Ликвидационная стоимость опционов
ЛиквСтоимОпционов
13
*fut_asset
STRING
Сумма оценки средств клиента на срочном рынке
СумАктивовНаСрчРынке
14
*fut_total_asset
STRING
Сумма оценки собственных средств клиента на фондовом и срочном рынках
ПолнСтоимостьПортфеля
15
*fut_debt
STRING
Текущая задолженность на срочном рынке
ТекЗадолжНаСрчРынке
16
*fut_rate_asset
STRING
Достаточность средств
Дост. Средств
17
*fut_rate_asset_open
STRING
Достаточность средств (под открытые позиции)
Дост. Средств (ОткрПоз)
18
*fut_rate_go
STRING
Коэффициент ликвидности ГО
КоэффЛикв ГО
19
*planed_rate_go
STRING
Ожидаемый коэффициент ликвидности ГО
Ожид. КоэффЛикв ГО
20
*cash_leverage
STRING
Cash Leverage
Cash Leverage
21
*fut_position_type
STRING
Тип позиции на срочном рынке. Возможные значения
«0» – нет позиции;
«1» – фьючерсы;
«2» – опционы;
«3» – фьючерсы и опционы
ТипПозНаСрчРынке
22
*fut_accured_int
STRING
Накопленный доход с учётом премии по опционам и биржевым сборам
НакопДоход
23
rcv1
STRING
Норматив покрытия риска 1. Рассчитывается как разница параметров «Стоимость портфеля» и «Начальная маржа». Для клиентов типа «МД» и «МД+»
НПР1
24
rcv2
STRING
Норматив покрытия риска 2. Рассчитывается как разница параметров «Стоимость портфеля» и «Минимальная маржа». Для клиентов типа «МД» и «МД+»
НПР2
* - параметр заполняется для клиентов с настроенной единой денежной позицией и для клиентов срочного рынка без единой денежной позиции
т е параметры с 6 по 20 заполняются лишь для клиентов с настроенной единой денежной позицией и для клиентов срочного рынка без единой денежной позиции если Вы не такой клиент, то будет ноль.
cudi написал: [img]file:///C:/Users/family/Desktop2.png[/img] теперь после повторного соединения его уже нет
Надо не прикреплять файл, загружать картинку с компьютера, иначе плохое качество ----------------------- Посмотрите внимательно у вас нет спроcа и предложения (bid, offer) по двум валютам 2 и 3 строка поэтому результат пустой. В ТТП нули, т е валюты либо не торгуются либо вы их не выбрали в заказе данных Нечем торговать.
nikolz написал: замечу два момента.1) если речь идет о фильтрации обезличенных сделок, то ваш вариант неправильный. Так как при большом числе сделок вы будете долго искать.На основе своих исследований данной проблемы могу сказать, что задача решается проще. Повторная сделка приходит всегда следом за первой сделкой.Но особенность в том, что следующая сделка по данному инструменту это не следующая сделка в потоке сделок после первой.-----------------------2) Вы зря не хотите реализовать через файлы. Это просто и быстро. Более того, такие методы как Pipe и mailslot тоже используют запись чтение файлов. Поэтому когда набьете руку (голову) на файлах ,то легко решите задачу с Pipe или mailslot и им подобным.
1. Я уже говорил что мне надо получать сделки которые прилетают в функцию OnTrade то есть они не обезличенные, так что с количеством проблем нет. Но это не главное... 2. Я не против сделать через файлы для начала, а может и навсегда. Но даже я понимаю что через память быстрее :) Но мне нужен внятный пример в C++ коде. Потому что сам я прогер слабенький, мягко говоря.
А тут столько блин специалистов и никто не может пример написать. Все жадные до кода :)
1) Для OnTrade, OnOrder,onStopOrder, OnTransReply вообще нет проблем с повторением. ------------------------------------ Но так как это колбеки, то У Вас проблема в алгоритме обработки. ----------------------------------- Если хотите конкретной помощи, то задавайте конкретные вопросы и выкладывайте совй скрипт. Иначе будете бла бла бла с Владимиром. Он Вам будет хвалится что все решил и уговаривать писать на "чистом" Луа, а сам тайно использует dll QLUA, которая написана на C. ____________________________ 2) Вот даже вы ошибаетесь. Файлы они в памяти, И реально Вы и будете передавать через память, если это короткие сообщения и разрешен параллельный доступ к файлам. Рекомендую Вам не гадать, а написать короткий тест и измерить скорость обмена через файлы. ----------------- Повторю еще раз. Хотите помощи - пишите сами получайте ошибки выкладывайте свое произведение и задавайте вопросы. Примеры как писать читать файлы на C вы найдете в интернете. Зачем вам C++, если для луа надо писать на С? С++ еще сложнее чем С. Вы хоть понимаете, что такое классы в программировании? Если нет или Вы пишите без них то Вам С++ не нужен.
Владимир, На форуме я выкладывал пример скрипта в котором любые функции из dll на СИ я вызываю буз использования C fo Lua. --------------- Для этого я написал очень маленькую dll . если Вы крутой программист то напишите аналогичную, а не рассказывайте байки
Владимир написал: повторная сделка не только не всегда приходит следом за первой сделкой, они ещё и приходят "крест-накрест собачьим шагом", особенно красиво это выглядит, если заявка реализуется в десяток-другой сделок. Но это не Ваш уровень - я уже задолбался советовать Вам заняться чем-нибудь кроме программирования - вдруг Вы в какой-то области деятельности и в самом деле что-то соображаете.
Полагаю Вы все путаете. Есть повторение обезличенных сделок в колбеке onAllTrade Именно об этом я и написал. Проблема решается сравнительно просто, но Вы ее не решите. --------------------------- Получение исполненных сделок в OnTrade меня вообще не волнует. ------------------------ Есть повторение заявок onOrder Это вообще не проблема. ================== И кончайте размазывать сопли по экрану. Если хотите сравнить Вашу писанину с моей, то предлагаю напишите передачу параметров между процессами. Я это давно уже написал во всех вариантах Когда напишите то сравним