Михаил Филимонов (Все сообщения пользователя)

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

Страницы: 1 2 3 4 5 6 7 8 След.
Блокирование средств
 
Спасибо.
Короче, Биржа принуждает покупать их модуль Spectra IM
Блокирование средств
 
Цитата
Karina Dmitrieva написал:
Михаил Филимонов, см. на сайте Московской биржи "Надбавка, учитывающая валютный риск при расчете гарантийного обеспечения" ( https://www.moex.com/ru/derivatives/parameters.aspx ).

Покупка:
ГО = ГО покупателя - (РЦ - Цена сделки) * Стоимость шага цены / Мин шаг цены * (1 + R / 100)
Продажа:
ГО = ГО продавца + (РЦ - Цена сделки) * Стоимость шага цены / Мин шаг цены * (1 + R / 100)
где
РЦ - значение котировки последнего клиринга,
R - радиус валютного курса.
Прекрасно. А этот радиус транслируется Биржей, или только на сайте публикуется?
Блокирование средств
 
Цитата
Karina Dmitrieva написал:
На Срочном рынке МБ для фьючерсов, стоимость шага цены которых выражена в отличной от рубля валюте, также необходимо учитывать параметр "Радиус валютного курса".
Отметим, что в Рабочем месте QUIK расчет ГО для выставляемой заявки в форме ввода носит прежде всего информационный (предварительный) характер.
И признаем то, что расчет ГО для фьючерсов, использующих радиус курса иностранных валют, может быть, к сожалению, неточным.  
Спасибо, понятно.
А как взять (посчитать Радиус валютного курса)
Блокирование средств
 
Цитата
Karina Dmitrieva написал:
Михаил Филимонов, здравствуйте.

для акций  (в QUIK результат округляется в большую сторону с точностью до двух знаков):
«Объем» = «Цена» * «Количество» * «Размер лота»

для облигаций:  
«Объем» = «Количество» * («Цена» * «Номинал» / 100 + «НКД»)

Также надо учитывать сумму комиссии брокера и торговой системы с объема заявки (в QUIK это рассчитывается автоматически в соответствии с установленным алгоритмом, на форме ввода заявки выводится в поле справа и отображается в валюте расчетов по инструменту. Самостоятельно рассчитать не получится).

на Срочном рынке:
«Объем ГО» = «Количество контрактов» * «ГО покупателя / продавца» * («Стоимость шага цены» / «Размер шага цены»)
При этом при покупке/продаже бумаг выше/ниже расчетной цены «ГО покупателя /продавца» пересчитывается с учетом разницы расчетной цены и цены сделки:

Покупка выше расчетной цены:
«ГО покупателя / продавца» = («Цена сделки» – «Расчетная цена») +«ГО»

Покупка ниже расчетной цены:
«ГО покупателя / продавца» = «ГО» – («Расчетная цена» – «Цена сделки»)

В расчётную цену подставляется котировка клиринга.
Не валютных контрактах срочного рынка - не работает!
Блокирование средств
 
Большое спасибо, Карина!
Блокирование средств
 
Добрый день!

Как рассчитать сколько средств будет заблокировано ПЕРЕД отправкой заявки?  
Ошибка выставления ордера
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Михаил Филимонов.

Рекомендуем проверить статусы инструментов по классу SPBFUT в момент создания транзакции.
В таблицу текущих торгов добавьте параметры "Состояние сессии", "Статус торговли инструментом".
Если "Сессия" в состоянии "Закрыта" и/или "Статус торговли инструментом" будет "Не торгуется", то транзакция не выполняется по этой причине.
Добрый день!

Ищите ошибку на своей стороне, робот написан  3 года назад со всеми проверками
и прекрасно работал ДО ОБНОВЛЕНИЯ.

procedure TExpert.OnTick;
var
 PosSt: POS_STATE;
 PosEQ: integer;
 RemOrder: boolean;
 inVol, outVol, aZalog: Double;
begin
 if(StopTrading = false) then //false - expert work
 begin
   if((Settings.isSet = true) and (DllConn = true) and (QConn = true) and (WrongData.Res = false)) then
   begin
    if(CheckTime(RemOrder) = true) then
     begin
       if((ExpData.FutData.Session = 'открыта') and (ExpData.SpotData.Session ='открыта')) then
       begin
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Ошибка выставления ордера
 
Цитата
nikolz написал:
г файл содержимое самой заявки. Возможно оно искажается либо там nil.
Ок, выведу, но до обновления 3 года ошибок не было...
Где скачать TRANS2QUIK.dll x64 ? есть пример использования на delphi выставления заявки?
 
Цитата
bas написал:
Где скачать TRANS2QUIK.dll x64 ? есть пример использования на delphi выставления заявки?
procedure TExpert.SendOrder;
var
outStr, id, s: string;
res: long;
ErrCode: long;
ErrSize: Dword;
ErrStr: LPSTR;
begin
if(CheckFutPrice(f_price) = false) then
begin
  Mutex.Lock;
  try
    FTransBusy:= false;
  finally
    Mutex.Unlock;
  end;
    FmemoStr:= 'SendOrder: Не правильная цена в заявке ' + FloatTostr(f_price);
    Synchronize(UpdMemo);
  exit;
end;
FOrder:= 0;
FTransID:= GetTransID();
id:= UintToStr(TransID);
ErrCode:= 0;
ErrSize:= 0;
ErrStr:= nil;
Mutex.Lock;
try
  FTransBusy:= true;
finally
  Mutex.Unlock;
end;

case dir of
  BUY: s:= 'B';
  SELL: s:= 'S';
end;
outStr:= 'ACCOUNT=' + FutAccaunt + '; TYPE=L; TRANS_ID=' + id +
         '; CLASSCODE=' + ExpData.FutData.ClassCode + '; SECCODE=' +
         ExpData.FutData.SecCode + '; ACTION=NEW_ORDER; OPERATION=' + s +
         '; EXECUTION_CONDITION=KILL_BALANCE' + '; PRICE=' + FloatToStr(f_price) +
         '; QUANTITY=' + FloatToStr(Qnty) + ';';
res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
if(res <> TRANS2QUIK_SUCCESS) then
begin
  Mutex.Lock;
  try
    FTransID:= 0;
    FTransBusy:= false;
  finally
    Mutex.Unlock;
  end;
  FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' не отправлен.';
  Synchronize(UpdMemo);
end else
begin
  if((ExitOrder.Order > 0) and (dir = BUY)) then RemoveExitOrder();
  FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
  Synchronize(UpdMemo);
end;
end;
Ошибка выставления ордера
 
Да, и еще погрешность фунции засечки времени, кажется 16 мс., да и саму
ошибку       Указанная транзакция по указанному классу не найдена: "SPBFUT".
выдает ДЛЛ или терминал, это не мое.
Ошибка выставления ордера
 
Цитата
nikolz написал:
там где ошибки нет, время различается.
Конечно различается, ордер "слетал" на Биржу и вернулся ответ.

А где ошибка, то все происходит на локальном компе, так что время не показатель.

Обидно то, что 3 с лишнем года все работало как часы, а вот теперь появилась проблема.
Не знаю как устроен внутри Квик, но с МТ-5 постоянно "цапался" с разработчиками, как новый билд,
так вылезает какая-либо ошибка.  
Ошибка выставления ордера
 
Да, забыл сказать.
Ошибка проявляется в начале торгов после 10-00
Ошибка выставления ордера
 
Цитата
Andrey Golik написал:
Михаил Филимонов, добрый день.

Требуется более развернутая информация для изучения проблемы. Какая транзакция посылается, с какими параметрами. Т.е. ожидаем от Вас саму транзакцию, по которой получаете ошибку
Добрый день!
Транзакции посылает робот.
Пораметры такие

procedure TExpert.SendOrder;
var
 outStr, id, s: string;
 res: long;
 ErrCode: long;
 ErrSize: Dword;
 ErrStr: LPSTR;
begin
 if(CheckFutPrice(f_price) = false) then
 begin
   Mutex.Lock;
   try
     FTransBusy:= false;
   finally
     Mutex.Unlock;
   end;
     FmemoStr:= 'SendOrder: Не правильная цена в заявке ' + FloatTostr(f_price);
     Synchronize(UpdMemo);
   exit;
 end;
 FOrder:= 0;
 FTransID:= GetTransID();
 id:= UintToStr(TransID);
 ErrCode:= 0;
 ErrSize:= 0;
 ErrStr:= nil;
 Mutex.Lock;
 try
   FTransBusy:= true;
 finally
   Mutex.Unlock;
 end;

 case dir of
   BUY: s:= 'B';
   SELL: s:= 'S';
 end;
 outStr:= 'ACCOUNT=' + FutAccaunt + '; TYPE=L; TRANS_ID=' + id +
          '; CLASSCODE=' + ExpData.FutData.ClassCode + '; SECCODE=' +
          ExpData.FutData.SecCode + '; ACTION=NEW_ORDER; OPERATION=' + s +
          '; EXECUTION_CONDITION=KILL_BALANCE' + '; PRICE=' + FloatToStr(f_price) +
          '; QUANTITY=' + FloatToStr(Qnty) + ';';
 res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
 if(res <> TRANS2QUIK_SUCCESS) then
 begin
   Mutex.Lock;
   try
     FTransID:= 0;
     FTransBusy:= false;
   finally
     Mutex.Unlock;
   end;
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' не отправлен.';
   Synchronize(UpdMemo);
 end else
 begin
   if((ExitOrder.Order > 0) and (dir = BUY)) then RemoveExitOrder();
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
   Synchronize(UpdMemo);
 end;
end;

Код не менялся последние 3 года, при этом все работает, но в какой-то момент
"вылезает ошибка"
24.07.2024 22:56:38.595 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:56:38.788 --> Ордер CMH5 активен.
24.07.2024 22:58:03.051 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:03.121 --> Ордер CMH5 активен.
24.07.2024 22:58:03.124 --> Ордер CMH5 снят.
24.07.2024 22:58:03.422 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:03.636 --> Ордер CMH5 активен.
24.07.2024 22:58:04.637 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:04.690 --> Ордер CMH5 активен.
24.07.2024 22:58:04.762 --> Ордер CMH5 снят.
24.07.2024 22:58:05.459 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:05.623 --> Ордер CMH5 активен.
24.07.2024 22:59:40.786 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:59:40.899 --> Ордер CMH5 активен.
24.07.2024 22:59:40.904 --> Ордер CMH5 снят.
24.07.2024 22:59:42.773 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:59:42.915 --> Ордер CMH5 активен.
24.07.2024 23:01:01.164 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:01:01.246 --> Ордер CMH5 активен.
24.07.2024 23:01:01.284 --> Ордер CMH5 снят.
24.07.2024 23:10:37.043 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:10:37.121 --> Ордер CMH5 активен.
24.07.2024 23:10:38.512 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:10:38.621 --> Ордер CMH5 активен.
24.07.2024 23:10:38.637 --> Ордер CMH5 снят.
24.07.2024 23:10:52.165 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:10:52.337 --> Ордер CMH5 активен.
24.07.2024 23:11:22.658 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:11:22.783 --> Ордер CMH5 активен.
24.07.2024 23:11:22.783 --> Ордер CMH5 снят.
24.07.2024 23:11:22.986 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:11:23.204 --> Ордер CMH5 активен.
24.07.2024 23:12:02.133 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:12:02.211 --> Ордер CMH5 активен.
24.07.2024 23:12:02.258 --> Ордер CMH5 снят.
24.07.2024 23:12:02.570 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:12:02.804 --> Ордер CMH5 активен.
24.07.2024 23:13:27.394 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:13:27.456 --> Ордер CMH5 активен.
24.07.2024 23:13:27.581 --> Ордер CMH5 снят.
24.07.2024 23:13:27.940 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:13:28.190 --> Ордер CMH5 активен.
24.07.2024 23:13:30.893 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:13:31.018 --> Ордер CMH5 активен.
24.07.2024 23:13:31.033 --> Ордер CMH5 снят.
24.07.2024 23:15:02.263 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:15:02.510 --> Ордер CMH5 активен.
24.07.2024 23:35:25.642 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:35:25.781 --> Ордер CMH5 активен.
24.07.2024 23:35:25.863 --> Ордер CMH5 снят.
24.07.2024 23:44:31.012 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:44:31.324 --> Ордер CMH5 активен.
24.07.2024 23:44:31.512 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:44:31.637 --> Ордер CMH5 активен.
24.07.2024 23:44:31.637 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:44:31.637 --> Ордер CMH5 снят.
25.07.2024 10:00:18.501 --> SetEnterOrder: Ордер CMH5 отправлен.
25.07.2024 10:00:18.501 --> Ошибка:  Указанная транзакция по указанному классу не найдена: "SPBFUT".

Ошибка стала появлятся после обновления Квик
Ошибка выставления ордера
 
Добрый день, господа разработчики!
После обновления Квик до версии 11.3.1.2
Появилась ошибка (пранзакция посылается через trans2quik.dll)

24.07.2024 10:01:03.912 --> SetEnterOrder: Ордер CMM5 отправлен.
24.07.2024 10:01:03.912 --> Ошибка:  Указанная транзакция по указанному классу не найдена: "SPBFUT".
Мин.возм.цен. и Макс.возм.цен.
 
Цитата
Andrey Golik написал:
Михаил Филимонов, добрый день.

Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
Сколько ждать?
Как обычно лет 5?
Таблица "Клиентский портфель"
 
Финам, версия 11.0.0.92
Таблица "Клиентский портфель"
 
Добрый день!

Если оставить квик на ночь с включенным выводом по DDE, то на утро таблица "Клиентский портфель" - пустая
Классический арбитраж на * счете
 
Какой-нибудь ответ будет?
Классический арбитраж на * счете
 
Добрый день, Разработчики!

Почему в КВИК на Едином Брокерском Счете (Открытие) или Единая Денежная Позиция (Финам), при торговле
фьючерс против спота, учитывается только вариационная маржа фьючерсов, а цена акций не учитывается?

Продав фьючерс и купив акции (равные ноги по кол-ву акций), мы имеем дельта нейтральную позицию, т.е
при любом движении рынка (вверх или вниз) у нас должно быть приблизительно одинаковое кол-во свободных средств.

Почему это не так? .  
Мин.возм.цен. и Макс.возм.цен.
 
Цитата
Andrey Golik написал:
Михаил Филимонов, добрый день!

К сожалению, на данный момент конкретных сроков назвать не можем. Как только пожелание будет рассмотрено, мы оповестим Вас об этом в данной теме форума.
Добрый!
Хотя сегодня пятница 13 :)
Понятно, еще 5 лет ждать....
Мин.возм.цен. и Макс.возм.цен.
 
