Как мне выставить заявку с вычисляемой ценой?

Как мне выставить заявку с вычисляемой ценой?


Здравствуйте, выставляю заяки на покупку-продажи фьючерсов с помощью метода

private void BuySell(decimal price, OrderDirections orderDirection, decimal volume )
{
    var order = new Order
    {
         Trader=_trader,
         Portfolio=_portfolio,
         Security = _sec,
         Volume = volume,
         Price = price,
         Direction = orderDirection 
    };
    Trader.RegisterOrder(order);
}

Всё работает, kind of, когда я передаю цены, пришедшие в S# из КВИК, без каких-то вычислений выражений, например:

  • BuySell(_sec.MinPrice, OrderDirections.Sell, 2); или
  • BuySell(_sec.MaxPrice, OrderDirections.Buy, 3);

Но когда я пытаюсь подправить миним-ю/максимальную цену, для того чтобы гарантировать, что цена попадает в границы допустимых и в связи с округлением максимальной/минимальной возможной цены в Stock#, например, как:

BuySell(_sec.MaxPrice-1.0M, OrderDirections.Buy, 1);

или

BuySell(_sec.MinPrice+1.0M, OrderDirections.Sell, 5); 

или

BuySell(_sec.MaxPrice-1, OrderDirections.Buy, 1);

или

BuySell(_sec.MinPrice+1, OrderDirections.Sell, 5);

то заявка не выставляется, при всех тех же одинаковых условиях, причём нет никаких предупреждений-сообщений со стороны Stock#, а в КВМК выдаётся предупреждение:

"DDE сервер 'STOCKSHARP'. Документ 'позиции по дериватвам[]'. Таблица 'Позиции по дертвативам'. Произошла ошибка: Ошибка при передаче таблицы, вывод приостановлен. Неверные параметры"

Ошибка DDE сервера STOCKSHARP

Каким образом можно делать преобразования-вычисления на ценой выставляемой заявки?


Теги:


Спасибо:


Геннадий Ванин (Gennady Vanin)

Фотография
Дата: 08.11.2012
Ответить


Если пишу напрямую (или вызову без параметров) - то де самое

 
Order order = new Order
    {
         Trader=_trader,
         Portfolio=_portfolio,
         Security = _sec,
         Volume = 2,
         Price = _sec.MaxPrice,
         Direction = OrderDirection.Buy 
    };

то заявка проходит.

А если вместо Price = _sec.MaxPrice, напишу Price = _sec.MaxPrice-1, или Price = _sec.MaxPrice-1.0M, то заявк не выставляется... И, главное - в Ы№ никаких предупреждений или ошибок

Спасибо:

Moadip

Фотография
Дата: 08.11.2012
Ответить


Какой инструмент используется?

напишу Price = _sec.MaxPrice-1, или Price = _sec.MaxPrice-1.0M,

Вы уверены что шаг цены инструмента кратен 1?

Допустим для RIZ2 сейчас верхняя планка равна 147550. Получается вы пытаетесь отправить заявку с ценой 147549, хотя у ри шаг цены 10п.

Правильней писать так:


Price = _sec.MaxPrice - _sec.MinStepSize;

Тогда при смене инструмента не придется менять отступ.

Спасибо: Геннадий Ванин (Gennady Vanin)

esper

Фотография
Дата: 08.11.2012
Ответить


Trader.ProcessDataError и Trader.OrdersRegisterFailed что-нибудь выдают?

Спасибо: Геннадий Ванин (Gennady Vanin)

Геннадий Ванин (Gennady Vanin)

Фотография
Дата: 09.11.2012
Ответить


Moadip: Какой инструмент используется?

Геннадий Ванин (Gennady Vanin): Здравствуйте, выставляю заяки на покупку-продажи фьючерсов с помощью метода

SIZ2, RIZ2

Moadip: Вы уверены что шаг цены инструмента кратен 1?

Допустим для RIZ2 сейчас верхняя планка равна 147550. Получается вы пытаетесь отправить заявку с ценой 147549, хотя у ри шаг цены 10п. Ой, это очень хитро, спасибо.

Тем более, я не понимаю - зачем нужно проверять на кратность, если я, например, выставляю на покупку по 141, 200., а сделка, всё равно совершается по рыночной цене 139,930. Это защита от новичков?

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy