Выставляю маркет ордер следующим образом
public void BuyMarket(Security security, int volume)
{
var order = new Order
{
Security = security,
Type = OrderTypes.Market,
Volume = volume,
Direction = OrderDirections.Buy
};
NewOrder(order);
}
private void NewOrder(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
order.Account = Config.GetInstance().QuikAccount;
_quikTrader.RegisterOrder(order);
}
В результате получаю ошибку о недопустимой цене - 0. Но ведь я и не хочу устанавливать цену. Это же маркет ордер. Как правильно сделать?
Kommentare (6)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Если быть точным то ошибка такая:
не была зарегистрирована. Причина '[FORTS] Цена сделки вне лимита'.
Заявка по транзакции 'ACCOUNT=SPBFUT00265; CLIENT_CODE=XXX; TYPE=M; TRANS_ID=1; CLASSCODE=SPBFUT; SECCODE=RIH0; ACTION=NEW_ORDER; OPERATION=B; QUANTITY=1; PRICE=0;' не была зарегистрирована. Причина '[FORTS] Цена сделки вне лимита'. Parameter name: transactionTxt
Order.Type = OrderTypes.Market. Но РТС, насколько я помню, не поддерживает в класическом представлении тиы заявки Рыночная. Для этой биржи нужно указывать наихуд цену, и заявка будет удовлетворяться до этой наихуд цены. Затем она снимется.
Забыл добавить, что именно для таких случаев я и реализовал котирование. В документации описан процесс работы с этим алгоритмом.
Спасибо. Действительно при указании цены все проходит нормально. Т.е нужно указывать худшую цену чтобы стопроцентно купить или продать по маркету?
Получается что так. Это биржевые ограничения. Только я бы указывал не просто худшую, а наихудше допустимую. Чтобы был барьер ввиде стоп лосса.