Цитата
Andrey Golik написал:
Михаил Филимонов, дело в том, что сокращенное название столбца транслирует шлюз. Соответственно название столбца в Вашей таблице будет зависеть от инструментов, которые в неё добавлены. В данном случае было обнаружено различие, так как для фондового рынка действительно на данный момент "цен.".  
Добрый день, Андрей!
Как скоро исполнится мое пожелание?
Мое прошлое пожелание уже 5 год остается в пожеланиях!  
Запуск экспорта по DDE из своего приложения
 
Добрый день!

Возможно?
Мин.возм.цен. и Макс.возм.цен.
 
Цитата
Andrey Golik написал:
Михаил Филимонов, разница "Мин. возм.  цена" и "Мин. возм. цен." возникает на разных рынках. Так, например, для  срочного рынка будет "Мин. возм. цена", а для фондового "Мин. возм.  цен.". Мы зарегистрировали пожелание, чтобы исправить различия.
При чем тут разные рынки?
В одной и той же таблице "вылезают" разные названия колонок!
Пропускная способность trans2quik.dll
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,  добрый день.

При повторении такой ситуации проверьте, пожалуйста, также таблицу транзакций в терминале - отобразится ли там отправленная транзакция?
Хорошо
Мин.возм.цен. и Макс.возм.цен.
 
