В последнее время с моей стратегией твориться сплошная магия... Одну магическую штуку, я обнаружил совсем недавно!
Вот пример кода:
var activeOrders = (from orders in this.Orders
where (orders.State == OrderStates.Active)
select orders).ToList();
if (activeOrders.Count == 0)
{
//что то
}
else
{
var lastOrderPrice = activeOrders.FirstOrDefault().Price;
var bestAsk = this.Security.GetMarketDepth().BestAsk;
var bestBid = this.Security.GetMarketDepth().BestBid;
//если спрэд удовлетворяет условия
if (e.SpreadPrice >= Convert.ToDecimal(this.Security.MinStepSize * Properties.Settings.Default.SignalSpreadSize))
{
//если наша заявка стоит первой на покупку или продажу
if (lastOrderPrice == bestAsk.Price || lastOrderPrice == bestBid.Price)
{
//что то делаем
}
// еще что то и т.д.
}
}
Главное то, что заявку стратегия должна выкидывать только одну (и чаще всего так и делает), а если уже была выставлена заявка, то важно знать первая она или нет? И var <mark>lastOrderPrice</mark> это определяет. Но если я стою, к примеру первый на покупку, то <mark>var bestBid</mark> почему то видит заявку, которая стоит за моей заявкой. Вот она - магия, или нет? Возможно, я просто плохо знаю и понимаю работу S#, но мне кажется, что такой код вполне должен нормально работать.
Комментарии (1)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Все решилось само собой. Просто, как оказалось, не желательно включать робота, когда QUIK активно загружает данные, при первом запуске за день.