← 返回

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


// создаем заявку
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

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

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