Цитата
Михаил Филимонов написал:
Цитата
Andrey Golik написал:
Михаил Филимонов , здравствуйте!

Пришлите, пожалуйста, скриншот таблицы, в которой отображается "Мин. возм. цена" и её настройки ("Редактировать таблицу").
Эти изменения произвольно появляются, ка выскочат, так пришлю
Выскочили
Мин.возм.цен. и Макс.возм.цен.
 
Цитата
Andrey Golik написал:
Михаил Филимонов, здравствуйте!

Пришлите, пожалуйста, скриншот таблицы, в которой отображается "Мин. возм. цена" и её настройки ("Редактировать таблицу").
Эти изменения произвольно появляются, ка выскочат, так пришлю
Мин.возм.цен. и Макс.возм.цен.
 
Господа разработчики!
Поправьте, пожалуйста названия этих колонок в таблице "Текущие торги"
А то, в процессе работы эти колонки называются то Мин.возм.цен. и Макс.возм.цен.,
то Мин. возм. цена и Макс. возм. цена
Cкорректированное значение НРП1
 
Для покупки 40 лотов FEES требуется чуть больше 50 000 руб.
Cкорректированное значение НРП1
 
Добрый день!

Транзакции посылаются через trans2uik.dll
Каким образом могла возникнуть эта ошибка (достаточно средств для покупки 40 лотов Россети (FEES))?
Как расчитывается "Скорректированное значение НРП1" ?
Race condition в Trans2Quik.dll?
 
Цитата
nikolz написал:
Цитата
Михаил Филимонов написал:
 
Цитата
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
А сколько у Вас ядер на компе, если открываете 138 потоков?
Интересно, как долго потоки простаивают в ожидании доступа к ядру?
Ядер - 12
Не замечал простоя
Пропускная способность trans2quik.dll
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,  добрый день.

Просим уточнить, что в данном случае означает "заявка отправляется успешно"?
Речь идет об успешной отправке транзакции на сервер? Какой ответ получаете на эту транзакцию?
procedure TExpert.SendOrder;
var
 outStr, id, s: string;
 res: long;
 ErrCode: long;
 ErrSize: Dword;
 ErrStr: LPSTR;
begin
 if(CheckFutPrice(f_price) = false) then
 begin
   Mutex.Lock;
   try
     FTransBusy:= false;
   finally
     Mutex.Unlock;
   end;
     FmemoStr:= 'SendOrder: Не правильная цена в заявке ' + FloatTostr(f_price);
     Synchronize(UpdMemo);
   exit;
 end;
 FOrder:= 0;
 FTransID:= GetTransID();
 id:= UintToStr(TransID);
 ErrCode:= 0;
 ErrSize:= 0;
 ErrStr:= nil;
 Mutex.Lock;
 try
   FTransBusy:= true;
 finally
   Mutex.Unlock;
 end;

 case dir of
   BUY: s:= 'B';
   SELL: s:= 'S';
 end;
 outStr:= 'ACCOUNT=' + FutAccaunt + '; TYPE=L; TRANS_ID=' + id +
          '; CLASSCODE=' + ExpData.FutData.ClassCode + '; SECCODE=' +
          ExpData.FutData.SecCode + '; ACTION=NEW_ORDER; OPERATION=' + s +
          '; EXECUTION_CONDITION=KILL_BALANCE' + '; PRICE=' + FloatToStr(f_price) +
          '; QUANTITY=' + FloatToStr(Qnty) + ';';
 res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
 if(res <> TRANS2QUIK_SUCCESS) then
 begin
   Mutex.Lock;
   try
     FTransID:= 0;
     FTransBusy:= false;
   finally
     Mutex.Unlock;
   end;
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' не отправлен.';
   Synchronize(UpdMemo);
 end else
 begin
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
   Synchronize(UpdMemo);
 end;
end;

Соответственно выводится сообщение
FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
   Synchronize(UpdMemo);

А в pfTransReplyCB ничего не приходит и в самом терминале нет этой заявки...  
Сообщение об ошибке в trans2quik
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,  добрый день.

Уточните также версию Trans2QUIK.

В ответ на какую транзакцию приходят такие сообщения?
Есть возможность предоставить фрагмент кода с описанием функции pfTransReplyCB?
//--- Transaction callback ---
procedure pfTransReplyCB;
var
 i: integer;
 Child: TMDIChild;
begin
 for i:= 0 to MainForm.MDIChildCount - 1 do
 begin
   Child:= TMDIChild(MainForm.MDIChildren[i]);
   if(Child <> nil) then
   begin
     if(dwTransId = Child.Expert.TransID) then
     begin
       if(nTransactionResult = TRANS2QUIK_SUCCESS) then
       begin
         if(nOrderNum > 0) then Child.Expert.FOrder:= nOrderNum else  //Get order done
         begin
           Child.FExpert.FTrRes:= nTransactionResult;
           Child.FExpert.FExCode:= nTransactionExtendedErrorCode;
           Child.FExpert.FTCode:= nTransactionReplyCode;
           Child.FExpert.FRepMess:= lpcstrTransactionReplyMessage;
           Child.FExpert.FStopTrading:= true;
           Child.Expert.FTransBusy:= false;                  //Stop trading
           Child.FExpert.FErrorEvent.SetEvent;
         end;
       end else
       begin
         Child.FExpert.FTrRes:= nTransactionResult;
         Child.FExpert.FExCode:= nTransactionExtendedErrorCode;
         Child.FExpert.FTCode:= nTransactionReplyCode;
         Child.FExpert.FRepMess:= lpcstrTransactionReplyMessage;
         Child.FExpert.FStopTrading:= true;
         Child.Expert.FTransBusy:= false;                    //Stop trading
         Child.FExpert.FErrorEvent.SetEvent;
       end;
       break;
     end else
//--- Enter order ---
     if(dwTransId = Child.Expert.EnterOrder.TransId) then
     begin
       if(nTransactionResult = TRANS2QUIK_SUCCESS) then
       begin
         if(nOrderNum > 0) then
         begin
           Child.FExpert.FEnterOrder.Order:= nOrderNum;
         end;
       end else
       begin
         Child.FExpert.FEnterOrder.isBusy:= false;
         Child.FExpert.FTrRes:= nTransactionResult;
         Child.FExpert.FExCode:= nTransactionExtendedErrorCode;
         Child.FExpert.FTCode:= nTransactionReplyCode;
         Child.FExpert.FRepMess:= lpcstrTransactionReplyMessage;
         Child.FExpert.FStopTrading:= true;
         Child.Expert.FTransBusy:= false;                    //Stop trading
         Child.FExpert.FErrorEvent.SetEvent;
       end;
       break;
     end else
//--- Exit order ---
     if(dwTransId = Child.Expert.ExitOrder.TransId) then
     begin
       if(nTransactionResult = TRANS2QUIK_SUCCESS) then
       begin
         if(nOrderNum > 0) then
           Child.FExpert.FExitOrder.Order:= nOrderNum;
       end else
       begin
         Child.FExpert.FExitOrder.isBusy:= false;
         Child.FExpert.FTrRes:= nTransactionResult;
         Child.FExpert.FExCode:= nTransactionExtendedErrorCode;
         Child.FExpert.FTCode:= nTransactionReplyCode;
         Child.FExpert.FRepMess:= lpcstrTransactionReplyMessage;
         Child.FExpert.FStopTrading:= true;
         Child.Expert.FTransBusy:= false;                    //Stop trading
         Child.FExpert.FErrorEvent.SetEvent;
       end;
       break;
     end;
   end;
 end;
end;

Версия Trans2quik.dll = 1.5.1.0
Пропускная способность trans2quik.dll
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,  добрый день.

