← Назад

Как открыть позицию для нескольких контрактов?


// создаем заявку
var order = new Order
{
   Trader = _trader,
   Portfolio = _portfolio,
   Security = _instrument,
   Direction = _direction,
   Price = _instrument.GetMarketPrice(direction),
   Volume = _volume
};

_trader.RegisterOrder(order);

Для Volume = 1 всё понятно: заявка или исполнится, или не исполнится. Но как быть, когда число контрактов равно, например, 10?

Допустим, надо исполнить 10 контрактов, в стакане по лучшей цене есть только 5. Меня устраивает, чтобы просто исполнилось 10 контрактов по доступным ценам(от лучшей к худшей). Надо для каждой цены писать код выполнения заявок на 5 контрактов (если по данной цене всего 5), потом ещё на 3 (если по следующей после лучшей цене всего 3), потом на 2 (если по следующей за предудущей цене всего 2) или есть уже готовое решение?

Комментарии (15)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

esper
esper

Какие данные вы бы указали для подобной заявки в терминале? Аналогичные данные надо указывать при выставлении заявки через S#.

developer_29
developer_29
developer_29 Автор

Как указать терминалу, что надо сметать всё, что есть, пока число исполненных контрактов не дойдёт до 10?

Меня устраивает, чтобы просто исполнилось 10 контрактов по доступным ценам(от лучшей к худшей). Надо для каждой цены писать код выполнения заявок на 5 контрактов (если по данной цене всего 5), потом ещё на 3 (если по следующей после лучшей цене всего 3), потом на 2 (если по следующей за предудущей цене всего 2) или есть уже готовое решение?

esper
esper

Рынок какой?

developer_29
developer_29
developer_29 Автор

Индекс РТС

esper
esper

Если используете квик, то добавьте экспорт данных по верхнему/нижнему лимиту цены и код из первого сообщения должен работать как вы хотите.

developer_29
developer_29
developer_29 Автор

Да, я использую Quik. Не могли бы написать строчки кода, которые надо использовать? Я использую

_trader.StartExport();
esper
esper

developer_29: Да, я использую Quik. Не могли бы написать строчки кода, которые надо использовать?

Когда создаете QuikTrader добавьте```csharp _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinPrice); _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MaxPrice);

так же эти столбцы надо добавить в таблицу инструменты квика. Подробнее [здесь](http://stocksharp.com/doc/html/4261879e-9bb3-482c-9fc5-27ecb07bdf5e.htm).
MenDel
MenDel

developer_29: Для Volume = 1 всё понятно: заявка или исполнится, или не исполнится. Но как быть, когда число контрактов равно, например, 10?

Допустим, надо исполнить 10 контрактов, в стакане по лучшей цене есть только 5. Меня устраивает, чтобы просто исполнилось 10 контрактов по доступным ценам(от лучшей к худшей). Надо для каждой цены писать код выполнения заявок на 5 контрактов (если по данной цене всего 5), потом ещё на 3 (если по следующей после лучшей цене всего 3), потом на 2 (если по следующей за предудущей цене всего 2) или есть уже готовое решение?

Решение нашли, надо купить или продать по маркету! Написать Price = _instrument.MinPrice; или Price = _instrument.MaxPrice;

developer_29
developer_29
developer_29 Автор

Спасибо за ответ, только не всё понял.

MenDel: Решение нашли, надо купить или продать по маркету! Написать Price = _instrument.MinPrice; или Price = _instrument.MaxPrice;

Price = _instrument.MinPrice; // это для продажи? Price = _instrument.MaxPrice; // а это для покупки?

А разве не выставится заявка где-то в конце стакана, чтобы свершиться при достижении рынком цены MinPrice или MaxPrice?

MenDel
MenDel

developer_29: Спасибо за ответ, только не всё понял.

MenDel: Решение нашли, надо купить или продать по маркету! Написать Price = _instrument.MinPrice; или Price = _instrument.MaxPrice;

Price = _instrument.MinPrice; // это для продажи? Price = _instrument.MaxPrice; // а это для покупки?

А разве не выставится заявка где-то в конце стакана, чтобы свершиться при достижении рынком цены MinPrice или MaxPrice?

Ты меня конечно извини, но в этом вопросе программирование по моему ни причем. Ты хоть раз торговал ваще?

Если цена в данный момент 150000, а ты отправишь заявку на покупку по 160000, то почем у тя купится?

И ваще мне кажется прежде чем спрашивать, надо попробывать, если не получается спросил.

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

Поставь Демо Quik и эксперементируй сколько влезет.

Jeta
Jeta

developer_29: ... А разве не выставится заявка где-то в конце стакана, чтобы свершиться при достижении рынком цены MinPrice или MaxPrice?

На Фортсе нет рыночных заявок, поэтому ее придется эмулировать, выставляя заявку по заранее худшей цене. В случае покупки - выставляется самый худший аск/оффер. Также полезно знать, что по правилу биржевого стакана, заявка с худшей ценой, как раз и не выставится "где-то в конце стакана", а будет последовательно собирать весь аск, от лучшего, к самому худшему, пока не наберется весь объем, заявленный в заявке.

developer_29
developer_29 Автор

Ты меня конечно извини, но в этом вопросе программирование по моему ни причем. Ты хоть раз торговал ваще? Только начинаю торговать. Программирование в вопросе не при чём. Вопрос не в программировании, а в знании методов/функций/классов/свойств/библиотек.

Если цена в данный момент 150000, а ты отправишь заявку на покупку по 160000, то почем у тя купится? Если правильно понял сей гнев, то поставив покупку по максимальной цене, закрою все контракты, что есть в Volume. И обратно: если я поставлю на продажу по минимальной цене, также смету все контракты, что указал в Volume.

Причём и в том, и в том случае сделки начнутся с самых лучших цен.

На Фортсе нет рыночных заявок, поэтому ее придется эмулировать, выставляя заявку по заранее худшей цене. В случае покупки - выставляется самый худший аск/оффер. Также полезно знать, что по правилу биржевого стакана, заявка с худшей ценой, как раз и не выставится "где-то в конце стакана", а будет последовательно собирать весь аск, от лучшего, к самому худшему, пока не наберется весь объем, заявленный в заявке. Спасибо, кажется, я теперь получил ответ на свой вопрос: просто ставишь самую плохую цену, а исполняться будет по как можно более лучшей.

MenDel
MenDel

Ты меня конечно извини, но в этом вопросе программирование по моему ни причем. Ты хоть раз торговал ваще? Только начинаю торговать. Программирование в вопросе не при чём. Вопрос не в программировании, а в знании методов/функций/классов/свойств/библиотек.

Может я не так понял вопрос, но мне показалось сей вопрос заключался не в знании методов/функций/классов/свойств/библиотек, а какую цену написать,чтоб купить/продать по рынку.

Для справки. Если после _instrument точку поставить, то там будет куча всего с понятным описанием. Советую каждую пролистать и прочитать что написано. Узнаешь много нового.

А лучше, если действительно хочешь чему то научится, не пожалей деньги и пройди курсы, потому что с такими знаниями ты не сможешь освоить S#, по себе знаю.

developer_29
developer_29 Автор

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

Для справки. Если после _instrument точку поставить, то там будет куча всего с понятным описанием. Советую каждую пролистать и прочитать что написано. Узнаешь много нового. Знаю, что надо, стараюсь читать, только вот порой понятия не имеешь, если не ознакомишься, что надо делать StartDDE и т.д..

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

Пока что это всё, что меня интересует.

MenDel
MenDel

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

Не надо тебе сейчас никакого кода, пользуйся гидрой