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


Здравствуйте,
выставляю заяки на покупку-продажи фьючерсов с помощью метода
Код
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

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

Теги:


Спасибо:




4 Ответов
Геннадий Ванин (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