Со стороны Trans2QUIK ограничения на отправку транзакций нет.
Странно.
Но у меня, в период большой активности рынка, выставляется много заявок.
И бывает, что заявка отправляется успешно, но в терминале она не появляется и
номер ордера не присваивается. (асинхронная подача заявок)
Race condition в Trans2Quik.dll?
 
Цитата
deisik написал:
Цитата
Михаил Филимонов написал:
 
Цитата
deisik  написал:
 
Цитата
 Михаил Филимонов   написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
 
Сколько у вас транзакций в день по одному инструменту?
 5000 - 6000
250-300 тысяч
Количество заявок в день ни о чем не говорит.
Может влиять количество заявок в секунду, например.
Race condition в Trans2Quik.dll?
 
Я тоже отсылаю асинхронные ордера.
Но у меня немного другая проблема.
Бывает ордер отсылается, а в pfTransReplyCB ничего не приходит и в Квик заявка не появляется.
думается, что при большом потоке ордеров очередь в библиотеке переполняется (если она вообще есть)
Race condition в Trans2Quik.dll?
 
Цитата
deisik написал:
Цитата
Михаил Филимонов написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота

Сколько у вас транзакций в день по одному инструменту?
5000 - 6000
Сообщение об ошибке в trans2quik
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,  добрый день.

Речь идет о значении lpstrTransactionReplyMessage, верно?

Какие версии Trans2QUIK и Рабочего места QUIK используются?
Добрый вечер!
10.2.3.7 и 10.3.3.7
Пропускная способность trans2quik.dll
 
Уважаемые разработчики!

Сколько транзакций в секунду поддерживает trans2quik.dll ?
Сообщение об ошибке в trans2quik
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,  добрый день.

Какая функция возвращает эти значения?
Добрый день!
pfTransReplyCB
Race condition в Trans2Quik.dll?
 
Цитата
deisik написал:
Уже несколько раз сталкиваюсь с зависанием моего торгового бота на реальном сервере, которое с большой долей вероятности вызвано проблемами в Trans2Quik.dll

Зависание происходит в интервале от нескольких часов до нескольких суток, не зависит от активности на бирже и происходит при практически одновременной асинхронной подаче двух разных заявок по изменению их цены (перестановка заявок).

То, что проблема именно с Trans2Quik.dll подтверждается следующим:
- возврат из функции TRANS2QUIK_SEND_ASYNC_TRANSACTION происходит со статусом 0 (TRANS2QUIK_SUCCESS) в обоих случаях, т.е. без ошибок (бот успевает записать заявки в лог после возврата из функции)
- обе заявки остаются активными в терминале Quik и их потом приходится снимать вручную – запрос до биржи не доходит ни по одной из заявок
- в самом Quik также ничего не происходит

Если нужна более детальная информация (что отправляется на сервер), могу предоставить ее в личку

Прошу разобраться в этой проблеме
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK
 
Цитата
deisik написал:
Ну и теперь более конкретно

Тестовый сервер:

Сначала идет вызов колбека TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с транзакцией 443606 и заявкой 1892957001206697733, т.е. ответ на транзакцию уже получен и номер заявки сопоставлен номеру транзакции

Потом вызывается TRANS2QUIK_ORDER_STATUS_CALLBACK с транзакцией 0 и заявкой с тем же номером 1892957001206697733

Каким образом сервер не знает, что заявка 1892957001206697733 создана транзакцией 443606, если ранее вызывался TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с этой транзакцией и этой заявкой?
А что мешает проверить свой ли номер тразакции?
Формат айсберг-заявки на FORTS через trans2quik.dll
 
Цитата
Andrey Golik написал:
Здравствуйте!

Рекомендуем вам использовать "Карман транзакций" (Нажмите в рабочем  месте QUIK F7 и в поиске найдите "Карман транзакций..."). В нём вы  сможете создать нужную транзакцию с помощью графического интерфейса,  затем сохранить транзакцию в файл и использовать этот файл как пример для импорта той или иной транзакции.

