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

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


Здравствуйте,
выставляю заяки на покупку-продажи фьючерсов с помощью метода
Code
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#, например, как:
Code
BuySell(_sec.MaxPrice-1.0M, OrderDirections.Buy, 1);

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

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

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

то заявка не выставляется, при всех тех же одинаковых условиях, причём нет никаких предупреждений-сообщений со стороны Stock#, а в КВМК выдаётся предупреждение:
Quote:
"DDE сервер 'STOCKSHARP'. Документ 'позиции по дериватвам[]'. Таблица 'Позиции по дертвативам'. Произошла ошибка: Ошибка при передаче таблицы, вывод приостановлен. Неверные параметры"


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

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

Tags:


Thanks:


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

Avatar
Date: 11/8/2012
Reply



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

Code
 
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,
то заявк не выставляется...
И, главное - в Ы№ никаких предупреждений или ошибок
Thanks:

Moadip

Avatar
Date: 11/8/2012
Reply


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

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


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

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

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

Price = _sec.MaxPrice - _sec.MinStepSize;

Тогда при смене инструмента не придется менять отступ.
Thanks: Геннадий Ванин (Gennady Vanin)

esper

Avatar
Date: 11/8/2012
Reply


Trader.ProcessDataError и Trader.OrdersRegisterFailed что-нибудь выдают?
Thanks: Геннадий Ванин (Gennady Vanin)

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

Avatar
Date: 11/9/2012
Reply


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


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


SIZ2, RIZ2



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

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

Ой, это очень хитро, спасибо.

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy