Mikhail Sukhov
|
Date: 10/25/2012
alexxys Проблема, которую встречаю и в 4.1.5, и в 4.1.4: Когда стоп-заявка (выставленная указанным ниже кодом) срабатывает, то в списке лимитных заявок появляются две заявки с одинаковым ID транзакции. Первая из этих лимитных заявок эта та, которая является связанной со стоп-заявкой. При срабатывании стоп-заявки эта лимитная заявка отменяется, и выставляется вторая лимитная заявка с таким же ID транзакции.
А можете прислать скрин таблица со стоп-заявками, где будет видны транзакции этих стоп-заявок, номера стоп-заявок, номера-производных и связанных. Связанная лимитная заявка - это что? Я в теории Квика уже не особо сильно силен.
|
|
Thanks:
|
|
|
|
|
alexxys
|
Date: 10/25/2012
Mikhail Sukhov А можете прислать скрин таблица со стоп-заявками, где будет видны транзакции этих стоп-заявок, номера стоп-заявок, номера-производных и связанных. Прикрепляю скрин. Mikhail Sukhov Связанная лимитная заявка - это что? Я в теории Квика уже не особо сильно силен.
В Квике есть тип стоп-заявки "Со связанной заявкой" (QuikStopConditionTypes.LinkedOrder). Такая стоп-заявка создаётся в паре с лимитированной (я немного неправильно её назвал лимитной) заявкой. Такая лимитированная заявка называется "Связанная заявка".
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/25/2012
alexxys В Квике есть тип стоп-заявки "Со связанной заявкой" (QuikStopConditionTypes.LinkedOrder). Такая стоп-заявка создаётся в паре с лимитированной (я немного неправильно её назвал лимитной) заявкой. Такая лимитированная заявка называется "Связанная заявка". Что она как-то привязывается к стоп-заявке это я понял из описания. Мне схема интересна работы. Кто ее создает? Почему она отменяется? Кто ее отменяет?
|
|
Thanks:
|
|
|
|
|
alexxys
|
Date: 10/25/2012
|
|
|
|
Mikhail Sukhov Кто ее создает? Почему она отменяется? Кто ее отменяет? Создает и отменяет её сам Квик (или сервер Квика). Отменяется она автоматически, потому что родительская стоп-заявка сработала. Если же сработает эта связанная лимитированная заявка, то автоматически отменится родительская стоп-заявка. Вот описание из справки: Quote:«Со связанной заявкой» – это две заявки по одному и тому же инструменту, одинаковые по направленности и объему. Первая заявка типа «Стоп-лимит», вторая – лимитированная заявка. При исполнении одной из заявок вторая снимается. Этот тип поручений также называют «O.C.O.» (one cancel other, «одна заявка отменяет другую»). НАЗНАЧЕНИЕ: Данный тип заявки предназначен для закрытия позиции. Стоп-заявка используется для фиксации убытков, а лимитированная заявка – для фиксирования прибыли. Преимуществом связанной заявки является то, что для исполнения лимитированной и стоп-заявки лимиты блокируются однократно, и при закрытии позиции в одну сторону связанная с ней заявка автоматически снимается.
Примечания: При исполнении стоп-заявки, связанная лимитированная заявка снимается полностью. Данный тип заявки действителен только до конца текущей торговой сессии. На Срочном рынке FORTS cтоп-заявка действительна также до конца текущей торговой сессии, а связанная с ней лимитированная заявка, выставленная в вечернюю сессию, остается в торговой системе FORTS и может быть исполнена на следующий торговый день. При частичном исполнении связанной заявки стоп-заявка может либо (а) сниматься полностью, либо (б) уменьшаться на величину исполненной части связанной заявки, в зависимости от выбранных условий в заявке.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/25/2012
alexxys Создает и отменяет её сам Квик (или сервер Квика). Отменяется она автоматически, потому что родительская стоп-заявка сработала. Если же сработает эта связанная лимитированная заявка, то автоматически отменится родительская стоп-заявка.
Тогда не совсем понятно, причем тут S#, если и связанную и производную заявки генерирует Квик, и он им проставляет свои номера.
|
|
Thanks:
|
|
|
|
|
alexxys
|
Date: 10/25/2012
Да, действительно именно в проставлении ID S# ни при чем, но S#, похоже, виноват немного в другом. Как выяснилось ID транзакции вполне может дублироваться, и причем уникальность ID имеет смысл только при импорте транзакций из .tri-файла. Разъяснения: http://www.quik.ru/forum/qpile/50909/
http://quik.ru/forum/import/79096/79126/
Т.е. получается, что Квик поступает вполне корректно, когда проставляет одинаковые ID. Но, во-первых, S# ругается на заявки с одинаковыми ID. Пример из ProcessDataError для заявок со скриншота: Code
System.ArgumentException: Order с номером '9256451101' дублируется в полученном DDE пакете.
Parameter name: item
Во-вторых: сделка, созданная по второй заявке с дублирующимся ID транзакции, не поступает в программу. Т.е., если я правильно понимаю, S# игнорирует такие сделки именно из-за дублирующегося ID в заявках.
|
|
Thanks:
|
|
|
|
|
esper
|
Date: 10/25/2012
Можете привести минимально рабочий код, который воспроизводит ошибку?
|
|
Thanks:
|
|
|
|
|
alexxys
|
Date: 10/25/2012
Пока готовил пример, вроде бы, научился бороться с пропаданием сделок, и, вроде, S# в этом был не виноват. Но нужно еще тестировать. А вот чтобы получить ArgumentException в ProcessDataError, можно запустить пример из папки Samples\Quik\Sample и создать в нем стоп-заявку со связанной заявкой. Если стоп-заявка исполнится, то в итоге получится две лимитированные заявки с одинаковым ID транзакции. Если запускать пример под отладчиком, то в окне Output должно появиться исключение ArgumentException. Единственное, что я поменял в проекте этого примера, это изменил строку Trader.StartExport(); в файле MainWindow.xaml.cs на такую строку: Code
Trader.StartExport(new List<DdeTable>(){
Trader.SecuritiesTable,
Trader.DerivativePortfoliosTable, Trader.OrdersTable,
Trader.MyTradesTable,
Trader.DerivativePositionsTable,
Trader.StopOrdersTable
});
Я использую Квик 6.3.2.2 от Финама.
|
|
Thanks:
|
|
|
|