1) При создании таблицы "Карман транзакций" выберите нужный класс и     транзакцию, добавьте параметры (звездочкой отмечены параметры     обязательные для заполнения).
     2) Нажмите F2 ("Положить транзакцию").
     3) Заполните параметры транзакции.
     4) В таблице "Карман транзакций" появится созданная транзакция, её     можно сохранить в tri. файл и получить пример.
Тезка ясно же пишет, что использует trans2quik.dll
Сообщение об ошибке в trans2quik
 
30.08.2023 21:32:21.053 --> Ошибка: Рє[/cut]
30.08.2023 21:32:36.092 --> Ошибка: Рє[/cut]
30.08.2023 21:32:51.136 --> Ошибка: Application error: Can't resolve host name q1.open-broker.ru
30.08.2023 21:33:28.143 --> Ошибка: Рє[/cut]

Поддержка, может быть ответите что это за каракули?
Экспорт по DDE таблицы Купить/продать
 
Цитата
Anton Belonogov написал:
Михаил Филимонов, да, верно.
Понятно, спасибо
Экспорт по DDE таблицы Купить/продать
 
Цитата
Anton Belonogov написал:
Михаил Филимонов,

...., либо активировать настройку "Пересчитывать при изменении позиций" - обновление "Клиентского портфеля" будет происходить после каждого изменения позиций.
При этом будет вывод по DDE?
Экспорт по DDE таблицы Купить/продать
 
Цитата
Anton Belonogov написал:
Михаил Филимонов, добрый день.

На периодичность расчета таблицы "Купить/Продать" влияет настройка  Основные настройки (F9) / Торговля / Клиентский портфель - Обновлять через ... секунд .
В Вашем случае расчет таблицы производится каждые 10 секунд, после расчета происходит вывод по DDE.

Чтобы данные из таблицы не выводились каждые 10 секунд, Вы можете изменить значение указанной настройки или вообще отключить ее - в этом случае обновление таблицы выполняться не будет.
Т.е при изменении записи в таблице Клиентский портфель строка не будет выводиться по DDE, если отключить обновление?
Экспорт по DDE таблицы Купить/продать
 
Совершенно не понятно зачем раз в 10 сек. выводить все строки из таблицы, да еще которые не изменяются в течении сессии???

00000 26.07.2023 03:29:03.239 --> risk
00001 26.07.2023 03:29:03.239 --> risk
00002 26.07.2023 03:29:03.239 --> risk
...............................................................
00155 26.07.2023 03:29:03.286 --> risk
00156 26.07.2023 03:29:03.286 --> risk
00157 26.07.2023 03:29:03.286 --> risk
00158 26.07.2023 03:29:03.286 --> risk

00163 26.07.2023 03:29:13.271 --> risk
00164 26.07.2023 03:29:13.273 --> risk
00165 26.07.2023 03:29:13.273 --> risk
..............................................................
00319 26.07.2023 03:29:13.306 --> risk
00320 26.07.2023 03:29:13.306 --> risk
00321 26.07.2023 03:29:13.306 --> risk
Экспорт по DDE таблицы Купить/продать
 
Добрый день, разработчики.

Почему, при экспорте таблицы  по DDE "Купить/продать" только с 4 колонками, а именно
1=Инструмент
2=Код инструмента
3=D long
4=D short
Передается огромное количество строк, ведь ничего не меняется в течении сессии?
Вывод "строчит" даже ночью. Зачем?

Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
Add risk : 26.07.2023 2:32:07
LUA и PIPE
 
Цитата
swerg написал:
Цитата
Михаил Филимонов написал:
ведь в LUA есть принудительная задержка в 1 мс.  
Занятное утверждение. На чем оно основано?
function main(  )
 sleep(1)
end
LUA и PIPE
 
Цитата
Nikolay написал:
LUA и PIPE
А, вообще, вывод по Pipe быстрее происходит, чем по DDE, ведь в LUA есть принудительная задержка в 1 мс. ?  
Страницы: 1 2 3 4 5 6 7 8 След.
Наверх